/*
 * DTS file for SPEAr1310 Evaluation Baord
 *
 * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
 *
 * 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 {
					st,pins = "i2c0_grp";
					st,function = "i2c0";
				};
				i2s0 {
					st,pins = "i2s0_grp";
					st,function = "i2s0";
				};
				i2s1 {
					st,pins = "i2s1_grp";
					st,function = "i2s1";
				};
				gpio {
					st,pins = "arm_gpio_grp";
					st,function = "arm_gpio";
				};
				clcd {
					st,pins = "clcd_grp" , "clcd_high_res";
					st,function = "clcd";
				};
				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";
				};
				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";
				};
				sata {
					st,pins = "sata0_grp";
					st,function = "sata";
				};
				pcie {
					st,pins = "pcie1_grp", "pcie2_grp";
					st,function = "pci_express";
				};
			};
		};

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

		miphy@eb800000 {
			status = "okay";
		};

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

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

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

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

			partition@0 {
				label = "xloader";
				reg = <0x0 0x80000>;
			};
			partition@80000 {
				label = "u-boot";
				reg = <0x80000 0x140000>;
			};
			partition@1C0000 {
				label = "environment";
				reg = <0x1C0000 0x40000>;
			};
			partition@200000 {
				label = "dtb";
				reg = <0x200000 0x40000>;
			};
			partition@240000 {
				label = "linux";
				reg = <0x240000 0xC00000>;
			};
			partition@E40000 {
				label = "rootfs";
				reg = <0xE40000 0x0>;
			};
		};

		gpio_keys {
			compatible = "gpio-keys";
			#address-cells = <1>;
			#size-cells = <0>;

			button@1 {
				label = "wakeup";
				linux,code = <0x100>;
				gpios = <&gpio0 7 0x4>;
				debounce-interval = <20>;
				gpio-key,wakeup = <1>;
			};
		};

		gmac0: eth@e2000000 {
			phy-mode = "gmii";
			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 0x50000>;
				};
				partition@60000 {
					label = "environment";
					reg = <0x60000 0x10000>;
				};
				partition@70000 {
					label = "dtb";
					reg = <0x70000 0x10000>;
				};
				partition@80000 {
					label = "linux";
					reg = <0x80000 0x310000>;
				};
				partition@390000 {
					label = "rootfs";
					reg = <0x390000 0x0>;
				};
			};
		};

		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";
			};

			gpio@d8400000 {
			       status = "okay";
			};

			i2c0: i2c@e0280000 {
			       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>;
			       suspended_rate = <2000000>;
			       status = "okay";
			};

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

			serial@e0000000 {
			       status = "okay";
				pinctrl-names = "default";
				pinctrl-0 = <>;
			};

			spi0: spi@e0100000 {
				status = "okay";
				num-cs = <3>;
				cs-gpios = <&gpio1 7 0>, <&spics 0>, <&spics 1>;

				stmpe610@0 {
					compatible = "st,stmpe610";
					reg = <0>;
					#address-cells = <1>;
					#size-cells = <0>;
					spi-max-frequency = <1000000>;
					spi-cpha;
					pl022,hierarchy = <0>;
					pl022,interface = <0>;
					pl022,slave-tx-disable;
					pl022,com-mode = <0>;
					pl022,rx-level-trig = <0>;
					pl022,tx-level-trig = <0>;
					pl022,ctrl-len = <0x7>;
					pl022,wait-state = <0>;
					pl022,duplex = <0>;
					interrupts = <6 0x4>;
					interrupt-parent = <&gpio1>;
					irq-trigger = <0x2>;

					stmpe_touchscreen {
						compatible = "st,stmpe-ts";
						ts,sample-time = <4>;
						ts,mod-12b = <1>;
						ts,ref-sel = <0>;
						ts,adc-freq = <1>;
						ts,ave-ctrl = <1>;
						ts,touch-det-delay = <2>;
						ts,settling = <2>;
						ts,fraction-z = <7>;
						ts,i-drive = <1>;
					};
				};

				m25p80@1 {
					compatible = "st,m25p80";
					reg = <1>;
					spi-max-frequency = <12000000>;
					spi-cpol;
					spi-cpha;
					pl022,hierarchy = <0>;
					pl022,interface = <0>;
					pl022,slave-tx-disable;
					pl022,com-mode = <0x2>;
					pl022,rx-level-trig = <0>;
					pl022,tx-level-trig = <0>;
					pl022,ctrl-len = <0x11>;
					pl022,wait-state = <0>;
					pl022,duplex = <0>;
				};

				spidev@2 {
					compatible = "spidev";
					reg = <2>;
					spi-max-frequency = <25000000>;
					spi-cpha;
					pl022,hierarchy = <0>;
					pl022,interface = <0>;
					pl022,slave-tx-disable;
					pl022,com-mode = <0x2>;
					pl022,rx-level-trig = <0>;
					pl022,tx-level-trig = <0>;
					pl022,ctrl-len = <0x11>;
					pl022,wait-state = <0>;
					pl022,duplex = <0>;
				};
			};

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