/*
 *  Copyright (C) 2011 Picochip, Jamie Iles
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * 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/ "picoxcell-pc3x2.dtsi"
/ {
	model = "Picochip PC7302 (PC3X2)";
	compatible = "picochip,pc7302-pc3x2", "picochip,pc3x2";

	memory {
		device_type = "memory";
		reg = <0x0 0x08000000>;
	};

	chosen {
		linux,stdout-path = &uart0;
	};

	clocks {
		ref_clk: clock@1 {
			compatible = "fixed-clock";
			clock-outputs = "ref";
			clock-frequency = <20000000>;
		};
	};

	rwid-axi {
		ebi@50000000 {
			nand: gpio-nand@2,0 {
				compatible = "gpio-control-nand";
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <2 0x0000 0x1000>;
				bus-clock = <&pclk>, "bus";
				gpio-control-nand,io-sync-reg =
					<0x00000000 0x80220000>;

				gpios = <&banka 1 0	/* rdy */
					 &banka 2 0 	/* nce */
					 &banka 3 0 	/* ale */
					 &banka 4 0 	/* cle */
					 0		/* nwp */>;

				boot@100000 {
					label = "Boot";
					reg = <0x100000 0x80000>;
				};

				redundant-boot@200000 {
					label = "Redundant Boot";
					reg = <0x200000 0x80000>;
				};

				boot-env@300000 {
					label = "Boot Evironment";
					reg = <0x300000 0x20000>;
				};

				redundant-boot-env@320000 {
					label = "Redundant Boot Environment";
					reg = <0x300000 0x20000>;
				};

				kernel@380000 {
					label = "Kernel";
					reg = <0x380000 0x800000>;
				};

				fs@b80000 {
					label = "File System";
					reg = <0xb80000 0xf480000>;
				};
			};
		};
	};
};
