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