162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2021 DH electronics GmbH 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci/ { 762306a36Sopenharmony_ci chosen { 862306a36Sopenharmony_ci stdout-path = "serial0:115200n8"; 962306a36Sopenharmony_ci }; 1062306a36Sopenharmony_ci}; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/* 1362306a36Sopenharmony_ci * Special SoM hardware required which uses the pins from micro SD card. The 1462306a36Sopenharmony_ci * pins SD3_DAT0 and SD3_DAT1 are muxed as can2 Tx and Rx. The signals for can2 1562306a36Sopenharmony_ci * Tx and Rx are routed to the DHCOM UART1 rts/cts pins. Therefore the micro SD 1662306a36Sopenharmony_ci * card must be disabled and the uart1 rts/cts must be output on other DHCOM 1762306a36Sopenharmony_ci * pins, see uart1 and usdhc3 node below. 1862306a36Sopenharmony_ci */ 1962306a36Sopenharmony_ci&can2 { 2062306a36Sopenharmony_ci status = "okay"; 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci&gpio1 { 2462306a36Sopenharmony_ci /* 2562306a36Sopenharmony_ci * NOTE: On DRC02, the RS485_RX_En is controlled by a separate 2662306a36Sopenharmony_ci * GPIO line, however the i.MX6 UART driver assumes RX happens 2762306a36Sopenharmony_ci * during TX anyway and that it only controls drive enable DE 2862306a36Sopenharmony_ci * line. Hence, the RX is always enabled here. 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_ci rs485-rx-en-hog { 3162306a36Sopenharmony_ci gpio-hog; 3262306a36Sopenharmony_ci gpios = <18 0>; /* GPIO Q */ 3362306a36Sopenharmony_ci line-name = "rs485-rx-en"; 3462306a36Sopenharmony_ci output-low; 3562306a36Sopenharmony_ci }; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci&gpio3 { 3962306a36Sopenharmony_ci gpio-line-names = 4062306a36Sopenharmony_ci "", "", "", "", "", "", "", "", 4162306a36Sopenharmony_ci "", "", "", "", "", "", "", "", 4262306a36Sopenharmony_ci "", "", "", "", "", "", "", "", 4362306a36Sopenharmony_ci "", "", "", "DRC02-In1", "", "", "", ""; 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci&gpio4 { 4762306a36Sopenharmony_ci gpio-line-names = 4862306a36Sopenharmony_ci "", "", "", "", "", "DHCOM-E", "DRC02-In2", "DHCOM-H", 4962306a36Sopenharmony_ci "DHCOM-I", "DRC02-HW0", "", "", "", "", "", "", 5062306a36Sopenharmony_ci "", "", "", "", "DRC02-Out1", "", "", "", 5162306a36Sopenharmony_ci "", "", "", "", "", "", "", ""; 5262306a36Sopenharmony_ci}; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci&gpio6 { 5562306a36Sopenharmony_ci gpio-line-names = 5662306a36Sopenharmony_ci "", "", "", "DRC02-Out2", "", "", "SOM-HW1", "", 5762306a36Sopenharmony_ci "", "", "", "", "", "", "DRC02-HW2", "DRC02-HW1", 5862306a36Sopenharmony_ci "", "", "", "", "", "", "", "", 5962306a36Sopenharmony_ci "", "", "", "", "", "", "", ""; 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci&i2c1 { 6362306a36Sopenharmony_ci eeprom@50 { 6462306a36Sopenharmony_ci compatible = "atmel,24c04"; 6562306a36Sopenharmony_ci reg = <0x50>; 6662306a36Sopenharmony_ci pagesize = <16>; 6762306a36Sopenharmony_ci }; 6862306a36Sopenharmony_ci}; 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci&uart1 { 7162306a36Sopenharmony_ci /* 7262306a36Sopenharmony_ci * Due to the use of can2 the signals for can2 Tx and Rx are routed to 7362306a36Sopenharmony_ci * DHCOM UART1 rts/cts pins. Therefore this UART have to use DHCOM GPIOs 7462306a36Sopenharmony_ci * for rts/cts. So configure DHCOM GPIO I as rts and GPIO M as cts. 7562306a36Sopenharmony_ci */ 7662306a36Sopenharmony_ci /delete-property/ uart-has-rtscts; 7762306a36Sopenharmony_ci cts-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>; /* GPIO M */ 7862306a36Sopenharmony_ci pinctrl-0 = <&pinctrl_uart1 &pinctrl_dhcom_i &pinctrl_dhcom_m>; 7962306a36Sopenharmony_ci pinctrl-names = "default"; 8062306a36Sopenharmony_ci rts-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* GPIO I */ 8162306a36Sopenharmony_ci}; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci&uart5 { 8462306a36Sopenharmony_ci /* 8562306a36Sopenharmony_ci * On DRC02 this UART is used as RS485 interface and RS485_TX_En is 8662306a36Sopenharmony_ci * controlled by DHCOM GPIO P. So remove rts/cts pins and the property 8762306a36Sopenharmony_ci * uart-has-rtscts from this UART and add the DHCOM GPIO P pin via 8862306a36Sopenharmony_ci * rts-gpios. The RS485_RX_En is controlled by DHCOM GPIO Q, see gpio1 8962306a36Sopenharmony_ci * node above. 9062306a36Sopenharmony_ci */ 9162306a36Sopenharmony_ci /delete-property/ uart-has-rtscts; 9262306a36Sopenharmony_ci linux,rs485-enabled-at-boot-time; 9362306a36Sopenharmony_ci pinctrl-0 = <&pinctrl_uart5_core &pinctrl_dhcom_p &pinctrl_dhcom_q>; 9462306a36Sopenharmony_ci pinctrl-names = "default"; 9562306a36Sopenharmony_ci rts-gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>; /* GPIO P */ 9662306a36Sopenharmony_ci}; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci&usbh1 { 9962306a36Sopenharmony_ci disable-over-current; 10062306a36Sopenharmony_ci}; 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci&usdhc2 { /* SD card */ 10362306a36Sopenharmony_ci status = "okay"; 10462306a36Sopenharmony_ci}; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci&usdhc3 { 10762306a36Sopenharmony_ci /* 10862306a36Sopenharmony_ci * Due to the use of can2 the micro SD card on module have to be 10962306a36Sopenharmony_ci * disabled, because the pins SD3_DAT0 and SD3_DAT1 are muxed as 11062306a36Sopenharmony_ci * can2 Tx and Rx. 11162306a36Sopenharmony_ci */ 11262306a36Sopenharmony_ci status = "disabled"; 11362306a36Sopenharmony_ci}; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci&iomuxc { 11662306a36Sopenharmony_ci pinctrl-0 = < 11762306a36Sopenharmony_ci /* 11862306a36Sopenharmony_ci * The following DHCOM GPIOs are used on this board. 11962306a36Sopenharmony_ci * Therefore, they have been removed from the list below. 12062306a36Sopenharmony_ci * I: uart1 rts 12162306a36Sopenharmony_ci * M: uart1 cts 12262306a36Sopenharmony_ci * P: uart5 rs485-tx-en 12362306a36Sopenharmony_ci * Q: uart5 rs485-rx-en 12462306a36Sopenharmony_ci */ 12562306a36Sopenharmony_ci &pinctrl_hog_base 12662306a36Sopenharmony_ci &pinctrl_dhcom_a &pinctrl_dhcom_b &pinctrl_dhcom_c 12762306a36Sopenharmony_ci &pinctrl_dhcom_d &pinctrl_dhcom_e &pinctrl_dhcom_f 12862306a36Sopenharmony_ci &pinctrl_dhcom_g &pinctrl_dhcom_h 12962306a36Sopenharmony_ci &pinctrl_dhcom_j &pinctrl_dhcom_k &pinctrl_dhcom_l 13062306a36Sopenharmony_ci &pinctrl_dhcom_n &pinctrl_dhcom_o 13162306a36Sopenharmony_ci &pinctrl_dhcom_r 13262306a36Sopenharmony_ci &pinctrl_dhcom_s &pinctrl_dhcom_t &pinctrl_dhcom_u 13362306a36Sopenharmony_ci &pinctrl_dhcom_v &pinctrl_dhcom_w &pinctrl_dhcom_int 13462306a36Sopenharmony_ci >; 13562306a36Sopenharmony_ci pinctrl-names = "default"; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci pinctrl_uart5_core: uart5-core-grp { 13862306a36Sopenharmony_ci fsl,pins = < 13962306a36Sopenharmony_ci MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA 0x1b0b1 14062306a36Sopenharmony_ci MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA 0x1b0b1 14162306a36Sopenharmony_ci >; 14262306a36Sopenharmony_ci }; 14362306a36Sopenharmony_ci}; 144