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