// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright 2023 DimOnOff
 */

/dts-v1/;

#include <dt-bindings/usb/pd.h>
#include "imx8mn-var-som.dtsi"

/ {
	model = "RVE gateway";
	compatible = "rve,gateway", "variscite,var-som-mx8mn", "fsl,imx8mn";

	crystal_duart_24m: crystal-duart-24m {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
	};

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

		key-enter {
			label = "enter";
			gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_ENTER>;
		};

		key-exit {
			label = "exit";
			gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_ESC>;
		};
	};

	lcd {
		compatible = "hit,hd44780";
		display-height-chars = <2>;
		display-width-chars = <20>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_lcd>;
		data-gpios = <&gpio5  1 GPIO_ACTIVE_HIGH>,
			     <&gpio1  6 GPIO_ACTIVE_HIGH>,
			     <&gpio1 14 GPIO_ACTIVE_HIGH>,
			     <&gpio4 28 GPIO_ACTIVE_HIGH>,
			     <&gpio5 24 GPIO_ACTIVE_HIGH>,
			     <&gpio5  2 GPIO_ACTIVE_HIGH>,
			     <&gpio1 12 GPIO_ACTIVE_HIGH>,
			     <&gpio5 25 GPIO_ACTIVE_HIGH>;
		enable-gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>;
		rs-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		rw-gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>;
	};

	reg_3p3v: regulator-3p3v {
		compatible = "regulator-fixed";
		regulator-name = "3P3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	/* Bourns PEC12R rotary encoder, 24 steps. */
	rotary: rotary-encoder {
		compatible = "rotary-encoder";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_rotary>;
		gpios = <&gpio1  5 GPIO_ACTIVE_LOW>, /* A */
			<&gpio3 21 GPIO_ACTIVE_LOW>; /* B */
		linux,axis = <0>; /* REL_X */
		rotary-encoder,encoding = "gray";
		rotary-encoder,relative-axis;
	};
};

&ecspi1 {
	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;

	duart1: serial@0 {
		compatible = "nxp,sc16is752";
		reg = <0>;
		spi-rx-bus-width = <1>;
		spi-tx-bus-width = <1>;
		spi-max-frequency = <4000000>;
		clocks = <&crystal_duart_24m>;
		interrupt-parent = <&gpio3>;
		interrupts = <22 IRQ_TYPE_EDGE_FALLING>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "RADIO0", "RADIO1", "RADIO2", "RADIO3",
				  "RADIO4", "RADIO_RESET", "TP12", "TP11";
		linux,rs485-enabled-at-boot-time;
		rs485-rts-active-low;
	};

	/delete-node/ touchscreen@0;
};

&ecspi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi2>;
	cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
	/delete-property/ dmas;
	/delete-property/ dma-names;
	status = "okay";

	duart2: serial@0 {
		compatible = "nxp,sc16is752";
		reg = <0>;
		spi-rx-bus-width = <1>;
		spi-tx-bus-width = <1>;
		spi-max-frequency = <4000000>;
		clocks = <&crystal_duart_24m>;
		interrupt-parent = <&gpio3>;
		interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "LED_B_USER", "LED_R_USER", "LED_G_USER",
				  "GPIO_EXT3", "GPIO_EXT2", "GPIO_EXT1",
				  "GPIO_EXT0", "TP13";
		linux,rs485-enabled-at-boot-time;
		rs485-rts-active-low;
	};
};

/* Configure PWM pins in GPIO mode: */
&gpio5 {
	gpio-line-names = "", "", "", "PWM3", "PWM2", "PWM1";
};

&gpu {
	status = "disabled";
};

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

	/* Carrier board EEPROM */
	eeprom_cb: eeprom@56 {
		compatible = "atmel,24c04";
		reg = <0x56>;
		pagesize = <16>;
		vcc-supply = <&reg_3p3v>;
	};

	lm75: sensor@48 {
		compatible = "st,stlm75";
		reg = <0x48>;
		vs-supply = <&reg_3p3v>;
	};

	mcp7940: rtc@6f {
		compatible = "microchip,mcp7940x";
		reg = <0x6f>;
	};
};

