xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx8mp-kontron-smarc-eval-carrier.dts (revision 5f62a964e9f8abc6a05d8338273fadd154f0a206)
1*5f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*5f62a964SEmmanuel Vadot/*
3*5f62a964SEmmanuel Vadot * Copyright (C) 2024 Kontron Electronics GmbH
4*5f62a964SEmmanuel Vadot */
5*5f62a964SEmmanuel Vadot
6*5f62a964SEmmanuel Vadot/dts-v1/;
7*5f62a964SEmmanuel Vadot
8*5f62a964SEmmanuel Vadot#include <dt-bindings/phy/phy-imx8-pcie.h>
9*5f62a964SEmmanuel Vadot#include "imx8mp-kontron-smarc.dtsi"
10*5f62a964SEmmanuel Vadot
11*5f62a964SEmmanuel Vadot/ {
12*5f62a964SEmmanuel Vadot	model = "Kontron SMARC Eval Carrier with i.MX8MP";
13*5f62a964SEmmanuel Vadot	compatible = "kontron,imx8mp-smarc-eval-carrier", "kontron,imx8mp-smarc",
14*5f62a964SEmmanuel Vadot		     "kontron,imx8mp-osm-s", "fsl,imx8mp";
15*5f62a964SEmmanuel Vadot
16*5f62a964SEmmanuel Vadot	backlight: backlight {
17*5f62a964SEmmanuel Vadot		compatible = "pwm-backlight";
18*5f62a964SEmmanuel Vadot		pwms = <&pwm1 0 50000 0>;
19*5f62a964SEmmanuel Vadot		brightness-levels = <0 100>;
20*5f62a964SEmmanuel Vadot		num-interpolated-steps = <100>;
21*5f62a964SEmmanuel Vadot		default-brightness-level = <100>;
22*5f62a964SEmmanuel Vadot		enable-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
23*5f62a964SEmmanuel Vadot	};
24*5f62a964SEmmanuel Vadot
25*5f62a964SEmmanuel Vadot	extcon_usbc: usbc {
26*5f62a964SEmmanuel Vadot		compatible = "linux,extcon-usb-gpio";
27*5f62a964SEmmanuel Vadot		pinctrl-names = "default";
28*5f62a964SEmmanuel Vadot		pinctrl-0 = <&pinctrl_usb1_id>;
29*5f62a964SEmmanuel Vadot		id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
30*5f62a964SEmmanuel Vadot	};
31*5f62a964SEmmanuel Vadot
32*5f62a964SEmmanuel Vadot	sound {
33*5f62a964SEmmanuel Vadot		compatible = "simple-audio-card";
34*5f62a964SEmmanuel Vadot		simple-audio-card,bitclock-master = <&codec_dai>;
35*5f62a964SEmmanuel Vadot		simple-audio-card,format = "i2s";
36*5f62a964SEmmanuel Vadot		simple-audio-card,frame-master = <&codec_dai>;
37*5f62a964SEmmanuel Vadot		simple-audio-card,mclk-fs = <256>;
38*5f62a964SEmmanuel Vadot		simple-audio-card,name = "imx8mp-wm8904";
39*5f62a964SEmmanuel Vadot		simple-audio-card,routing =
40*5f62a964SEmmanuel Vadot			"Headphone Jack", "HPOUTL",
41*5f62a964SEmmanuel Vadot			"Headphone Jack", "HPOUTR",
42*5f62a964SEmmanuel Vadot			"IN2L", "Line In Jack",
43*5f62a964SEmmanuel Vadot			"IN2R", "Line In Jack",
44*5f62a964SEmmanuel Vadot			"Headphone Jack", "MICBIAS",
45*5f62a964SEmmanuel Vadot			"IN1L", "Headphone Jack";
46*5f62a964SEmmanuel Vadot		simple-audio-card,widgets =
47*5f62a964SEmmanuel Vadot			"Microphone", "Headphone Jack",
48*5f62a964SEmmanuel Vadot			"Headphone", "Headphone Jack",
49*5f62a964SEmmanuel Vadot			"Line", "Line In Jack";
50*5f62a964SEmmanuel Vadot
51*5f62a964SEmmanuel Vadot		codec_dai: simple-audio-card,codec {
52*5f62a964SEmmanuel Vadot			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
53*5f62a964SEmmanuel Vadot			sound-dai = <&wm8904>;
54*5f62a964SEmmanuel Vadot		};
55*5f62a964SEmmanuel Vadot
56*5f62a964SEmmanuel Vadot		simple-audio-card,cpu {
57*5f62a964SEmmanuel Vadot			sound-dai = <&sai3>;
58*5f62a964SEmmanuel Vadot		};
59*5f62a964SEmmanuel Vadot	};
60*5f62a964SEmmanuel Vadot
61*5f62a964SEmmanuel Vadot	regulator_can0: can0-regulator {
62*5f62a964SEmmanuel Vadot		compatible = "regulator-fixed";
63*5f62a964SEmmanuel Vadot		regulator-name = "can0_en";
64*5f62a964SEmmanuel Vadot		gpio = <&expander_pm_out 6 GPIO_ACTIVE_HIGH>;
65*5f62a964SEmmanuel Vadot		enable-active-high;
66*5f62a964SEmmanuel Vadot	};
67*5f62a964SEmmanuel Vadot
68*5f62a964SEmmanuel Vadot	regulator_can1: can1-regulator {
69*5f62a964SEmmanuel Vadot		compatible = "regulator-fixed";
70*5f62a964SEmmanuel Vadot		regulator-name = "can1_en";
71*5f62a964SEmmanuel Vadot		gpio = <&expander_pm_out 7 GPIO_ACTIVE_HIGH>;
72*5f62a964SEmmanuel Vadot		enable-active-high;
73*5f62a964SEmmanuel Vadot	};
74*5f62a964SEmmanuel Vadot};
75*5f62a964SEmmanuel Vadot
76*5f62a964SEmmanuel Vadot&ecspi1 {
77*5f62a964SEmmanuel Vadot	status = "okay";
78*5f62a964SEmmanuel Vadot};
79*5f62a964SEmmanuel Vadot
80*5f62a964SEmmanuel Vadot&ecspi2 {
81*5f62a964SEmmanuel Vadot	status = "okay";
82*5f62a964SEmmanuel Vadot};
83*5f62a964SEmmanuel Vadot
84*5f62a964SEmmanuel Vadot&eqos {
85*5f62a964SEmmanuel Vadot	status = "okay";
86*5f62a964SEmmanuel Vadot};
87*5f62a964SEmmanuel Vadot
88*5f62a964SEmmanuel Vadot&fec {
89*5f62a964SEmmanuel Vadot	status = "okay";
90*5f62a964SEmmanuel Vadot};
91*5f62a964SEmmanuel Vadot
92*5f62a964SEmmanuel Vadot&flexcan1 {
93*5f62a964SEmmanuel Vadot	xceiver-supply = <&regulator_can0>;
94*5f62a964SEmmanuel Vadot	status = "okay";
95*5f62a964SEmmanuel Vadot};
96*5f62a964SEmmanuel Vadot
97*5f62a964SEmmanuel Vadot&flexcan2 {
98*5f62a964SEmmanuel Vadot	xceiver-supply = <&regulator_can1>;
99*5f62a964SEmmanuel Vadot	status = "okay";
100*5f62a964SEmmanuel Vadot};
101*5f62a964SEmmanuel Vadot
102*5f62a964SEmmanuel Vadot&hdmi_pvi {
103*5f62a964SEmmanuel Vadot	status = "okay";
104*5f62a964SEmmanuel Vadot};
105*5f62a964SEmmanuel Vadot
106*5f62a964SEmmanuel Vadot&hdmi_tx {
107*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
108*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_hdmi>;
109*5f62a964SEmmanuel Vadot	ddc-i2c-bus = <&i2c3>;
110*5f62a964SEmmanuel Vadot	status = "okay";
111*5f62a964SEmmanuel Vadot};
112*5f62a964SEmmanuel Vadot
113*5f62a964SEmmanuel Vadot&hdmi_tx_phy {
114*5f62a964SEmmanuel Vadot	status = "okay";
115*5f62a964SEmmanuel Vadot};
116*5f62a964SEmmanuel Vadot
117*5f62a964SEmmanuel Vadot&i2c1 {
118*5f62a964SEmmanuel Vadot	status = "okay";
119*5f62a964SEmmanuel Vadot
120*5f62a964SEmmanuel Vadot	expander_pm_out: io-expander@22 {
121*5f62a964SEmmanuel Vadot		compatible = "nxp,pca9554";
122*5f62a964SEmmanuel Vadot		reg = <0x22>;
123*5f62a964SEmmanuel Vadot		gpio-controller;
124*5f62a964SEmmanuel Vadot		#gpio-cells = <2>;
125*5f62a964SEmmanuel Vadot		gpio-line-names = "EN_5V0_S0", "EN_3V3_S0", "EN_1V8_S0",
126*5f62a964SEmmanuel Vadot				  "EN_1V5_S0", "EN_12V0_PCIE", "EN_3V3_S5",
127*5f62a964SEmmanuel Vadot				  "CAN0_EN", "CAN1_EN";
128*5f62a964SEmmanuel Vadot	};
129*5f62a964SEmmanuel Vadot
130*5f62a964SEmmanuel Vadot	expander_pm_in: io-expander@24 {
131*5f62a964SEmmanuel Vadot		compatible = "nxp,pca9554";
132*5f62a964SEmmanuel Vadot		reg = <0x24>;
133*5f62a964SEmmanuel Vadot		gpio-controller;
134*5f62a964SEmmanuel Vadot		#gpio-cells = <2>;
135*5f62a964SEmmanuel Vadot		gpio-line-names = "PG_5V0_3V3_S0", "PG_5V0_3V3_S5", "PG_1V8_S0",
136*5f62a964SEmmanuel Vadot				  "PG_1V5_S0", "PG_BKLT_5V", "PG_BKLT_12V";
137*5f62a964SEmmanuel Vadot	};
138*5f62a964SEmmanuel Vadot};
139*5f62a964SEmmanuel Vadot
140*5f62a964SEmmanuel Vadot&i2c2 {
141*5f62a964SEmmanuel Vadot	status = "okay";
142*5f62a964SEmmanuel Vadot
143*5f62a964SEmmanuel Vadot	wm8904: audio-codec@1a {
144*5f62a964SEmmanuel Vadot		compatible = "wlf,wm8904";
145*5f62a964SEmmanuel Vadot		reg = <0x1a>;
146*5f62a964SEmmanuel Vadot		#sound-dai-cells = <0>;
147*5f62a964SEmmanuel Vadot		clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
148*5f62a964SEmmanuel Vadot		clock-names = "mclk";
149*5f62a964SEmmanuel Vadot		AVDD-supply = <&reg_vdd_1v8>;
150*5f62a964SEmmanuel Vadot		CPVDD-supply = <&reg_vdd_1v8>;
151*5f62a964SEmmanuel Vadot		DBVDD-supply = <&reg_vdd_1v8>;
152*5f62a964SEmmanuel Vadot		DCVDD-supply = <&reg_vdd_1v8>;
153*5f62a964SEmmanuel Vadot		MICVDD-supply = <&reg_vdd_3v3>;
154*5f62a964SEmmanuel Vadot	};
155*5f62a964SEmmanuel Vadot
156*5f62a964SEmmanuel Vadot	expander_audio: io-expander@20 {
157*5f62a964SEmmanuel Vadot		compatible = "nxp,pca9554";
158*5f62a964SEmmanuel Vadot		reg = <0x20>;
159*5f62a964SEmmanuel Vadot		gpio-controller;
160*5f62a964SEmmanuel Vadot		#gpio-cells = <2>;
161*5f62a964SEmmanuel Vadot		gpio-line-names = "I2C_SEL_CODEC_LOOPBACK", "FPAH_PRESENCE",
162*5f62a964SEmmanuel Vadot				  "CODEC_OPTION_SW_I2S_HDA", "LINE_IN_JD",
163*5f62a964SEmmanuel Vadot				  "LINE_OUT_JD", "HEADPHONES_JD", "MIC_JD";
164*5f62a964SEmmanuel Vadot	};
165*5f62a964SEmmanuel Vadot};
166*5f62a964SEmmanuel Vadot
167*5f62a964SEmmanuel Vadot&i2c3 {
168*5f62a964SEmmanuel Vadot	status = "okay";
169*5f62a964SEmmanuel Vadot};
170*5f62a964SEmmanuel Vadot
171*5f62a964SEmmanuel Vadot&i2c4 {
172*5f62a964SEmmanuel Vadot	status = "okay";
173*5f62a964SEmmanuel Vadot};
174*5f62a964SEmmanuel Vadot
175*5f62a964SEmmanuel Vadot&lcdif3 {
176*5f62a964SEmmanuel Vadot	status = "okay";
177*5f62a964SEmmanuel Vadot};
178*5f62a964SEmmanuel Vadot
179*5f62a964SEmmanuel Vadot&pcie_phy {
180*5f62a964SEmmanuel Vadot	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
181*5f62a964SEmmanuel Vadot	fsl,clkreq-unsupported;
182*5f62a964SEmmanuel Vadot	clocks = <&hsio_blk_ctrl>;
183*5f62a964SEmmanuel Vadot	clock-names = "ref";
184*5f62a964SEmmanuel Vadot	status = "okay";
185*5f62a964SEmmanuel Vadot};
186*5f62a964SEmmanuel Vadot
187*5f62a964SEmmanuel Vadot&pcie {
188*5f62a964SEmmanuel Vadot	pinctrl-names = "default";
189*5f62a964SEmmanuel Vadot	pinctrl-0 = <&pinctrl_pcie>;
190*5f62a964SEmmanuel Vadot	reset-gpio = <&gpio3 2 GPIO_ACTIVE_LOW>;
191*5f62a964SEmmanuel Vadot	status = "okay";
192*5f62a964SEmmanuel Vadot};
193*5f62a964SEmmanuel Vadot
194*5f62a964SEmmanuel Vadot&pwm1 {
195*5f62a964SEmmanuel Vadot	status = "okay";
196*5f62a964SEmmanuel Vadot};
197*5f62a964SEmmanuel Vadot
198*5f62a964SEmmanuel Vadot&sai3 {
199*5f62a964SEmmanuel Vadot	assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
200*5f62a964SEmmanuel Vadot	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
201*5f62a964SEmmanuel Vadot	assigned-clock-rates = <24576000>;
202*5f62a964SEmmanuel Vadot	fsl,sai-mclk-direction-output;
203*5f62a964SEmmanuel Vadot	status = "okay";
204*5f62a964SEmmanuel Vadot};
205*5f62a964SEmmanuel Vadot
206*5f62a964SEmmanuel Vadot&uart1 {
207*5f62a964SEmmanuel Vadot	uart-has-rtscts;
208*5f62a964SEmmanuel Vadot	status = "okay";
209*5f62a964SEmmanuel Vadot};
210*5f62a964SEmmanuel Vadot
211*5f62a964SEmmanuel Vadot&uart2 {
212*5f62a964SEmmanuel Vadot	status = "okay";
213*5f62a964SEmmanuel Vadot};
214*5f62a964SEmmanuel Vadot
215*5f62a964SEmmanuel Vadot&uart4 {
216*5f62a964SEmmanuel Vadot	uart-has-rtscts;
217*5f62a964SEmmanuel Vadot	status = "okay";
218*5f62a964SEmmanuel Vadot};
219*5f62a964SEmmanuel Vadot
220*5f62a964SEmmanuel Vadot&usb_dwc3_0 {
221*5f62a964SEmmanuel Vadot	adp-disable;
222*5f62a964SEmmanuel Vadot	hnp-disable;
223*5f62a964SEmmanuel Vadot	srp-disable;
224*5f62a964SEmmanuel Vadot	dr_mode = "otg";
225*5f62a964SEmmanuel Vadot	extcon = <&extcon_usbc>;
226*5f62a964SEmmanuel Vadot	usb-role-switch;
227*5f62a964SEmmanuel Vadot	status = "okay";
228*5f62a964SEmmanuel Vadot};
229*5f62a964SEmmanuel Vadot
230*5f62a964SEmmanuel Vadot&usb_dwc3_1 {
231*5f62a964SEmmanuel Vadot	status = "okay";
232*5f62a964SEmmanuel Vadot};
233*5f62a964SEmmanuel Vadot
234*5f62a964SEmmanuel Vadot&usb3_0 {
235*5f62a964SEmmanuel Vadot	status = "okay";
236*5f62a964SEmmanuel Vadot};
237*5f62a964SEmmanuel Vadot
238*5f62a964SEmmanuel Vadot&usb3_1 {
239*5f62a964SEmmanuel Vadot	status = "okay";
240*5f62a964SEmmanuel Vadot};
241*5f62a964SEmmanuel Vadot
242*5f62a964SEmmanuel Vadot&usb3_phy0 {
243*5f62a964SEmmanuel Vadot	vbus-supply = <&reg_usb1_vbus>;
244*5f62a964SEmmanuel Vadot	status = "okay";
245*5f62a964SEmmanuel Vadot};
246*5f62a964SEmmanuel Vadot
247*5f62a964SEmmanuel Vadot&usb3_phy1 {
248*5f62a964SEmmanuel Vadot	status = "okay";
249*5f62a964SEmmanuel Vadot};
250*5f62a964SEmmanuel Vadot
251*5f62a964SEmmanuel Vadot&usdhc2 {
252*5f62a964SEmmanuel Vadot	vmmc-supply = <&reg_vdd_3v3>;
253*5f62a964SEmmanuel Vadot	status = "okay";
254*5f62a964SEmmanuel Vadot};
255