/*
 * Copyright 2011 Freescale Semiconductor, Inc.
 * Copyright 2011 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
 */

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

/ {
	model = "Freescale i.MX53 Quick Start Board";
	compatible = "fsl,imx53-qsb", "fsl,imx53";

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

	soc {
		aips@50000000 { /* AIPS1 */
			spba@50000000 {
				esdhc@50004000 { /* ESDHC1 */
					pinctrl-names = "default";
					pinctrl-0 = <&pinctrl_esdhc1_1>;
					cd-gpios = <&gpio3 13 0>;
					status = "okay";
				};

				ssi2: ssi@50014000 {
					fsl,mode = "i2s-slave";
					status = "okay";
				};

				esdhc@50020000 { /* ESDHC3 */
					pinctrl-names = "default";
					pinctrl-0 = <&pinctrl_esdhc3_1>;
					cd-gpios = <&gpio3 11 0>;
					wp-gpios = <&gpio3 12 0>;
					status = "okay";
				};
			};

			iomuxc@53fa8000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_hog>;

				hog {
					pinctrl_hog: hoggrp {
						fsl,pins = <
							1071 0x80000000	/* MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK */
							1141 0x80000000	/* MX53_PAD_GPIO_8__GPIO1_8 */
							982  0x80000000	/* MX53_PAD_PATA_DATA14__GPIO2_14 */
							989  0x80000000	/* MX53_PAD_PATA_DATA15__GPIO2_15 */
							693  0x80000000	/* MX53_PAD_EIM_DA11__GPIO3_11 */
							697  0x80000000	/* MX53_PAD_EIM_DA12__GPIO3_12 */
							701  0x80000000	/* MX53_PAD_EIM_DA13__GPIO3_13 */
							868  0x80000000	/* MX53_PAD_PATA_DA_0__GPIO7_6 */
							1149 0x80000000 /* MX53_PAD_GPIO_16__GPIO7_11 */
						>;
					};

					led_pin_gpio7_7: led_gpio7_7@0 {
						fsl,pins = <
							873  0x80000000	/* MX53_PAD_PATA_DA_1__GPIO7_7 */
						>;
					};
				};

			};

			uart1: serial@53fbc000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_uart1_1>;
				status = "okay";
			};
		};

		aips@60000000 {	/* AIPS2 */
			i2c@63fc4000 { /* I2C2 */
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_i2c2_1>;
				status = "okay";

				sgtl5000: codec@0a {
					compatible = "fsl,sgtl5000";
					reg = <0x0a>;
					VDDA-supply = <&reg_3p2v>;
					VDDIO-supply = <&reg_3p2v>;
				};
			};

			i2c@63fc8000 { /* I2C1 */
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_i2c1_1>;
				status = "okay";

				accelerometer: mma8450@1c {
					compatible = "fsl,mma8450";
					reg = <0x1c>;
				};

				pmic: dialog@48 {
					compatible = "dlg,da9053-aa", "dlg,da9052";
					reg = <0x48>;
					interrupt-parent = <&gpio7>;
					interrupts = <11 0x8>; /* low-level active IRQ at GPIO7_11 */

					regulators {
						buck1_reg: buck1 {
							regulator-min-microvolt = <500000>;
							regulator-max-microvolt = <2075000>;
							regulator-always-on;
						};

						buck2_reg: buck2 {
							regulator-min-microvolt = <500000>;
							regulator-max-microvolt = <2075000>;
							regulator-always-on;
						};

						buck3_reg: buck3 {
							regulator-min-microvolt = <925000>;
					                regulator-max-microvolt = <2500000>;
							regulator-always-on;
						};

						buck4_reg: buck4 {
							regulator-min-microvolt = <925000>;
					                regulator-max-microvolt = <2500000>;
							regulator-always-on;
						};

						ldo1_reg: ldo1 {
							regulator-min-microvolt = <600000>;
							regulator-max-microvolt = <1800000>;
							regulator-boot-on;
							regulator-always-on;
						};

						ldo2_reg: ldo2 {
							regulator-min-microvolt = <600000>;
							regulator-max-microvolt = <1800000>;
							regulator-always-on;
						};

						ldo3_reg: ldo3 {
							regulator-min-microvolt = <600000>;
					                regulator-max-microvolt = <1800000>;
							regulator-always-on;
						};

						ldo4_reg: ldo4 {
							regulator-min-microvolt = <1725000>;
					                regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						ldo5_reg: ldo5 {
							regulator-min-microvolt = <1725000>;
					                regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						ldo6_reg: ldo6 {
							regulator-min-microvolt = <1200000>;
					                regulator-max-microvolt = <3600000>;
							regulator-always-on;
						};

						ldo7_reg: ldo7 {
							regulator-min-microvolt = <1200000>;
					                regulator-max-microvolt = <3600000>;
							regulator-always-on;
						};

						ldo8_reg: ldo8 {
							regulator-min-microvolt = <1200000>;
					                regulator-max-microvolt = <3600000>;
							regulator-always-on;
						};

						ldo9_reg: ldo9 {
							regulator-min-microvolt = <1200000>;
					                regulator-max-microvolt = <3600000>;
							regulator-always-on;
						};

						ldo10_reg: ldo10 {
							regulator-min-microvolt = <1250000>;
					                regulator-max-microvolt = <3650000>;
							regulator-always-on;
						};
					};
				};
			};

			audmux@63fd0000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_audmux_1>;
				status = "okay";
			};

			ethernet@63fec000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_fec_1>;
				phy-mode = "rmii";
				phy-reset-gpios = <&gpio7 6 0>;
				status = "okay";
			};
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		power {
			label = "Power Button";
			gpios = <&gpio1 8 0>;
			linux,code = <116>; /* KEY_POWER */
			gpio-key,wakeup;
		};

		volume-up {
			label = "Volume Up";
			gpios = <&gpio2 14 0>;
			linux,code = <115>; /* KEY_VOLUMEUP */
		};

		volume-down {
			label = "Volume Down";
			gpios = <&gpio2 15 0>;
			linux,code = <114>; /* KEY_VOLUMEDOWN */
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pin_gpio7_7>;

		user {
			label = "Heartbeat";
			gpios = <&gpio7 7 0>;
			linux,default-trigger = "heartbeat";
		};
	};

	regulators {
		compatible = "simple-bus";

		reg_3p2v: 3p2v {
			compatible = "regulator-fixed";
			regulator-name = "3P2V";
			regulator-min-microvolt = <3200000>;
			regulator-max-microvolt = <3200000>;
			regulator-always-on;
		};
	};

	sound {
		compatible = "fsl,imx53-qsb-sgtl5000",
			     "fsl,imx-audio-sgtl5000";
		model = "imx53-qsb-sgtl5000";
		ssi-controller = <&ssi2>;
		audio-codec = <&sgtl5000>;
		audio-routing =
			"MIC_IN", "Mic Jack",
			"Mic Jack", "Mic Bias",
			"Headphone Jack", "HP_OUT";
		mux-int-port = <2>;
		mux-ext-port = <5>;
	};
};
