xref: /linux/Documentation/devicetree/bindings/mtd/vf610-nfc.txt (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
18a799590SStefan AgnerFreescale's NAND flash controller (NFC)
28a799590SStefan Agner
38a799590SStefan AgnerThis variant of the Freescale NAND flash controller (NFC) can be found on
48a799590SStefan AgnerVybrid (vf610), MPC5125, MCF54418 and Kinetis K70.
58a799590SStefan Agner
68a799590SStefan AgnerRequired properties:
78a799590SStefan Agner- compatible: Should be set to "fsl,vf610-nfc".
88a799590SStefan Agner- reg: address range of the NFC.
98a799590SStefan Agner- interrupts: interrupt of the NFC.
108a799590SStefan Agner- #address-cells: shall be set to 1. Encode the nand CS.
118a799590SStefan Agner- #size-cells : shall be set to 0.
128a799590SStefan Agner- assigned-clocks: main clock from the SoC, for Vybrid <&clks VF610_CLK_NFC>;
138a799590SStefan Agner- assigned-clock-rates: The NAND bus timing is derived from this clock
148a799590SStefan Agner    rate and should not exceed maximum timing for any NAND memory chip
158a799590SStefan Agner    in a board stuffing. Typical NAND memory timings derived from this
168a799590SStefan Agner    clock are found in the SoC hardware reference manual. Furthermore,
178a799590SStefan Agner    there might be restrictions on maximum rates when using hardware ECC.
188a799590SStefan Agner
198a799590SStefan Agner- #address-cells, #size-cells : Must be present if the device has sub-nodes
208a799590SStefan Agner  representing partitions.
218a799590SStefan Agner
228a799590SStefan AgnerRequired children nodes:
238a799590SStefan AgnerChildren nodes represent the available nand chips. Currently the driver can
248a799590SStefan Agneronly handle one NAND chip.
258a799590SStefan Agner
268a799590SStefan AgnerRequired properties:
278a799590SStefan Agner- compatible: Should be set to "fsl,vf610-nfc-cs".
28*a5f2246fSKamal Dasu- nand-bus-width: see nand-controller.yaml
29*a5f2246fSKamal Dasu- nand-ecc-mode: see nand-controller.yaml
308a799590SStefan Agner
318a799590SStefan AgnerRequired properties for hardware ECC:
32*a5f2246fSKamal Dasu- nand-ecc-strength: supported strengths are 24 and 32 bit (see nand-controller.yaml)
338a799590SStefan Agner- nand-ecc-step-size: step size equals page size, currently only 2k pages are
348a799590SStefan Agner    supported
35*a5f2246fSKamal Dasu- nand-on-flash-bbt: see nand-controller.yaml
368a799590SStefan Agner
378a799590SStefan AgnerExample:
388a799590SStefan Agner
398a799590SStefan Agner	nfc: nand@400e0000 {
408a799590SStefan Agner		compatible = "fsl,vf610-nfc";
418a799590SStefan Agner		#address-cells = <1>;
428a799590SStefan Agner		#size-cells = <0>;
438a799590SStefan Agner		reg = <0x400e0000 0x4000>;
448a799590SStefan Agner		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
458a799590SStefan Agner		clocks = <&clks VF610_CLK_NFC>;
468a799590SStefan Agner		clock-names = "nfc";
478a799590SStefan Agner		assigned-clocks = <&clks VF610_CLK_NFC>;
488a799590SStefan Agner		assigned-clock-rates = <33000000>;
498a799590SStefan Agner
508a799590SStefan Agner		nand@0 {
518a799590SStefan Agner			compatible = "fsl,vf610-nfc-nandcs";
528a799590SStefan Agner			reg = <0>;
538a799590SStefan Agner			nand-bus-width = <8>;
548a799590SStefan Agner			nand-ecc-mode = "hw";
558a799590SStefan Agner			nand-ecc-strength = <32>;
568a799590SStefan Agner			nand-ecc-step-size = <2048>;
578a799590SStefan Agner			nand-on-flash-bbt;
588a799590SStefan Agner		};
598a799590SStefan Agner	};
60