/*
 * 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
 */

/*
 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
 * need to include the CFA-10036 DTS.
 */
#include "imx28-cfa10036.dts"

/ {
	model = "Crystalfontz CFA-10049 Board";
	compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				usb_pins_cfa10049: usb-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_D07__GPIO_0_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				i2cmux_pins_cfa10049: i2cmux-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D22__GPIO_1_22
						MX28_PAD_LCD_D23__GPIO_1_23
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				mac0_pins_cfa10049: mac0-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS2__GPIO_2_21
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				pca_pins_cfa10049: pca-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS0__GPIO_2_19
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				rotary_pins_cfa10049: rotary-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_I2C0_SCL__GPIO_3_24
						MX28_PAD_I2C0_SDA__GPIO_3_25
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SAIF1_SDATA0__GPIO_3_26
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				spi2_pins_cfa10049: spi2-cfa10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SCK__GPIO_2_16
						MX28_PAD_SSP2_MOSI__GPIO_2_17
						MX28_PAD_SSP2_MISO__GPIO_2_18
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				spi3_pins_cfa10049: spi3-cfa10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_RDN__GPIO_0_24
						MX28_PAD_GPMI_RESETN__GPIO_0_28
						MX28_PAD_GPMI_CE1N__GPIO_0_17
						MX28_PAD_GPMI_ALE__GPIO_0_26
						MX28_PAD_GPMI_CLE__GPIO_0_27
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D00__LCD_D0
						MX28_PAD_LCD_D01__LCD_D1
						MX28_PAD_LCD_D02__LCD_D2
						MX28_PAD_LCD_D03__LCD_D3
						MX28_PAD_LCD_D04__LCD_D4
						MX28_PAD_LCD_D05__LCD_D5
						MX28_PAD_LCD_D06__LCD_D6
						MX28_PAD_LCD_D07__LCD_D7
						MX28_PAD_LCD_D08__LCD_D8
						MX28_PAD_LCD_D09__LCD_D9
						MX28_PAD_LCD_D10__LCD_D10
						MX28_PAD_LCD_D11__LCD_D11
						MX28_PAD_LCD_D12__LCD_D12
						MX28_PAD_LCD_D13__LCD_D13
						MX28_PAD_LCD_D14__LCD_D14
						MX28_PAD_LCD_D15__LCD_D15
						MX28_PAD_LCD_D16__LCD_D16
						MX28_PAD_LCD_D17__LCD_D17
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10049: lcdif-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RESET__GPIO_3_30
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				w1_gpio_pins: w1-gpio@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D21__GPIO_1_21
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_18bit_pins_cfa10049
					     &lcdif_pins_cfa10049
					     &lcdif_pins_cfa10049_pullup>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <18>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <9216000>;
							hactive = <320>;
							vactive = <480>;
							hback-porch = <2>;
							hfront-porch = <2>;
							vback-porch = <2>;
							vfront-porch = <2>;
							hsync-len = <15>;
							vsync-len = <15>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

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

			i2c1: i2c@8005a000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c1_pins_a>;
				status = "okay";
			};

			i2cmux {
				compatible = "i2c-mux-gpio";
				#address-cells = <1>;
				#size-cells = <0>;
				pinctrl-names = "default";
				pinctrl-0 = <&i2cmux_pins_cfa10049>;
				mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
				i2c-parent = <&i2c1>;

				i2c@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;

					adc0: nau7802@2a {
						compatible = "nuvoton,nau7802";
						reg = <0x2a>;
						nuvoton,vldo = <3000>;
					};
				};

				i2c@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;

					adc1: nau7802@2a {
						compatible = "nuvoton,nau7802";
						reg = <0x2a>;
						nuvoton,vldo = <3000>;
					};
				};

				i2c@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;

					adc2: nau7802@2a {
						compatible = "nuvoton,nau7802";
						reg = <0x2a>;
						nuvoton,vldo = <3000>;
					};
				};

				i2c@3 {
					reg = <3>;
					#address-cells = <1>;
					#size-cells = <0>;

					pca9555: pca9555@20 {
						compatible = "nxp,pca9555";
						pinctrl-names = "default";
						pinctrl-0 = <&pca_pins_cfa10049>;
						interrupt-parent = <&gpio2>;
						interrupts = <19 0x2>;
						gpio-controller;
						#gpio-cells = <2>;
						interrupt-controller;
						#interrupt-cells = <2>;
						reg = <0x20>;
					};
				};
			};

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};

			lradc@80050000 {
				status = "okay";
				fsl,lradc-touchscreen-wires = <4>;
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-0 = <&usb1_pins_a>;
			pinctrl-names = "default";
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb1_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb_pins_cfa10049>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio0 7 1>;
		};
	};

	ahb@80080000 {
		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a
				&mac0_pins_cfa10049>;
			phy-reset-gpios = <&gpio2 21 0>;
			phy-reset-duration = <100>;
			status = "okay";
		};
	};

	spi2 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi2_pins_cfa10049>;
		status = "okay";
		gpio-sck = <&gpio2 16 0>;
		gpio-mosi = <&gpio2 17 0>;
		gpio-miso = <&gpio2 18 0>;
		cs-gpios = <&gpio3 5 0>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		hx8357: hx8357@0 {
			compatible = "himax,hx8357b", "himax,hx8357";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			gpios-reset = <&gpio3 30 0>;
			im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>;
		};
	};

	spi3 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi3_pins_cfa10049>;
		status = "okay";
		gpio-sck = <&gpio0 24 0>;
		gpio-mosi = <&gpio0 28 0>;
		cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>;
		num-chipselects = <3>;
		#address-cells = <1>;
		#size-cells = <0>;

		gpio5: gpio5@0 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <0>;
			registers-number = <2>;
			spi-max-frequency = <100000>;
		};

		gpio6: gpio6@1 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <1>;
			registers-number = <4>;
			spi-max-frequency = <100000>;
		};

		dac0: dh2228@2 {
			compatible = "rohm,dh2228fv";
			reg = <2>;
			spi-max-frequency = <100000>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&rotary_btn_pins_cfa10049>;
		#address-cells = <1>;
		#size-cells = <0>;

		rotary_button {
			label = "rotary_button";
			gpios = <&gpio3 26 1>;
			debounce-interval = <10>;
			linux,code = <28>;
		};
	};

	rotary {
		compatible = "rotary-encoder";
		pinctrl-names = "default";
		pinctrl-0 = <&rotary_pins_cfa10049>;
		gpios = <&gpio3 24 1>, <&gpio3 25 1>;
		linux,axis = <1>; /* REL_Y */
		rotary-encoder,relative-axis;
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 3 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;

	};

	onewire@0 {
		compatible = "w1-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&w1_gpio_pins>;
		status = "okay";
		gpios = <&gpio1 21 0>;
	};
};
