// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
 */

#include "imx27-eukrea-cpuimx27.dtsi"

/ {
	model = "Eukrea MBIMXSD27";
	compatible = "eukrea,mbimxsd27-baseboard", "eukrea,cpuimx27", "fsl,imx27";

	display0: CMO-QVGA {
		model = "CMO-QVGA";
		native-mode = <&timing0>;
		bits-per-pixel = <16>;
		fsl,pcr = <0xfad08b80>;

		display-timings {
			timing0: 320x240 {
				clock-frequency = <6500000>;
				hactive = <320>;
				vactive = <240>;
				hback-porch = <20>;
				hsync-len = <30>;
				hfront-porch = <38>;
				vback-porch = <4>;
				vsync-len = <3>;
				vfront-porch = <15>;
			};
		};
	};

	backlight {
		compatible = "gpio-backlight";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_backlight>;
		gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
	};

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

		led1 {
			label = "system::live";
			gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};

		led2 {
			label = "system::user";
			gpios = <&gpio6 19 GPIO_ACTIVE_LOW>;
		};
	};

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

		reg_lcd: regulator@0 {
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_lcdreg>;
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "LCD";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio1 25 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};
	};
};

&cspi1 {
	pinctrl-0 = <&pinctrl_cspi1>;
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
	status = "okay";

	ads7846@0 {
		compatible = "ti,ads7846";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_touch>;
		reg = <0>;
		interrupts = <&gpio4 25 IRQ_TYPE_LEVEL_LOW>;
		spi-cpol;
		spi-max-frequency = <1500000>;
		ti,keep-vref-on;
	};
};

&fb {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_imxfb>;
	display = <&display0>;
	lcd-supply = <&reg_lcd>;
	fsl,dmacr = <0x00040060>;
	fsl,lscr1 = <0x00120300>;
	fsl,lpccr = <0x00a903ff>;
	status = "okay";
};

&i2c1 {
	codec: codec@1a {
		compatible = "ti,tlv320aic23";
		reg = <0x1a>;
	};
};

&kpp {
	linux,keymap = <
		MATRIX_KEY(0, 0, KEY_UP)
		MATRIX_KEY(0, 1, KEY_DOWN)
		MATRIX_KEY(1, 0, KEY_RIGHT)
		MATRIX_KEY(1, 1, KEY_LEFT)
	>;
	status = "okay";
};

&sdhci1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdhc1>;
	bus-width = <4>;
	status = "okay";
};

&ssi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ssi1>;
	codec-handle = <&codec>;
	status = "okay";
};

&uart1 {
	uart-has-rtscts;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	status = "okay";
};

&uart2 {
	uart-has-rtscts;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	status = "okay";
};

&uart3 {
	uart-has-rtscts;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	status = "okay";
};

&iomuxc {
	imx27-eukrea-cpuimx27-baseboard {
		pinctrl_cspi1: cspi1grp {
			fsl,pins = <
				MX27_PAD_CSPI1_MISO__CSPI1_MISO	0x0
				MX27_PAD_CSPI1_MOSI__CSPI1_MOSI	0x0
				MX27_PAD_CSPI1_SCLK__CSPI1_SCLK	0x0
				MX27_PAD_CSPI1_SS0__GPIO4_28	0x0 /* CS0 */
			>;
		};

		pinctrl_backlight: backlightgrp {
			fsl,pins = <
				MX27_PAD_PWMO__GPIO5_5		0x0
			>;
		};

		pinctrl_gpioleds: gpioledsgrp {
			fsl,pins = <
				MX27_PAD_PC_PWRON__GPIO6_16	0x0
				MX27_PAD_PC_CD2_B__GPIO6_19	0x0
			>;
		};

		pinctrl_imxfb: imxfbgrp {
			fsl,pins = <
				MX27_PAD_LD0__LD0		0x0
				MX27_PAD_LD1__LD1		0x0
				MX27_PAD_LD2__LD2		0x0
				MX27_PAD_LD3__LD3		0x0
				MX27_PAD_LD4__LD4		0x0
				MX27_PAD_LD5__LD5		0x0
				MX27_PAD_LD6__LD6		0x0
				MX27_PAD_LD7__LD7		0x0
				MX27_PAD_LD8__LD8		0x0
				MX27_PAD_LD9__LD9		0x0
				MX27_PAD_LD10__LD10		0x0
				MX27_PAD_LD11__LD11		0x0
				MX27_PAD_LD12__LD12		0x0
				MX27_PAD_LD13__LD13		0x0
				MX27_PAD_LD14__LD14		0x0
				MX27_PAD_LD15__LD15		0x0
				MX27_PAD_LD16__LD16		0x0
				MX27_PAD_LD17__LD17		0x0
				MX27_PAD_CONTRAST__CONTRAST	0x0
				MX27_PAD_OE_ACD__OE_ACD		0x0
				MX27_PAD_HSYNC__HSYNC		0x0
				MX27_PAD_VSYNC__VSYNC		0x0
			>;
		};

		pinctrl_lcdreg: lcdreggrp {
			fsl,pins = <
				MX27_PAD_CLS__GPIO1_25		0x0
			>;
		};

		pinctrl_sdhc1: sdhc1grp {
			fsl,pins = <
				MX27_PAD_SD1_CLK__SD1_CLK	0x0
				MX27_PAD_SD1_CMD__SD1_CMD	0x0
				MX27_PAD_SD1_D0__SD1_D0		0x0
				MX27_PAD_SD1_D1__SD1_D1		0x0
				MX27_PAD_SD1_D2__SD1_D2		0x0
				MX27_PAD_SD1_D3__SD1_D3		0x0
			>;
		};

		pinctrl_ssi1: ssi1grp {
			fsl,pins = <
				MX27_PAD_SSI4_CLK__SSI4_CLK	0x0
				MX27_PAD_SSI4_FS__SSI4_FS	0x0
				MX27_PAD_SSI4_RXDAT__SSI4_RXDAT	0x1
				MX27_PAD_SSI4_TXDAT__SSI4_TXDAT	0x1
			>;
		};

		pinctrl_touch: touchgrp {
			fsl,pins = <
				MX27_PAD_CSPI1_RDY__GPIO4_25	0x0 /* IRQ */
			>;
		};

		pinctrl_uart1: uart1grp {
			fsl,pins = <
				MX27_PAD_UART1_TXD__UART1_TXD	0x0
				MX27_PAD_UART1_RXD__UART1_RXD	0x0
				MX27_PAD_UART1_CTS__UART1_CTS	0x0
				MX27_PAD_UART1_RTS__UART1_RTS	0x0
			>;
		};

		pinctrl_uart2: uart2grp {
			fsl,pins = <
				MX27_PAD_UART2_TXD__UART2_TXD	0x0
				MX27_PAD_UART2_RXD__UART2_RXD	0x0
				MX27_PAD_UART2_CTS__UART2_CTS	0x0
				MX27_PAD_UART2_RTS__UART2_RTS	0x0
			>;
		};

		pinctrl_uart3: uart3grp {
			fsl,pins = <
				MX27_PAD_UART3_TXD__UART3_TXD	0x0
				MX27_PAD_UART3_RXD__UART3_RXD	0x0
				MX27_PAD_UART3_CTS__UART3_CTS	0x0
				MX27_PAD_UART3_RTS__UART3_RTS	0x0
			>;
		};
	};
};
