2013-04-29 14:07:48 +02:00
ST Microelectronics Flexible Static Memory Controller (FSMC)
NAND Interface
2012-03-16 10:19:31 +01:00
Required properties:
2013-01-05 22:28:32 +01:00
- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand"
2012-03-16 10:19:31 +01:00
- reg : Address range of the mtd chip
2012-10-04 15:14:16 +02:00
- reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd"
2012-03-16 10:19:31 +01:00
Optional properties:
- bank-width : Width (in bytes) of the device. If not present, the width
defaults to 1 byte
2015-01-02 22:54:39 +09:00
- nand-skip-bbtscan: Indicates the BBT scanning should be skipped
2013-04-29 14:07:48 +02:00
- timings: array of 6 bytes for NAND timings. The meanings of these bytes
are:
byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits
are valid. Zero means one clockcycle, 15 means 16 clock
cycles.
byte 1 TAR : ALE to RE delay, 4 bits are valid. Same format as TCLR.
byte 2 THIZ : number of HCLK clock cycles during which the data bus is
kept in Hi-Z (tristate) after the start of a write access.
Only valid for write transactions. Zero means zero cycles,
255 means 255 cycles.
byte 3 THOLD : number of HCLK clock cycles to hold the address (and data
when writing) after the command deassertation. Zero means
one cycle, 255 means 256 cycles.
byte 4 TWAIT : number of HCLK clock cycles to assert the command to the
NAND flash in response to SMWAITn. Zero means 1 cycle,
255 means 256 cycles.
byte 5 TSET : number of HCLK clock cycles to assert the address before the
command is asserted. Zero means one cycle, 255 means 256
cycles.
- bank: default NAND bank to use (0-3 are valid, 0 is the default).
2015-10-19 08:40:13 +02:00
- nand-ecc-mode : see nand.txt
- nand-ecc-strength : see nand.txt
- nand-ecc-step-size : see nand.txt
Can support 1-bit HW ECC (default) or if stronger correction is required,
software-based BCH.
2012-03-16 10:19:31 +01:00
Example:
fsmc: flash@d1800000 {
compatible = "st,spear600-fsmc-nand";
#address-cells = <1>;
#size-cells = <1>;
reg = <0xd1800000 0x1000 /* FSMC Register */
2012-10-04 15:14:16 +02:00
0xd2000000 0x0010 /* NAND Base DATA */
0xd2020000 0x0010 /* NAND Base ADDR */
0xd2010000 0x0010>; /* NAND Base CMD */
reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
2012-03-16 10:19:31 +01:00
bank-width = <1>;
nand-skip-bbtscan;
2013-04-29 14:07:48 +02:00
timings = /bits/ 8 <0 0 0 2 3 0>;
bank = <1>;
2012-03-16 10:19:31 +01:00
partition@0 {
...
};
};