/*
 * 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@40000000 {
		device_type = "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 = <
						MX28_PAD_GPMI_D00__GPIO_0_0
						MX28_PAD_GPMI_D03__GPIO_0_3
						MX28_PAD_GPMI_D06__GPIO_0_6
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

			};

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

			ssp2: spi@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 = <&usb0_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";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb0_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			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>;
		};

	};
};
