162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2023 DH electronics GmbH
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * DHCOM iMX6ULL variant:
662306a36Sopenharmony_ci * DHCM-iMX6ULL-C080-R051-F0409-SPI-E2-CAN2-SD-RTC-ADC-I-01D2
762306a36Sopenharmony_ci * DHCOR PCB number: 578-200 or newer
862306a36Sopenharmony_ci * DHCOM PCB number: 579-200 or newer
962306a36Sopenharmony_ci * DRC02 PCB number: 568-100 or newer (2nd ethernet by SoM)
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci/dts-v1/;
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include "imx6ull-dhcom-som.dtsi"
1462306a36Sopenharmony_ci#include "imx6ull-dhcom-som-cfg-sdcard.dtsi"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/ {
1762306a36Sopenharmony_ci	model = "DH electronics i.MX6ULL DHCOM on DRC02";
1862306a36Sopenharmony_ci	compatible = "dh,imx6ull-dhcom-drc02", "dh,imx6ull-dhcom-som",
1962306a36Sopenharmony_ci		     "dh,imx6ull-dhcor-som", "fsl,imx6ull";
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/*
2362306a36Sopenharmony_ci * The signals for CAN2 TX and RX are routed to the DHCOM UART1 RTS/CTS pins.
2462306a36Sopenharmony_ci * Therefore the UART RTS/CTS must be output on other DHCOM pins, see uart1
2562306a36Sopenharmony_ci * node below.
2662306a36Sopenharmony_ci */
2762306a36Sopenharmony_ci&can2 {
2862306a36Sopenharmony_ci	status = "okay";
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci&gpio1 {
3262306a36Sopenharmony_ci	gpio-line-names =
3362306a36Sopenharmony_ci		"", "", "", "",
3462306a36Sopenharmony_ci		"", "", "", "",
3562306a36Sopenharmony_ci		"", "", "", "DRC02-In2",
3662306a36Sopenharmony_ci		"", "", "", "",
3762306a36Sopenharmony_ci		"", "", "DHCOM-I", "",
3862306a36Sopenharmony_ci		"", "", "", "",
3962306a36Sopenharmony_ci		"", "", "", "",
4062306a36Sopenharmony_ci		"", "", "", "";
4162306a36Sopenharmony_ci};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci&gpio4 {
4462306a36Sopenharmony_ci	gpio-line-names =
4562306a36Sopenharmony_ci		"", "", "", "",
4662306a36Sopenharmony_ci		"", "", "", "",
4762306a36Sopenharmony_ci		"", "", "", "",
4862306a36Sopenharmony_ci		"", "", "", "",
4962306a36Sopenharmony_ci		"", "DRC02-HW0", "DRC02-HW1", "DHCOM-M",
5062306a36Sopenharmony_ci		"DRC02-HW2", "DHCOM-U", "DHCOM-T", "DHCOM-S",
5162306a36Sopenharmony_ci		"DHCOM-R", "DHCOM-Q", "DHCOM-P", "DHCOM-O",
5262306a36Sopenharmony_ci		"DHCOM-N", "", "", "";
5362306a36Sopenharmony_ci	/*
5462306a36Sopenharmony_ci	 * NOTE: On DRC02, the RS485_RX_En is controlled by a separate
5562306a36Sopenharmony_ci	 * GPIO line, however the i.MX6ULL UART driver assumes RX happens
5662306a36Sopenharmony_ci	 * during TX anyway and that it only controls drive enable DE
5762306a36Sopenharmony_ci	 * line. Hence, the RX is always enabled here.
5862306a36Sopenharmony_ci	 */
5962306a36Sopenharmony_ci	rs485-rx-en-hog {
6062306a36Sopenharmony_ci		gpio-hog;
6162306a36Sopenharmony_ci		gpios = <25 0>; /* GPIO Q */
6262306a36Sopenharmony_ci		line-name = "rs485-rx-en";
6362306a36Sopenharmony_ci		output-low;
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci&gpio5 {
6862306a36Sopenharmony_ci	gpio-line-names =
6962306a36Sopenharmony_ci		"DHCOM-A", "DHCOM-B", "DHCOM-C", "DRC02-Out2",
7062306a36Sopenharmony_ci		"DHCOM-E", "", "", "DRC02-Out1",
7162306a36Sopenharmony_ci		"DRC02-In1", "DHCOM-H", "", "",
7262306a36Sopenharmony_ci		"", "", "", "",
7362306a36Sopenharmony_ci		"", "", "", "",
7462306a36Sopenharmony_ci		"", "", "", "",
7562306a36Sopenharmony_ci		"", "", "", "",
7662306a36Sopenharmony_ci		"", "", "", "";
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci/* DHCOM I2C2 */
8062306a36Sopenharmony_ci&i2c1 {
8162306a36Sopenharmony_ci	eeprom@56 {
8262306a36Sopenharmony_ci		compatible = "atmel,24c04";
8362306a36Sopenharmony_ci		reg = <0x56>;
8462306a36Sopenharmony_ci		pagesize = <16>;
8562306a36Sopenharmony_ci	};
8662306a36Sopenharmony_ci};
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci&uart1 {
8962306a36Sopenharmony_ci	/delete-property/ uart-has-rtscts;
9062306a36Sopenharmony_ci	rts-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>; /* GPIO I */
9162306a36Sopenharmony_ci	cts-gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>; /* GPIO M */
9262306a36Sopenharmony_ci};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci/* Use UART as RS485 */
9562306a36Sopenharmony_ci&uart2 {
9662306a36Sopenharmony_ci	/delete-property/ uart-has-rtscts;
9762306a36Sopenharmony_ci	linux,rs485-enabled-at-boot-time;
9862306a36Sopenharmony_ci	rts-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* GPIO P */
9962306a36Sopenharmony_ci};
100