/*
 * Copyright (C) 2012 Marek Vasut <marex@denx.de>
 *
 * 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/ "imx28.dtsi"

/ {
	model = "SchulerControl GmbH, SC SPS 1";
	compatible = "schulercontrol,imx28-sps1", "fsl,imx28";

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

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

				hog_pins_a: hog-gpios@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x0003 /* MX28_PAD_GPMI_D00__GPIO_0_0 */
						0x0033 /* MX28_PAD_GPMI_D03__GPIO_0_3 */
						0x0063 /* MX28_PAD_GPMI_D06__GPIO_0_6 */
					>;
					fsl,drive-strength = <0>;
					fsl,voltage = <1>;
					fsl,pull-up = <0>;
				};

			};

			ssp0: ssp@80010000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc0_4bit_pins_a>;
				bus-width = <4>;
				status = "okay";
			};

			ssp2: ssp@80014000 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,imx28-spi";
				pinctrl-names = "default";
				pinctrl-0 = <&spi2_pins_a>;
				status = "okay";

				flash: m25p80@0 {
					#address-cells = <1>;
					#size-cells = <1>;
					compatible = "everspin,mr25h256", "mr25h256";
					spi-max-frequency = <40000000>;
					reg = <0>;
				};
			};
		};

		apbx@80040000 {
			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_a>;
				status = "okay";

				rtc: rtc@51 {
					compatible = "nxp,pcf8563";
					reg = <0x51>;
				};

				eeprom: eeprom@52 {
					compatible = "atmel,24c64";
					reg = <0x52>;
					pagesize = <32>;
				};
			};

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

			usbphy0: usbphy@8007c000 {
				status = "okay";
			};

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

	ahb@80080000 {
		usb0: usb@80080000 {
			vbus-supply = <&reg_usb0_vbus>;
			pinctrl-names = "default";
			pinctrl-0 = <&usbphy0_pins_b>;
			status = "okay";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			status = "okay";
		};

		mac1: ethernet@800f4000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac1_pins_a>;
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";

		reg_usb0_vbus: usb0_vbus {
			compatible = "regulator-fixed";
			regulator-name = "usb0_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio3 9 0>;
		};
	};

	leds {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "gpio-leds";
		status = "okay";

		led@1 {
			label = "sps1-1:yellow:user";
			gpios = <&gpio0 6 0>;
			linux,default-trigger = "heartbeat";
			reg = <0>;
		};

		led@2 {
			label = "sps1-2:red:user";
			gpios = <&gpio0 3 0>;
			linux,default-trigger = "heartbeat";
			reg = <1>;
		};

		led@3 {
			label = "sps1-3:red:user";
			gpios = <&gpio0 0 0>;
			default-trigger = "heartbeat";
			reg = <2>;
		};

	};
};
