/*
 * Copyright (C) 2016 Savoir-Faire Linux
 * Author: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
 *
 * 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"
#include "dt-bindings/gpio/gpio.h"

/ {

	model = "Technologic Systems i.MX28 TS-4600";
	compatible = "technologic,imx28-ts4600", "fsl,imx28";

	memory@40000000 {
		reg = <0x40000000 0x10000000>;   /* 256MB */
	};

	apb@80000000 {
		apbh@80000000 {
			ssp0: ssp@80010000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc0_4bit_pins_a
					     &mmc0_sck_cfg
					     &en_sd_pwr>;
				broken-cd = <1>;
				bus-width = <4>;
				vmmc-supply = <&reg_vddio_sd0>;
				status = "okay";
			};

			pinctrl@80018000 {

				en_sd_pwr: en-sd-pwr@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_PWM3__GPIO_3_28
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

			};
		};

		apbx@80040000 {
			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm2_pins_a>;
				status = "okay";
			};

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

	reg_vddio_sd0: regulator-vddio-sd0 {
		compatible = "regulator-fixed";
		regulator-name = "vddio-sd0";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		gpio = <&gpio3 28 GPIO_ACTIVE_LOW>;
	};

};
