/*
 * Copyright 2012 Freescale Semiconductor, Inc.
 *
 * 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/ "imx23.dtsi"

/ {
	model = "Freescale STMP378x Development Board";
	compatible = "fsl,stmp378x-devb", "fsl,imx23";

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

	apb@80000000 {
		apbh@80000000 {
			ssp0: ssp@80010000 {
				compatible = "fsl,imx23-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>;
				bus-width = <4>;
				wp-gpios = <&gpio1 30 0>;
				vmmc-supply = <&reg_vddio_sd0>;
				status = "okay";
			};

			pinctrl@80018000 {
				pinctrl-names = "default";
				pinctrl-0 = <&hog_pins_a>;

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x11d3 /* MX23_PAD_PWM3__GPIO_1_29 */
						0x11e3 /* MX23_PAD_PWM4__GPIO_1_30 */
					>;
					fsl,drive-strength = <0>;
					fsl,voltage = <1>;
					fsl,pull-up = <0>;
				};
			};
		};

		apbx@80040000 {
			auart0: serial@8006c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart0_pins_a>;
				status = "okay";
			};

			duart: serial@80070000 {
				pinctrl-names = "default";
				pinctrl-0 = <&duart_pins_a>;
				status = "okay";
			};
		};
	};

	regulators {
		compatible = "simple-bus";

		reg_vddio_sd0: vddio-sd0 {
			compatible = "regulator-fixed";
			regulator-name = "vddio-sd0";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio1 29 0>;
		};
	};
};
