/*
 * Copyright (c) 2017 MediaTek Inc.
 * Author: John Crispin <john@phrozen.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/dts-v1/;
#include "mt7623n-rfb.dtsi"

/ {
	model = "MediaTek MT7623N NAND reference board";
	compatible = "mediatek,mt7623n-rfb-nand", "mediatek,mt7623";
};

&bch {
	status = "okay";
};

&nandc {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&nand_pins_default>;

	nand@0 {
		reg = <0>;
		spare_per_sector = <64>;
		nand-ecc-mode = "hw";
		nand-ecc-strength = <12>;
		nand-ecc-step-size = <1024>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "preloader";
				reg = <0x0 0x40000>;
			};

			partition@40000 {
				label = "uboot";
				reg = <0x40000 0x80000>;
			};

			partition@C0000 {
				label = "uboot-env";
				reg = <0xC0000 0x40000>;
			};

			partition@140000 {
				label = "bootimg";
				reg = <0x140000 0x2000000>;
			};

			partition@2140000 {
				label = "recovery";
				reg = <0x2140000 0x2000000>;
			};

			partition@4140000 {
				label = "rootfs";
				reg = <0x4140000 0x1000000>;
			};

			partition@5140000 {
				label = "usrdata";
				reg = <0x5140000 0x1000000>;
			};
		};
	};
};

&pio {
	nand_pins_default: nanddefault {
		pins_ale {
			pinmux = <MT7623_PIN_116_MSDC0_CMD_FUNC_NALE>;
			drive-strength = <MTK_DRIVE_8mA>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};

		pins_dat {
			pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_NLD7>,
				 <MT7623_PIN_112_MSDC0_DAT6_FUNC_NLD6>,
				 <MT7623_PIN_114_MSDC0_DAT4_FUNC_NLD4>,
				 <MT7623_PIN_118_MSDC0_DAT3_FUNC_NLD3>,
				 <MT7623_PIN_121_MSDC0_DAT0_FUNC_NLD0>,
				 <MT7623_PIN_120_MSDC0_DAT1_FUNC_NLD1>,
				 <MT7623_PIN_113_MSDC0_DAT5_FUNC_NLD5>,
				 <MT7623_PIN_115_MSDC0_RSTB_FUNC_NLD8>,
				 <MT7623_PIN_119_MSDC0_DAT2_FUNC_NLD2>;
			input-enable;
			drive-strength = <MTK_DRIVE_8mA>;
			bias-pull-up;
		};

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