162306a36Sopenharmony_ciST Microelectronics Flexible Static Memory Controller (FSMC)
262306a36Sopenharmony_ciNAND Interface
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciRequired properties:
562306a36Sopenharmony_ci- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand"
662306a36Sopenharmony_ci- reg : Address range of the mtd chip
762306a36Sopenharmony_ci- reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciOptional properties:
1062306a36Sopenharmony_ci- bank-width : Width (in bytes) of the device.  If not present, the width
1162306a36Sopenharmony_ci  defaults to 1 byte
1262306a36Sopenharmony_ci- nand-skip-bbtscan: Indicates the BBT scanning should be skipped
1362306a36Sopenharmony_ci- timings: array of 6 bytes for NAND timings. The meanings of these bytes
1462306a36Sopenharmony_ci  are:
1562306a36Sopenharmony_ci  byte 0 TCLR  : CLE to RE delay in number of AHB clock cycles, only 4 bits
1662306a36Sopenharmony_ci                 are valid. Zero means one clockcycle, 15 means 16 clock
1762306a36Sopenharmony_ci                 cycles.
1862306a36Sopenharmony_ci  byte 1 TAR   : ALE to RE delay, 4 bits are valid. Same format as TCLR.
1962306a36Sopenharmony_ci  byte 2 THIZ  : number of HCLK clock cycles during which the data bus is
2062306a36Sopenharmony_ci                 kept in Hi-Z (tristate) after the start of a write access.
2162306a36Sopenharmony_ci                 Only valid for write transactions. Zero means zero cycles,
2262306a36Sopenharmony_ci                 255 means 255 cycles.
2362306a36Sopenharmony_ci  byte 3 THOLD : number of HCLK clock cycles to hold the address (and data
2462306a36Sopenharmony_ci                 when writing) after the command deassertation. Zero means
2562306a36Sopenharmony_ci                 one cycle, 255 means 256 cycles.
2662306a36Sopenharmony_ci  byte 4 TWAIT : number of HCLK clock cycles to assert the command to the
2762306a36Sopenharmony_ci                 NAND flash in response to SMWAITn. Zero means 1 cycle,
2862306a36Sopenharmony_ci                 255 means 256 cycles.
2962306a36Sopenharmony_ci  byte 5 TSET  : number of HCLK clock cycles to assert the address before the
3062306a36Sopenharmony_ci                 command is asserted. Zero means one cycle, 255 means 256
3162306a36Sopenharmony_ci                 cycles.
3262306a36Sopenharmony_ci- bank: default NAND bank to use (0-3 are valid, 0 is the default).
3362306a36Sopenharmony_ci- nand-ecc-mode      : see nand-controller.yaml
3462306a36Sopenharmony_ci- nand-ecc-strength  : see nand-controller.yaml
3562306a36Sopenharmony_ci- nand-ecc-step-size : see nand-controller.yaml
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciCan support 1-bit HW ECC (default) or if stronger correction is required,
3862306a36Sopenharmony_cisoftware-based BCH.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciExample:
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	fsmc: flash@d1800000 {
4362306a36Sopenharmony_ci		compatible = "st,spear600-fsmc-nand";
4462306a36Sopenharmony_ci		#address-cells = <1>;
4562306a36Sopenharmony_ci		#size-cells = <1>;
4662306a36Sopenharmony_ci		reg = <0xd1800000 0x1000	/* FSMC Register */
4762306a36Sopenharmony_ci		       0xd2000000 0x0010	/* NAND Base DATA */
4862306a36Sopenharmony_ci		       0xd2020000 0x0010	/* NAND Base ADDR */
4962306a36Sopenharmony_ci		       0xd2010000 0x0010>;	/* NAND Base CMD */
5062306a36Sopenharmony_ci		reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci		bank-width = <1>;
5362306a36Sopenharmony_ci		nand-skip-bbtscan;
5462306a36Sopenharmony_ci		timings = /bits/ 8 <0 0 0 2 3 0>;
5562306a36Sopenharmony_ci		bank = <1>;
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci		partition@0 {
5862306a36Sopenharmony_ci			...
5962306a36Sopenharmony_ci		};
6062306a36Sopenharmony_ci	};
61