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