/*
 * DTS file for SPEAr1310 Evaluation Baord
 *
 * Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
/include/ "spear1310.dtsi"

/ {
	model = "ST SPEAr1310 Evaluation Board";
	compatible = "st,spear1310-evb", "st,spear1310";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		reg = <0 0x40000000>;
	};

	ahb {
		pinmux@e0700000 {
			pinctrl-names = "default";
			pinctrl-0 = <&state_default>;

			state_default: pinmux {
				i2c0-pmx {
					st,pins = "i2c0_grp";
					st,function = "i2c0";
				};
				i2s1 {
					st,pins = "i2s1_grp";
					st,function = "i2s1";
				};
				gpio {
					st,pins = "arm_gpio_grp";
					st,function = "arm_gpio";
				};
				eth {
					st,pins = "gmii_grp";
					st,function = "gmii";
				};
				ssp0 {
					st,pins = "ssp0_grp";
					st,function = "ssp0";
				};
				kbd {
					st,pins = "keyboard_6x6_grp";
					st,function = "keyboard";
				};
				sdhci {
					st,pins = "sdhci_grp";
					st,function = "sdhci";
				};
				smi-pmx {
					st,pins = "smi_2_chips_grp";
					st,function = "smi";
				};
				uart0 {
					st,pins = "uart0_grp";
					st,function = "uart0";
				};
				rs485 {
					st,pins = "rs485_0_1_tdm_0_1_grp";
					st,function = "rs485_0_1_tdm_0_1";
				};
				i2c1_2 {
					st,pins = "i2c_1_2_grp";
					st,function = "i2c_1_2";
				};
				pci {
					st,pins = "pcie0_grp","pcie1_grp",
						"pcie2_grp";
					st,function = "pci";
				};
				smii {
					st,pins = "smii_0_1_2_grp";
					st,function = "smii_0_1_2";
				};
				nand {
					st,pins = "nand_8bit_grp",
						"nand_16bit_grp";
					st,function = "nand";
				};
			};
		};

		ahci@b1000000 {
			status = "okay";
		};

		cf@b2800000 {
			status = "okay";
		};

		dma@ea800000 {
			status = "okay";
		};

		dma@eb000000 {
			status = "okay";
		};

		fsmc: flash@b0000000 {
			status = "okay";
		};

		gmac0: eth@e2000000 {
			status = "okay";
		};

		sdhci@b3000000 {
			status = "okay";
		};

		smi: flash@ea000000 {
			status = "okay";
			clock-rate=<50000000>;

			flash@e6000000 {
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0xe6000000 0x800000>;
				st,smi-fast-mode;

				partition@0 {
					label = "xloader";
					reg = <0x0 0x10000>;
				};
				partition@10000 {
					label = "u-boot";
					reg = <0x10000 0x40000>;
				};
				partition@50000 {
					label = "linux";
					reg = <0x50000 0x2c0000>;
				};
				partition@310000 {
					label = "rootfs";
					reg = <0x310000 0x4f0000>;
				};
			};
		};

		spi0: spi@e0100000 {
			status = "okay";
		};

		ehci@e4800000 {
			status = "okay";
		};

		ehci@e5800000 {
			status = "okay";
		};

		ohci@e4000000 {
			status = "okay";
		};

		ohci@e5000000 {
			status = "okay";
		};

		apb {
			adc@e0080000 {
				status = "okay";
			};

			gpio0: gpio@e0600000 {
			       status = "okay";
			};

			gpio1: gpio@e0680000 {
			       status = "okay";
			};

			i2c0: i2c@e0280000 {
			       status = "okay";
			};

			i2c1: i2c@5cd00000 {
			       status = "okay";
			};

			kbd@e0300000 {
				linux,keymap = < 0x00000001
						 0x00010002
						 0x00020003
						 0x00030004
						 0x00040005
						 0x00050006
						 0x00060007
						 0x00070008
						 0x00080009
						 0x0100000a
						 0x0101000c
						 0x0102000d
						 0x0103000e
						 0x0104000f
						 0x01050010
						 0x01060011
						 0x01070012
						 0x01080013
						 0x02000014
						 0x02010015
						 0x02020016
						 0x02030017
						 0x02040018
						 0x02050019
						 0x0206001a
						 0x0207001b
						 0x0208001c
						 0x0300001d
						 0x0301001e
						 0x0302001f
						 0x03030020
						 0x03040021
						 0x03050022
						 0x03060023
						 0x03070024
						 0x03080025
						 0x04000026
						 0x04010027
						 0x04020028
						 0x04030029
						 0x0404002a
						 0x0405002b
						 0x0406002c
						 0x0407002d
						 0x0408002e
						 0x0500002f
						 0x05010030
						 0x05020031
						 0x05030032
						 0x05040033
						 0x05050034
						 0x05060035
						 0x05070036
						 0x05080037
						 0x06000038
						 0x06010039
						 0x0602003a
						 0x0603003b
						 0x0604003c
						 0x0605003d
						 0x0606003e
						 0x0607003f
						 0x06080040
						 0x07000041
						 0x07010042
						 0x07020043
						 0x07030044
						 0x07040045
						 0x07050046
						 0x07060047
						 0x07070048
						 0x07080049
						 0x0800004a
						 0x0801004b
						 0x0802004c
						 0x0803004d
						 0x0804004e
						 0x0805004f
						 0x08060050
						 0x08070051
						 0x08080052 >;
			       autorepeat;
			       st,mode = <0>;
			       status = "okay";
			};

			rtc@e0580000 {
			       status = "okay";
			};

			serial@e0000000 {
			       status = "okay";
			};

			wdt@ec800620 {
			       status = "okay";
			};
		};
	};
};
