// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2017 Beckhoff Automation GmbH & Co. KG
 * based on imx53-qsb.dts
 */

/dts-v1/;
#include "imx53.dtsi"

/ {
	model = "Beckhoff CX9020 Embedded PC";
	compatible = "bhf,cx9020", "fsl,imx53";

	chosen {
		stdout-path = &uart2;
	};

	memory@70000000 {
		device_type = "memory";
		reg = <0x70000000 0x20000000>,
		      <0xb0000000 0x20000000>;
	};

	display-0 {
		#address-cells =<1>;
		#size-cells = <0>;
		compatible = "fsl,imx-parallel-display";
		interface-pix-fmt = "rgb24";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ipu_disp0>;

		port@0 {
			reg = <0>;

			display0_in: endpoint {
				remote-endpoint = <&ipu_di0_disp0>;
			};
		};

		port@1 {
			reg = <1>;

			display0_out: endpoint {
				remote-endpoint = <&tfp410_in>;
			};
		};
	};

	dvi-connector {
		compatible = "dvi-connector";
		ddc-i2c-bus = <&i2c2>;
		digital;

		port {
			dvi_connector_in: endpoint {
				remote-endpoint = <&tfp410_out>;
			};
		};
	};

	dvi-converter {
		compatible = "ti,tfp410";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				tfp410_in: endpoint {
					remote-endpoint = <&display0_out>;
				};
			};

			port@1 {
				reg = <1>;

				tfp410_out: endpoint {
					remote-endpoint = <&dvi_connector_in>;
				};
			};
		};
	};

	leds {
		compatible = "gpio-leds";

		led-pwr-r {
			gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led-pwr-g {
			gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		led-pwr-b {
			gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led-sd1-b {
			linux,default-trigger = "mmc0";
			gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
		};

		led-sd2-b {
			linux,default-trigger = "mmc1";
			gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
		};
	};

	regulator-3p2v {
		compatible = "regulator-fixed";
		regulator-name = "3P2V";
		regulator-min-microvolt = <3200000>;
		regulator-max-microvolt = <3200000>;
		regulator-always-on;
	};

	reg_usb_vbus: regulator-vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
};

&esdhc1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_esdhc1>;
	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
	bus-width = <4>;
	status = "okay";
};

&esdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_esdhc2>;
	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
	bus-width = <4>;
	status = "okay";
};

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec>;
	phy-mode = "rmii";
	phy-reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
	status = "okay";
};

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

&ipu_di0_disp0 {
	remote-endpoint = <&display0_in>;
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	fsl,dte-mode;
	status = "okay";
};

&usbh1 {
	vbus-supply = <&reg_usb_vbus>;
	phy_type = "utmi";
	status = "okay";
};

&usbotg {
	dr_mode = "peripheral";
	status = "okay";
};

&vpu {
	status = "okay";
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>;

	pinctrl_hog: hoggrp {
		fsl,pins = <
			MX53_PAD_GPIO_0__CCM_CLKO               0x1c4
			MX53_PAD_GPIO_16__I2C3_SDA              0x1c4
			MX53_PAD_EIM_D22__GPIO3_22              0x1c4
			MX53_PAD_EIM_D23__GPIO3_23              0x1e4
			MX53_PAD_EIM_D24__GPIO3_24              0x1e4
		>;
	};

	pinctrl_esdhc1: esdhc1grp {
		fsl,pins = <
			MX53_PAD_SD1_DATA0__ESDHC1_DAT0		0x1d5
			MX53_PAD_SD1_DATA1__ESDHC1_DAT1		0x1d5
			MX53_PAD_SD1_DATA2__ESDHC1_DAT2		0x1d5
			MX53_PAD_SD1_DATA3__ESDHC1_DAT3		0x1d5
			MX53_PAD_SD1_CMD__ESDHC1_CMD		0x1d5
			MX53_PAD_SD1_CLK__ESDHC1_CLK		0x1d5
			MX53_PAD_GPIO_1__ESDHC1_CD              0x1c4
			MX53_PAD_EIM_D17__GPIO3_17              0x1e4
			MX53_PAD_GPIO_3__GPIO1_3                0x1c4
		>;
	};

	pinctrl_esdhc2: esdhc2grp {
		fsl,pins = <
			MX53_PAD_SD2_DATA0__ESDHC2_DAT0		0x1d5
			MX53_PAD_SD2_DATA1__ESDHC2_DAT1		0x1d5
			MX53_PAD_SD2_DATA2__ESDHC2_DAT2		0x1d5
			MX53_PAD_SD2_DATA3__ESDHC2_DAT3		0x1d5
			MX53_PAD_SD2_CMD__ESDHC2_CMD		0x1d5
			MX53_PAD_SD2_CLK__ESDHC2_CLK		0x1d5
			MX53_PAD_GPIO_4__ESDHC2_CD              0x1e4
			MX53_PAD_EIM_D20__GPIO3_20              0x1e4
			MX53_PAD_GPIO_8__GPIO1_8                0x1c4
		>;
	};

	pinctrl_fec: fecgrp {
		fsl,pins = <
			MX53_PAD_FEC_MDC__FEC_MDC		0x4
			MX53_PAD_FEC_MDIO__FEC_MDIO		0x1fc
			MX53_PAD_FEC_REF_CLK__FEC_TX_CLK	0x180
			MX53_PAD_FEC_RX_ER__FEC_RX_ER		0x180
			MX53_PAD_FEC_CRS_DV__FEC_RX_DV		0x180
			MX53_PAD_FEC_RXD1__FEC_RDATA_1		0x180
			MX53_PAD_FEC_RXD0__FEC_RDATA_0		0x180
			MX53_PAD_FEC_TX_EN__FEC_TX_EN		0x4
			MX53_PAD_FEC_TXD1__FEC_TDATA_1		0x4
			MX53_PAD_FEC_TXD0__FEC_TDATA_0		0x4
		>;
	};

	pinctrl_i2c2: i2c2grp {
		fsl,pins = <
			MX53_PAD_KEY_ROW3__I2C2_SDA             0xc0000000
			MX53_PAD_KEY_COL3__I2C2_SCL             0xc0000000
		>;
	};

	pinctrl_ipu_disp0: ipudisp0grp {
		fsl,pins = <
			MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK	0x5
			MX53_PAD_DI0_PIN15__IPU_DI0_PIN15	0x5
			MX53_PAD_DI0_PIN2__IPU_DI0_PIN2		0x5
			MX53_PAD_DI0_PIN3__IPU_DI0_PIN3		0x5
			MX53_PAD_DI0_PIN4__IPU_DI0_PIN4		0x5
			MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0	0x5
			MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1	0x5
			MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2	0x5
			MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3	0x5
			MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4	0x5
			MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5	0x5
			MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6	0x5
			MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7	0x5
			MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8	0x5
			MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9	0x5
			MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10	0x5
			MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11	0x5
			MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12	0x5
			MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13	0x5
			MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14	0x5
			MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15	0x5
			MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16	0x5
			MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17	0x5
			MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18	0x5
			MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19	0x5
			MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20	0x5
			MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21	0x5
			MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22	0x5
			MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23	0x5
		>;
	};

	pinctrl_uart2: uart2grp {
		fsl,pins = <
			MX53_PAD_EIM_D26__UART2_RXD_MUX	0x1e4
			MX53_PAD_EIM_D27__UART2_TXD_MUX 0x1e4
			MX53_PAD_EIM_D28__UART2_RTS 0x1e4
			MX53_PAD_EIM_D29__UART2_CTS 0x1e4
		>;
	};
};
