/*
 * Copyright 2012 Free Electrons
 *
 * 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 = "Crystalfontz CFA-10036 Board";
	compatible = "crystalfontz,cfa10036", "fsl,imx28";

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

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

				hog_pins_cfa10036: hog-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x2073 /* MX28_PAD_SSP0_D7__GPIO_2_7 */
					>;
					fsl,drive-strength = <0>;
					fsl,voltage = <1>;
					fsl,pull-up = <0>;
				};

				led_pins_cfa10036: leds-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x3043 /* MX28_PAD_AUART1_RX__GPIO_3_4 */
					>;
					fsl,drive-strength = <0>;
					fsl,voltage = <1>;
					fsl,pull-up = <0>;
				};

				usb0_otg_cfa10036: otg-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x0142 /* MX28_PAD_GPMI_READY0__USB0_ID */
					>;
					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
					&mmc0_cd_cfg &mmc0_sck_cfg>;
				bus-width = <4>;
				status = "okay";
			};
		};

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

			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_b>;
				clock-frequency = <400000>;
				status = "okay";

				ssd1306: oled@3c {
					compatible = "solomon,ssd1306fb-i2c";
					reg = <0x3c>;
					reset-gpios = <&gpio2 7 0>;
					solomon,height = <32>;
					solomon,width = <128>;
					solomon,page-offset = <0>;
				};
			};

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

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

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

		power {
			gpios = <&gpio3 4 1>;
			default-state = "on";
		};
	};
};
