MTK SoCs NAND FLASH controller (NFC) DT binding

This file documents the device tree bindings for MTK SoCs NAND controllers.
The functional split of the controller requires two drivers to operate:
the nand controller interface driver and the ECC engine driver.

The hardware description for both devices must be captured as device
tree nodes.

1) NFC NAND Controller Interface (NFI):
=======================================

The first part of NFC is NAND Controller Interface (NFI) HW.
Required NFI properties:
- compatible:			Should be one of
				"mediatek,mt2701-nfc",
				"mediatek,mt2712-nfc",
				"mediatek,mt7622-nfc".
- reg:				Base physical address and size of NFI.
- interrupts:			Interrupts of NFI.
- clocks:			NFI required clocks.
- clock-names:			NFI clocks internal name.
- ecc-engine:			Required ECC Engine node.
- #address-cells:		NAND chip index, should be 1.
- #size-cells:			Should be 0.

Example:

	nandc: nfi@1100d000 {
		compatible = "mediatek,mt2701-nfc";
		reg = <0 0x1100d000 0 0x1000>;
		interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>;
		clocks = <&pericfg CLK_PERI_NFI>,
			 <&pericfg CLK_PERI_NFI_PAD>;
		clock-names = "nfi_clk", "pad_clk";
		ecc-engine = <&bch>;
		#address-cells = <1>;
		#size-cells = <0>;
        };

Platform related properties, should be set in {platform_name}.dts:
- children nodes:	NAND chips.

Children nodes properties:
- reg:			Chip Select Signal, default 0.
			Set as reg = <0>, <1> when need 2 CS.
Optional:
- nand-on-flash-bbt:	Store BBT on NAND Flash.
- nand-ecc-mode:	the NAND ecc mode (check driver for supported modes)
- nand-ecc-step-size:	Number of data bytes covered by a single ECC step.
			valid values:
			512 and 1024 on mt2701 and mt2712.
			512 only on mt7622.
			1024 is recommended for large page NANDs.
- nand-ecc-strength:	Number of bits to correct per ECC step.
			The valid values that each controller supports:
			mt2701: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28,
				32, 36, 40, 44, 48, 52, 56, 60.
			mt2712: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28,
				32, 36, 40, 44, 48, 52, 56, 60, 68, 72, 80.
			mt7622: 4, 6, 8, 10, 12, 14, 16.
			The strength should be calculated as follows:
			E = (S - F) * 8 / B
			S = O / (P / Q)
				E :	nand-ecc-strength.
				S :	spare size per sector.
				F :	FDM size, should be in the range [1,8].
					It is used to store free oob data.
				O :	oob size.
				P :	page size.
				Q :	nand-ecc-step-size.
				B :	number of parity bits needed to correct
					1 bitflip.
					According to MTK NAND controller design,
					this number depends on max ecc step size
					that MTK NAND controller supports.
					If max ecc step size supported is 1024,
					then it should be always 14. And if max
					ecc step size is 512, then it should be
					always 13.
			If the result does not match any one of the listed
			choices above, please select the smaller valid value from
			the list.
			(otherwise the driver will do the adjustment at runtime)
- pinctrl-names:	Default NAND pin GPIO setting name.
- pinctrl-0:		GPIO setting node.

Example:
	&pio {
		nand_pins_default: nanddefault {
			pins_dat {
				pinmux = <MT2701_PIN_111_MSDC0_DAT7__FUNC_NLD7>,
					 <MT2701_PIN_112_MSDC0_DAT6__FUNC_NLD6>,
					 <MT2701_PIN_114_MSDC0_DAT4__FUNC_NLD4>,
					 <MT2701_PIN_118_MSDC0_DAT3__FUNC_NLD3>,
					 <MT2701_PIN_121_MSDC0_DAT0__FUNC_NLD0>,
					 <MT2701_PIN_120_MSDC0_DAT1__FUNC_NLD1>,
					 <MT2701_PIN_113_MSDC0_DAT5__FUNC_NLD5>,
					 <MT2701_PIN_115_MSDC0_RSTB__FUNC_NLD8>,
					 <MT2701_PIN_119_MSDC0_DAT2__FUNC_NLD2>;
				input-enable;
				drive-strength = <MTK_DRIVE_8mA>;
				bias-pull-up;
			};

			pins_we {
				pinmux = <MT2701_PIN_117_MSDC0_CLK__FUNC_NWEB>;
				drive-strength = <MTK_DRIVE_8mA>;
				bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
			};

			pins_ale {
				pinmux = <MT2701_PIN_116_MSDC0_CMD__FUNC_NALE>;
				drive-strength = <MTK_DRIVE_8mA>;
				bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
			};
		};
	};

	&nandc {
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&nand_pins_default>;
		nand@0 {
			reg = <0>;
			nand-on-flash-bbt;
			nand-ecc-mode = "hw";
			nand-ecc-strength = <24>;
			nand-ecc-step-size = <1024>;
		};
	};

NAND chip optional subnodes:
- Partitions, see Documentation/devicetree/bindings/mtd/partition.txt

Example:
	nand@0 {
		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			preloader@0 {
				label = "pl";
				read-only;
				reg = <0x00000000 0x00400000>;
			};
			android@00400000 {
				label = "android";
				reg = <0x00400000 0x12c00000>;
			};
		};
	};

2) ECC Engine:
==============

Required BCH properties:
- compatible:	Should be one of
		"mediatek,mt2701-ecc",
		"mediatek,mt2712-ecc",
		"mediatek,mt7622-ecc".
- reg:		Base physical address and size of ECC.
- interrupts:	Interrupts of ECC.
- clocks:	ECC required clocks.
- clock-names:	ECC clocks internal name.

Example:

	bch: ecc@1100e000 {
		compatible = "mediatek,mt2701-ecc";
		reg = <0 0x1100e000 0 0x1000>;
		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_LOW>;
		clocks = <&pericfg CLK_PERI_NFI_ECC>;
		clock-names = "nfiecc_clk";
	};
