// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Armadeus Systems - <support@armadeus.com>
 */

/* APF27Dev is a docking board for the APF27 SOM */
#include "imx27-apf27.dts"

/ {
	model = "Armadeus Systems APF27Dev docking/development board";
	compatible = "armadeus,imx27-apf27dev", "armadeus,imx27-apf27", "fsl,imx27";

	display: display {
		model = "Chimei-LW700AT9003";
		bits-per-pixel = <16>;  /* non-standard but required */
		fsl,pcr = <0xfae80083>;	/* non-standard but required */
		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <33000033>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <96>;
				hfront-porch = <96>;
				vback-porch = <20>;
				vfront-porch = <21>;
				hsync-len = <64>;
				vsync-len = <4>;
			};
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_keys>;

		user-key {
			label = "user";
			gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>;
			linux,code = <276>; /* BTN_EXTRA */
		};
	};

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

		led-user {
			label = "Heartbeat";
			gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

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

		reg_max5821: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "max5821-reg";
			regulator-min-microvolt = <2500000>;
			regulator-max-microvolt = <2500000>;
			regulator-always-on;
		};
	};
};

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

	adc@0 {
		compatible = "maxim,max1027";
		reg = <0>;
		interrupt-parent = <&gpio5>;
		interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_max1027>;
		spi-max-frequency = <10000000>;
	};
};

&cspi2 {
	cs-gpios = <&gpio4 21 GPIO_ACTIVE_LOW>,
		   <&gpio4 27 GPIO_ACTIVE_LOW>,
		   <&gpio2 17 GPIO_ACTIVE_LOW>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cspi2 &pinctrl_cspi2_cs>;
	status = "okay";
};

&fb {
	display = <&display>;
	fsl,dmacr = <0x00020010>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_imxfb1>;
	status = "okay";
};

&i2c1 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	rtc@68 {
		compatible = "dallas,ds1374";
		reg = <0x68>;
	};

	max5821@38 {
		compatible = "maxim,max5821";
		reg = <0x38>;
		vref-supply = <&reg_max5821>;
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";
};

&iomuxc {
	imx27-apf27dev {
		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
			>;
		};

		pinctrl_cspi1_cs: cspi1csgrp {
			fsl,pins = <MX27_PAD_CSPI1_SS0__GPIO4_28 0x0>;
		};

		pinctrl_cspi2: cspi2grp {
			fsl,pins = <
				MX27_PAD_CSPI2_MISO__CSPI2_MISO 0x0
				MX27_PAD_CSPI2_MOSI__CSPI2_MOSI 0x0
				MX27_PAD_CSPI2_SCLK__CSPI2_SCLK 0x0
			>;
		};

		pinctrl_cspi2_cs: cspi2csgrp {
			fsl,pins = <
				MX27_PAD_CSI_D5__GPIO2_17 0x0
				MX27_PAD_CSPI2_SS0__GPIO4_21 0x0
				MX27_PAD_CSPI1_SS1__GPIO4_27 0x0
			>;
		};

		pinctrl_gpio_leds: gpioledsgrp {
			fsl,pins = <MX27_PAD_PC_VS1__GPIO6_14 0x0>;
		};

		pinctrl_gpio_keys: gpiokeysgrp {
			fsl,pins = <MX27_PAD_PC_VS2__GPIO6_13 0x0>;
		};

		pinctrl_imxfb1: imxfbgrp {
			fsl,pins = <
				MX27_PAD_CLS__CLS 0x0
				MX27_PAD_CONTRAST__CONTRAST 0x0
				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_LSCLK__LSCLK 0x0
				MX27_PAD_OE_ACD__OE_ACD 0x0
				MX27_PAD_PS__PS 0x0
				MX27_PAD_REV__REV 0x0
				MX27_PAD_SPL_SPR__SPL_SPR 0x0
				MX27_PAD_HSYNC__HSYNC 0x0
				MX27_PAD_VSYNC__VSYNC 0x0
			>;
		};

		pinctrl_i2c1: i2c1grp {
			fsl,pins = <
				MX27_PAD_I2C_DATA__I2C_DATA 0x0
				MX27_PAD_I2C_CLK__I2C_CLK 0x0
			>;
		};

		pinctrl_i2c2: i2c2grp {
			fsl,pins = <
				MX27_PAD_I2C2_SDA__I2C2_SDA 0x0
				MX27_PAD_I2C2_SCL__I2C2_SCL 0x0
			>;
		};

		pinctrl_max1027: max1027 {
			 fsl,pins = <
				 MX27_PAD_UART1_CTS__GPIO5_14 0x0 /* CNVST */
				 MX27_PAD_UART1_RTS__GPIO5_15 0x0 /* EOC */
			>;
		};

		pinctrl_pwm: pwmgrp {
			fsl,pins = <
				MX27_PAD_PWMO__PWMO 0x0
			>;
		};

		pinctrl_sdhc2: sdhc2grp {
			fsl,pins = <
				MX27_PAD_SD2_CLK__SD2_CLK 0x0
				MX27_PAD_SD2_CMD__SD2_CMD 0x0
				MX27_PAD_SD2_D0__SD2_D0 0x0
				MX27_PAD_SD2_D1__SD2_D1 0x0
				MX27_PAD_SD2_D2__SD2_D2 0x0
				MX27_PAD_SD2_D3__SD2_D3 0x0
			>;
		};

		pinctrl_sdhc2_cd: sdhc2cdgrp {
			fsl,pins = <MX27_PAD_TOUT__GPIO3_14 0x0>;
		};
	};
};

&sdhci2 {
	bus-width = <4>;
	cd-gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdhc2 &pinctrl_sdhc2_cd>;
	status = "okay";
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm>;
};
