xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx8mp-kontron-bl-osm-s.dts (revision 5f62a964e9f8abc6a05d8338273fadd154f0a206)
1*5f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*5f62a964SEmmanuel Vadot/*
3*5f62a964SEmmanuel Vadot * Copyright (C) 2022 Kontron Electronics GmbH
4*5f62a964SEmmanuel Vadot */
5*5f62a964SEmmanuel Vadot
6*5f62a964SEmmanuel Vadot/dts-v1/;
7*5f62a964SEmmanuel Vadot
8*5f62a964SEmmanuel Vadot#include "imx8mp-kontron-osm-s.dtsi"
9*5f62a964SEmmanuel Vadot
10*5f62a964SEmmanuel Vadot/ {
11*5f62a964SEmmanuel Vadot	model = "Kontron BL i.MX8MP OSM-S";
12*5f62a964SEmmanuel Vadot	compatible = "kontron,imx8mp-bl-osm-s", "kontron,imx8mp-osm-s", "fsl,imx8mp";
13*5f62a964SEmmanuel Vadot
14*5f62a964SEmmanuel Vadot	aliases {
15*5f62a964SEmmanuel Vadot		ethernet0 = &fec;
16*5f62a964SEmmanuel Vadot		ethernet1 = &eqos;
17*5f62a964SEmmanuel Vadot	};
18*5f62a964SEmmanuel Vadot
19*5f62a964SEmmanuel Vadot	extcon_usbc: usbc {
20*5f62a964SEmmanuel Vadot		compatible = "linux,extcon-usb-gpio";
21*5f62a964SEmmanuel Vadot		pinctrl-names = "default";
22*5f62a964SEmmanuel Vadot		pinctrl-0 = <&pinctrl_usb1_id>;
23*5f62a964SEmmanuel Vadot		id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
24*5f62a964SEmmanuel Vadot	};
25*5f62a964SEmmanuel Vadot
26*5f62a964SEmmanuel Vadot	leds {
27*5f62a964SEmmanuel Vadot		compatible = "gpio-leds";
28*5f62a964SEmmanuel Vadot
29*5f62a964SEmmanuel Vadot		led1 {
30*5f62a964SEmmanuel Vadot			label = "led1";
31*5f62a964SEmmanuel Vadot			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
32*5f62a964SEmmanuel Vadot			linux,default-trigger = "heartbeat";
33*5f62a964SEmmanuel Vadot		};
34*5f62a964SEmmanuel Vadot	};
35*5f62a964SEmmanuel Vadot
36*5f62a964SEmmanuel Vadot	pwm-beeper {
37*5f62a964SEmmanuel Vadot		compatible = "pwm-beeper";
38*5f62a964SEmmanuel Vadot		pwms = <&pwm2 0 5000 0>;
39*5f62a964SEmmanuel Vadot	};
40*5f62a964SEmmanuel Vadot
41*5f62a964SEmmanuel Vadot	reg_vcc_panel: regulator-vcc-panel {
42*5f62a964SEmmanuel Vadot		compatible = "regulator-fixed";
43*5f62a964SEmmanuel Vadot		gpio = <&gpio4 3 GPIO_ACTIVE_HIGH>;
44*5f62a964SEmmanuel Vadot		enable-active-high;
45*5f62a964SEmmanuel Vadot		regulator-max-microvolt = <3300000>;
46*5f62a964SEmmanuel Vadot		regulator-min-microvolt = <3300000>;
47*5f62a964SEmmanuel Vadot		regulator-name = "VCC_PANEL";
48*5f62a964SEmmanuel Vadot	};
49*5f62a964SEmmanuel Vadot};
50*5f62a964SEmmanuel Vadot
51*5f62a964SEmmanuel Vadot&ecspi2 {
52*5f62a964SEmmanuel Vadot	status = "okay";
53*5f62a964SEmmanuel Vadot
54*5f62a964SEmmanuel Vadot	eeram@0 {
55*5f62a964SEmmanuel Vadot		compatible = "microchip,48l640";
56*5f62a964SEmmanuel Vadot		reg = <0>;
57*5f62a964SEmmanuel Vadot		spi-max-frequency = <20000000>;
58*5f62a964SEmmanuel Vadot	};
59*5f62a964SEmmanuel Vadot};
60*5f62a964SEmmanuel Vadot
61*5f62a964SEmmanuel Vadot&eqos {	/* Second ethernet (OSM-S ETH_B) */
62*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
63*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_eqos_rgmii>;
64*5f62a964SEmmanuel Vadot	phy-mode = "rgmii-id";
65*5f62a964SEmmanuel Vadot	phy-handle = <&ethphy1>;
66*5f62a964SEmmanuel Vadot	status = "okay";
67*5f62a964SEmmanuel Vadot
68*5f62a964SEmmanuel Vadot	mdio {
69*5f62a964SEmmanuel Vadot		compatible = "snps,dwmac-mdio";
70*5f62a964SEmmanuel Vadot		#address-cells = <1>;
71*5f62a964SEmmanuel Vadot		#size-cells = <0>;
72*5f62a964SEmmanuel Vadot
73*5f62a964SEmmanuel Vadot		ethphy1: ethernet-phy@1 {
74*5f62a964SEmmanuel Vadot			compatible = "ethernet-phy-id4f51.e91b";
75*5f62a964SEmmanuel Vadot			reg = <1>;
76*5f62a964SEmmanuel Vadot			pinctrl-0 = <&pinctrl_ethphy1>;
77*5f62a964SEmmanuel Vadot			pinctrl-names = "default";
78*5f62a964SEmmanuel Vadot			reset-assert-us = <10000>;
79*5f62a964SEmmanuel Vadot			reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
80*5f62a964SEmmanuel Vadot		};
81*5f62a964SEmmanuel Vadot	};
82*5f62a964SEmmanuel Vadot};
83*5f62a964SEmmanuel Vadot
84*5f62a964SEmmanuel Vadot&fec { /* First ethernet (OSM-S ETH_A) */
85*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
86*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_enet_rgmii>;
87*5f62a964SEmmanuel Vadot	phy-connection-type = "rgmii-id";
88*5f62a964SEmmanuel Vadot	phy-handle = <&ethphy0>;
89*5f62a964SEmmanuel Vadot	status = "okay";
90*5f62a964SEmmanuel Vadot
91*5f62a964SEmmanuel Vadot	mdio {
92*5f62a964SEmmanuel Vadot		#address-cells = <1>;
93*5f62a964SEmmanuel Vadot		#size-cells = <0>;
94*5f62a964SEmmanuel Vadot
95*5f62a964SEmmanuel Vadot		ethphy0: ethernet-phy@1 {
96*5f62a964SEmmanuel Vadot			compatible = "ethernet-phy-id4f51.e91b";
97*5f62a964SEmmanuel Vadot			reg = <1>;
98*5f62a964SEmmanuel Vadot			pinctrl-0 = <&pinctrl_ethphy0>;
99*5f62a964SEmmanuel Vadot			pinctrl-names = "default";
100*5f62a964SEmmanuel Vadot			reset-assert-us = <10000>;
101*5f62a964SEmmanuel Vadot			reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
102*5f62a964SEmmanuel Vadot		};
103*5f62a964SEmmanuel Vadot	};
104*5f62a964SEmmanuel Vadot};
105*5f62a964SEmmanuel Vadot
106*5f62a964SEmmanuel Vadot&flexcan1 {
107*5f62a964SEmmanuel Vadot	status = "okay";
108*5f62a964SEmmanuel Vadot};
109*5f62a964SEmmanuel Vadot
110*5f62a964SEmmanuel Vadot/*
111*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage:
112*5f62a964SEmmanuel Vadot *   SDIO_A_PWR_EN -> CAN_ADDR2
113*5f62a964SEmmanuel Vadot *   SDIO_A_WP     -> CAN_ADDR3
114*5f62a964SEmmanuel Vadot */
115*5f62a964SEmmanuel Vadot&gpio2 {
116*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
117*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_gpio2>;
118*5f62a964SEmmanuel Vadot	gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "",
119*5f62a964SEmmanuel Vadot			  "SDIO_A_CD", "SDIO_A_CLK", "SDIO_A_CMD", "SDIO_A_D0",
120*5f62a964SEmmanuel Vadot			  "SDIO_A_D1", "SDIO_A_D2", "SDIO_A_D3", "CAN_ADDR2",
121*5f62a964SEmmanuel Vadot			  "CAN_ADDR3";
122*5f62a964SEmmanuel Vadot};
123*5f62a964SEmmanuel Vadot
124*5f62a964SEmmanuel Vadot/*
125*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage:
126*5f62a964SEmmanuel Vadot *   SPI_A_WP      -> CAN_ADDR0
127*5f62a964SEmmanuel Vadot *   SPI_A_HOLD    -> CAN_ADDR1
128*5f62a964SEmmanuel Vadot *   GPIO_B_0      -> DIO1_OUT
129*5f62a964SEmmanuel Vadot *   GPIO_B_1      -> DIO2_OUT
130*5f62a964SEmmanuel Vadot */
131*5f62a964SEmmanuel Vadot&gpio3 {
132*5f62a964SEmmanuel Vadot	gpio-line-names = "PCIE_WAKE", "PCIE_CLKREQ", "PCIE_A_PERST", "SDIO_B_D5",
133*5f62a964SEmmanuel Vadot			  "SDIO_B_D6", "SDIO_B_D7", "CAN_ADDR0", "CAN_ADDR1",
134*5f62a964SEmmanuel Vadot			  "UART_B_RTS", "UART_B_CTS", "SDIO_B_D0", "SDIO_B_D1",
135*5f62a964SEmmanuel Vadot			  "SDIO_B_D2", "SDIO_B_D3", "SDIO_B_WP", "SDIO_B_D4",
136*5f62a964SEmmanuel Vadot			  "PCIE_SM_ALERT", "SDIO_B_CLK", "SDIO_B_CMD", "DIO1_OUT",
137*5f62a964SEmmanuel Vadot			  "DIO2_OUT", "", "BOOT_SEL0", "BOOT_SEL1",
138*5f62a964SEmmanuel Vadot			  "", "", "SDIO_B_CD", "SDIO_B_PWR_EN",
139*5f62a964SEmmanuel Vadot			  "HDMI_CEC", "HDMI_HPD";
140*5f62a964SEmmanuel Vadot};
141*5f62a964SEmmanuel Vadot
142*5f62a964SEmmanuel Vadot/*
143*5f62a964SEmmanuel Vadot * Rename SoM signals according to board usage:
144*5f62a964SEmmanuel Vadot *   GPIO_B_5      -> DIO2_IN
145*5f62a964SEmmanuel Vadot *   GPIO_B_6      -> DIO3_IN
146*5f62a964SEmmanuel Vadot *   GPIO_B_7      -> DIO4_IN
147*5f62a964SEmmanuel Vadot *   GPIO_B_3      -> DIO4_OUT
148*5f62a964SEmmanuel Vadot *   GPIO_B_4      -> DIO1_IN
149*5f62a964SEmmanuel Vadot *   GPIO_B_2      -> DIO3_OUT
150*5f62a964SEmmanuel Vadot */
151*5f62a964SEmmanuel Vadot&gpio4 {
152*5f62a964SEmmanuel Vadot	gpio-line-names = "DIO2_IN", "DIO3_IN", "DIO4_IN", "GPIO_C_0",
153*5f62a964SEmmanuel Vadot			  "ETH_A_MDC", "ETH_A_MDIO", "ETH_A_RXD0", "ETH_A_RXD1",
154*5f62a964SEmmanuel Vadot			  "ETH_A_RXD2", "ETH_A_RXD3", "ETH_A_RX_DV", "ETH_A_RX_CLK",
155*5f62a964SEmmanuel Vadot			  "ETH_A_TXD0", "ETH_A_TXD1", "ETH_A_TXD2", "ETH_A_TXD3",
156*5f62a964SEmmanuel Vadot			  "ETH_A_TX_EN", "ETH_A_TX_CLK", "DIO4_OUT", "DIO1_IN",
157*5f62a964SEmmanuel Vadot			  "DIO3_OUT", "GPIO_A_6", "CAN_A_TX", "UART_A_CTS",
158*5f62a964SEmmanuel Vadot			  "UART_A_RTS", "CAN_A_RX", "CAN_B_TX", "CAN_B_RX",
159*5f62a964SEmmanuel Vadot			  "GPIO_A_7", "CARRIER_PWR_EN", "I2S_A_DATA_IN", "I2S_LRCLK";
160*5f62a964SEmmanuel Vadot};
161*5f62a964SEmmanuel Vadot
162*5f62a964SEmmanuel Vadot&hdmi_pvi {
163*5f62a964SEmmanuel Vadot	status = "okay";
164*5f62a964SEmmanuel Vadot};
165*5f62a964SEmmanuel Vadot
166*5f62a964SEmmanuel Vadot&hdmi_tx {
167*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
168*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_hdmi>;
169*5f62a964SEmmanuel Vadot	ddc-i2c-bus = <&i2c2>;
170*5f62a964SEmmanuel Vadot	status = "okay";
171*5f62a964SEmmanuel Vadot};
172*5f62a964SEmmanuel Vadot
173*5f62a964SEmmanuel Vadot&hdmi_tx_phy {
174*5f62a964SEmmanuel Vadot	status = "okay";
175*5f62a964SEmmanuel Vadot};
176*5f62a964SEmmanuel Vadot
177*5f62a964SEmmanuel Vadot&i2c1 {
178*5f62a964SEmmanuel Vadot	status = "okay";
179*5f62a964SEmmanuel Vadot
180*5f62a964SEmmanuel Vadot	gpio_expander_dio: io-expander@20 {
181*5f62a964SEmmanuel Vadot		compatible = "ti,tca6408";
182*5f62a964SEmmanuel Vadot		reg = <0x20>;
183*5f62a964SEmmanuel Vadot		gpio-controller;
184*5f62a964SEmmanuel Vadot		#gpio-cells = <2>;
185*5f62a964SEmmanuel Vadot		gpio-line-names = "DIO1_OUT","DIO1_IN", "DIO2_OUT","DIO2_IN",
186*5f62a964SEmmanuel Vadot				  "DIO3_OUT","DIO3_IN", "DIO4_OUT","DIO4_IN";
187*5f62a964SEmmanuel Vadot		interrupt-parent = <&gpio3>;
188*5f62a964SEmmanuel Vadot		interrupts = <19 IRQ_TYPE_EDGE_FALLING>;
189*5f62a964SEmmanuel Vadot		reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
190*5f62a964SEmmanuel Vadot	};
191*5f62a964SEmmanuel Vadot};
192*5f62a964SEmmanuel Vadot
193*5f62a964SEmmanuel Vadot&i2c2 {
194*5f62a964SEmmanuel Vadot	status = "okay";
195*5f62a964SEmmanuel Vadot};
196*5f62a964SEmmanuel Vadot
197*5f62a964SEmmanuel Vadot&i2c4 {
198*5f62a964SEmmanuel Vadot	status = "okay";
199*5f62a964SEmmanuel Vadot};
200*5f62a964SEmmanuel Vadot
201*5f62a964SEmmanuel Vadot&lcdif3 {
202*5f62a964SEmmanuel Vadot	status = "okay";
203*5f62a964SEmmanuel Vadot};
204*5f62a964SEmmanuel Vadot
205*5f62a964SEmmanuel Vadot&pwm2 {
206*5f62a964SEmmanuel Vadot	status = "okay";
207*5f62a964SEmmanuel Vadot};
208*5f62a964SEmmanuel Vadot
209*5f62a964SEmmanuel Vadot&reg_usdhc2_vcc {
210*5f62a964SEmmanuel Vadot	status = "disabled";
211*5f62a964SEmmanuel Vadot};
212*5f62a964SEmmanuel Vadot
213*5f62a964SEmmanuel Vadot&snvs_pwrkey {
214*5f62a964SEmmanuel Vadot	status = "okay";
215*5f62a964SEmmanuel Vadot};
216*5f62a964SEmmanuel Vadot
217*5f62a964SEmmanuel Vadot&uart1 {
218*5f62a964SEmmanuel Vadot	uart-has-rtscts;
219*5f62a964SEmmanuel Vadot	status = "okay";
220*5f62a964SEmmanuel Vadot};
221*5f62a964SEmmanuel Vadot
222*5f62a964SEmmanuel Vadot&uart4 {
223*5f62a964SEmmanuel Vadot	linux,rs485-enabled-at-boot-time;
224*5f62a964SEmmanuel Vadot	uart-has-rtscts;
225*5f62a964SEmmanuel Vadot	status = "okay";
226*5f62a964SEmmanuel Vadot};
227*5f62a964SEmmanuel Vadot
228*5f62a964SEmmanuel Vadot&usb_dwc3_0 {
229*5f62a964SEmmanuel Vadot	adp-disable;
230*5f62a964SEmmanuel Vadot	hnp-disable;
231*5f62a964SEmmanuel Vadot	srp-disable;
232*5f62a964SEmmanuel Vadot	dr_mode = "otg";
233*5f62a964SEmmanuel Vadot	extcon = <&extcon_usbc>;
234*5f62a964SEmmanuel Vadot	usb-role-switch;
235*5f62a964SEmmanuel Vadot	status = "okay";
236*5f62a964SEmmanuel Vadot};
237*5f62a964SEmmanuel Vadot
238*5f62a964SEmmanuel Vadot&usb_dwc3_1 {
239*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
240*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_usb_hub>;
241*5f62a964SEmmanuel Vadot	#address-cells = <1>;
242*5f62a964SEmmanuel Vadot	#size-cells = <0>;
243*5f62a964SEmmanuel Vadot	dr_mode = "host";
244*5f62a964SEmmanuel Vadot	status = "okay";
245*5f62a964SEmmanuel Vadot
246*5f62a964SEmmanuel Vadot	usb-hub@1 {
247*5f62a964SEmmanuel Vadot		compatible = "usb424,2514";
248*5f62a964SEmmanuel Vadot		reg = <1>;
249*5f62a964SEmmanuel Vadot		reset-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
250*5f62a964SEmmanuel Vadot	};
251*5f62a964SEmmanuel Vadot};
252*5f62a964SEmmanuel Vadot
253*5f62a964SEmmanuel Vadot&usb3_0 {
254*5f62a964SEmmanuel Vadot	status = "okay";
255*5f62a964SEmmanuel Vadot};
256*5f62a964SEmmanuel Vadot
257*5f62a964SEmmanuel Vadot&usb3_1 {
258*5f62a964SEmmanuel Vadot	fsl,disable-port-power-control;
259*5f62a964SEmmanuel Vadot	fsl,permanently-attached;
260*5f62a964SEmmanuel Vadot	status = "okay";
261*5f62a964SEmmanuel Vadot};
262*5f62a964SEmmanuel Vadot
263*5f62a964SEmmanuel Vadot&usb3_phy0 {
264*5f62a964SEmmanuel Vadot	vbus-supply = <&reg_usb1_vbus>;
265*5f62a964SEmmanuel Vadot	status = "okay";
266*5f62a964SEmmanuel Vadot};
267*5f62a964SEmmanuel Vadot
268*5f62a964SEmmanuel Vadot&usb3_phy1 {
269*5f62a964SEmmanuel Vadot	status = "okay";
270*5f62a964SEmmanuel Vadot};
271*5f62a964SEmmanuel Vadot
272*5f62a964SEmmanuel Vadot&usdhc2 {
273*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
274*5f62a964SEmmanuel Vadot	pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
275*5f62a964SEmmanuel Vadot	pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
276*5f62a964SEmmanuel Vadot	vmmc-supply = <&reg_vdd_3v3>;
277*5f62a964SEmmanuel Vadot	status = "okay";
278*5f62a964SEmmanuel Vadot};
279*5f62a964SEmmanuel Vadot
280*5f62a964SEmmanuel Vadot&iomuxc {
281*5f62a964SEmmanuel Vadot	pinctrl_ethphy0: ethphy0grp {
282*5f62a964SEmmanuel Vadot		fsl,pins = <
283*5f62a964SEmmanuel Vadot			MX8MP_IOMUXC_GPIO1_IO01__GPIO1_IO01		0x46
284*5f62a964SEmmanuel Vadot		>;
285*5f62a964SEmmanuel Vadot	};
286*5f62a964SEmmanuel Vadot
287*5f62a964SEmmanuel Vadot	pinctrl_ethphy1: ethphy1grp {
288*5f62a964SEmmanuel Vadot		fsl,pins = <
289*5f62a964SEmmanuel Vadot			MX8MP_IOMUXC_GPIO1_IO00__GPIO1_IO00		0x46
290*5f62a964SEmmanuel Vadot		>;
291*5f62a964SEmmanuel Vadot	};
292*5f62a964SEmmanuel Vadot
293*5f62a964SEmmanuel Vadot	pinctrl_gpio2: gpio2grp {
294*5f62a964SEmmanuel Vadot		fsl,pins = <
295*5f62a964SEmmanuel Vadot			MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19		0x46
296*5f62a964SEmmanuel Vadot			MX8MP_IOMUXC_SD2_WP__GPIO2_IO20			0x46
297*5f62a964SEmmanuel Vadot		>;
298*5f62a964SEmmanuel Vadot	};
299*5f62a964SEmmanuel Vadot
300*5f62a964SEmmanuel Vadot	pinctrl_usb_hub: usbhubgrp {
301*5f62a964SEmmanuel Vadot		fsl,pins = <
302*5f62a964SEmmanuel Vadot			MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14		0x46
303*5f62a964SEmmanuel Vadot		>;
304*5f62a964SEmmanuel Vadot	};
305*5f62a964SEmmanuel Vadot};
306