&i2c3 {
	codec@1a {
		status = "disabled";
	};
};

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

	pcf8574_1: gpio@38 {
		compatible = "nxp,pcf8574";
		reg = <0x38>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "LED_B_COMM3", "LED_R_COMM3", "LED_G_COMM3",
				  "TP14", "TP15", "LED_G_COMM4", "LED_R_COMM4",
				  "LED_B_COMM4";
	};

	pcf8574_2: gpio@39 {
		compatible = "nxp,pcf8574";
		reg = <0x39>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "LED_B_COMM2", "LED_G_COMM2", "LED_B_COMM1",
				  "LED_R_COMM2", "LED_R_COMM1", "LED_G_COMM1",
				  "TP16", "TP17";
	};
};

/* Bluetooth */
&uart2 {
	status = "disabled";
};

&usbotg1 {
	dr_mode = "host";
	disable-over-current;
	status = "okay";
};

/* SD interface on expansion connector. */
&usdhc2 {
	vmmc-supply = <&reg_3p3v>;
	cd-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
};

&iomuxc {
	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX8MN_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK	0x13
			MX8MN_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI	0x13
			MX8MN_IOMUXC_ECSPI1_MISO_ECSPI1_MISO	0x13
			MX8MN_IOMUXC_ECSPI1_SS0_GPIO5_IO9	0x13 /* SS0 */
			MX8MN_IOMUXC_SAI5_RXD1_GPIO3_IO22	0x13 /* SC16 IRQ */
		>;
	};

	pinctrl_ecspi2: ecspi2grp {
		fsl,pins = <
			MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK	0x13
			MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI	0x13
			MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO	0x13
			MX8MN_IOMUXC_ECSPI2_SS0_GPIO5_IO13	0x13 /* SS0 */
			MX8MN_IOMUXC_SAI5_RXC_GPIO3_IO20	0x13 /* SC16 IRQ */
		>;
	};

	pinctrl_gpio_keys: gpiokeysgrp {
		fsl,pins = <
			MX8MN_IOMUXC_GPIO1_IO01_GPIO1_IO1	0xc6 /* Enter */
			MX8MN_IOMUXC_SAI5_RXD2_GPIO3_IO23	0xc6 /* Exit */
		>;
	};

	pinctrl_i2c2: i2c2grp {
		fsl,pins = <
			MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL		0x400001c3
			MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA		0x400001c3
		>;
	};

	pinctrl_i2c4: i2c4grp {
		fsl,pins = <
			MX8MN_IOMUXC_I2C4_SCL_I2C4_SCL		0x400001c3
			MX8MN_IOMUXC_I2C4_SDA_I2C4_SDA		0x400001c3
		>;
	};

	pinctrl_lcd: lcdgrp {
		fsl,pins = <
			MX8MN_IOMUXC_SAI3_TXD_GPIO5_IO1		0x00000156 /* D0 */
			MX8MN_IOMUXC_GPIO1_IO06_GPIO1_IO6	0x00000156 /* D1 */
			MX8MN_IOMUXC_GPIO1_IO14_GPIO1_IO14	0x00000156 /* D2 */
			MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28	0x00000156 /* D3 */
			MX8MN_IOMUXC_UART2_RXD_GPIO5_IO24	0x00000156 /* D4 */
			MX8MN_IOMUXC_SAI3_MCLK_GPIO5_IO2	0x00000156 /* D5 */
			MX8MN_IOMUXC_GPIO1_IO12_GPIO1_IO12	0x00000156 /* D6 */
			MX8MN_IOMUXC_UART2_TXD_GPIO5_IO25	0x00000156 /* D7 */
			MX8MN_IOMUXC_UART1_TXD_GPIO5_IO23	0x00000156 /* E */
			MX8MN_IOMUXC_GPIO1_IO07_GPIO1_IO7	0x00000156 /* RS */
			MX8MN_IOMUXC_SAI2_MCLK_GPIO4_IO27	0x00000156 /* R/W */
		>;
	};

	pinctrl_rotary: rotarygrp {
		fsl,pins = <
			MX8MN_IOMUXC_GPIO1_IO05_GPIO1_IO5	0x00000156 /* A */
			MX8MN_IOMUXC_SAI5_RXD0_GPIO3_IO21	0x00000156 /* B */
		>;
	};

	/* Override Card Detect function GPIO value (GPIO1_IO10) from SOM: */
	pinctrl_usdhc2_gpio: usdhc2gpiogrp {
		fsl,pins = <
			MX8MN_IOMUXC_GPIO1_IO13_GPIO1_IO13	0x41
		>;
	};
};
