/*
 * Copyright 2012 Linaro Ltd
 *
 * 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
 */

/include/ "skeleton.dtsi"

/ {
	soc-u9500 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "stericsson,db8500";
		interrupt-parent = <&intc>;
		ranges;

		intc: interrupt-controller@a0411000 {
			compatible = "arm,cortex-a9-gic";
			#interrupt-cells = <3>;
			#address-cells = <1>;
			interrupt-controller;
			reg = <0xa0411000 0x1000>,
			      <0xa0410100 0x100>;
		};

		L2: l2-cache {
			compatible = "arm,pl310-cache";
			reg = <0xa0412000 0x1000>;
			interrupts = <0 13 4>;
			cache-unified;
			cache-level = <2>;
		};

		pmu {
			compatible = "arm,cortex-a9-pmu";
			interrupts = <0 7 0x4>;
		};

		timer@a0410600 {
			compatible = "arm,cortex-a9-twd-timer";
			reg = <0xa0410600 0x20>;
			interrupts = <1 13 0x304>;
		};

		rtc@80154000 {
			compatible = "stericsson,db8500-rtc";
			reg = <0x80154000 0x1000>;
			interrupts = <0 18 0x4>;
		};

		gpio0: gpio@8012e000 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8012e000 0x80>;
			interrupts = <0 119 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio1: gpio@8012e080 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8012e080 0x80>;
			interrupts = <0 120 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio2: gpio@8000e000 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8000e000 0x80>;
			interrupts = <0 121 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio3: gpio@8000e080 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8000e080 0x80>;
			interrupts = <0 122 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio4: gpio@8000e100 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8000e100 0x80>;
			interrupts = <0 123 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio5: gpio@8000e180 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8000e180 0x80>;
			interrupts = <0 124 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio6: gpio@8011e000 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8011e000 0x80>;
			interrupts = <0 125 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio7: gpio@8011e080 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0x8011e080 0x80>;
			interrupts = <0 126 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		gpio8: gpio@a03fe000 {
			compatible = "stericsson,db8500-gpio",
				"stmicroelectronics,nomadik-gpio";
			reg =  <0xa03fe000 0x80>;
			interrupts = <0 127 0x4>;
			supports-sleepmode;
			gpio-controller;
		};

		usb@a03e0000 {
			compatible = "stericsson,db8500-musb",
				"mentor,musb";
			reg = <0xa03e0000 0x10000>;
			interrupts = <0 23 0x4>;
		};

		dma-controller@801C0000 {
			compatible = "stericsson,db8500-dma40",
					"stericsson,dma40";
			reg = <0x801C0000 0x1000 0x40010000 0x800>;
			interrupts = <0 25 0x4>;
		};

		prcmu@80157000 {
			compatible = "stericsson,db8500-prcmu";
			reg = <0x80157000 0x1000>;
			interrupts = <46 47>;
			#address-cells = <1>;
			#size-cells = <0>;

			ab8500@5 {
				compatible = "stericsson,ab8500";
				reg = <5>; /* mailbox 5 is i2c */
				interrupts = <0 40 0x4>;
			};
		};

		i2c@80004000 {
			compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
			reg = <0x80004000 0x1000>;
			interrupts = <0 21 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@80122000 {
			compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
			reg = <0x80122000 0x1000>;
			interrupts = <0 22 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@80128000 {
			compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
			reg = <0x80128000 0x1000>;
			interrupts = <0 55 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@80110000 {
			compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
			reg = <0x80110000 0x1000>;
			interrupts = <0 12 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@8012a000 {
			compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
			reg = <0x8012a000 0x1000>;
			interrupts = <0 51 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		ssp@80002000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <80002000 0x1000>;
			interrupts = <0 14 0x4>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";

			// Add one of these for each child device
			cs-gpios = <&gpio0 31 &gpio4 14 &gpio4 16 &gpio6 22 &gpio7 0>;

		};

		uart@80120000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0x80120000 0x1000>;
			interrupts = <0 11 0x4>;
			status = "disabled";
		};
		uart@80121000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0x80121000 0x1000>;
			interrupts = <0 19 0x4>;
			status = "disabled";
		};
		uart@80007000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0x80007000 0x1000>;
			interrupts = <0 26 0x4>;
			status = "disabled";
		};

		sdi@80126000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80126000 0x1000>;
			interrupts = <0 60 0x4>;
			status = "disabled";
		};
		sdi@80118000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80118000 0x1000>;
			interrupts = <0 50 0x4>;
			status = "disabled";
		};
		sdi@80005000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80005000 0x1000>;
			interrupts = <0 41 0x4>;
			status = "disabled";
		};
		sdi@80119000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80119000 0x1000>;
			interrupts = <0 59 0x4>;
			status = "disabled";
		};
		sdi@80114000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80114000 0x1000>;
			interrupts = <0 99 0x4>;
			status = "disabled";
		};
		sdi@80008000 {
			compatible = "arm,pl18x", "arm,primecell";
			reg = <0x80114000 0x1000>;
			interrupts = <0 100 0x4>;
			status = "disabled";
		};
	};
};
