/*
 * Copyright 2012 ST-Ericsson AB
 *
 * 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/ "dbx5x0.dtsi"
/include/ "href.dtsi"
/include/ "stuib.dtsi"

/ {
	model = "ST-Ericsson HREF (pre-v60) platform with Device Tree";
	compatible = "st-ericsson,mop500", "st-ericsson,u8500";

	gpio_keys {
		button@1 {
			gpios = <&tc3589x_gpio 7 0x4>;
		};
	};

	soc-u9500 {
		prcmu@80157000 {
			ab8500@5 {
				ab8500-gpio {
					compatible = "stericsson,ab8500-gpio";
				};
			};
		};

		i2c@80004000 {
			tps61052@33 {
				compatible = "tps61052";
				reg = <0x33>;
			};
		};

		i2c@80110000 {
			bu21013_tp@0x5c {
				reset-gpio = <&tc3589x_gpio 13 0x4>;
			};
		};

		vmmci: regulator-gpio {
			gpios = <&tc3589x_gpio 18 0x4>;
			enable-gpio = <&tc3589x_gpio 17 0x4>;

			status = "okay";
		};
	};
};
