// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Free Electrons
 */

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

/ {
	model = "Crystalfontz CFA-10056 Board";
	compatible = "crystalfontz,cfa10056", "crystalfontz,cfa10037", "crystalfontz,cfa10036", "fsl,imx28";

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

		hx8369: hx8369@0 {
			compatible = "himax,hx8369a", "himax,hx8369";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			gpios-reset = <&gpio3 30 0>;
		};
	};
};

&pinctrl {
	spi2_pins_cfa10056: spi2-cfa10056@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>;
	};

	lcdif_pins_cfa10056: lcdif-10056@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_cfa10056_pullup: lcdif-10056-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>;
	};
};

&lcdif {
	pinctrl-names = "default";
	pinctrl-0 = <&lcdif_24bit_pins_a
			&lcdif_pins_cfa10056
			&lcdif_pins_cfa10056_pullup >;
	display = <&display0>;
	status = "okay";

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

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