xref: /openbmc/linux/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1*44eeddd6SMarek Vasut// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*44eeddd6SMarek Vasut/*
3*44eeddd6SMarek Vasut * Copyright (C) 2023 Marek Vasut <marex@denx.de>
4*44eeddd6SMarek Vasut *
5*44eeddd6SMarek Vasut * DHCOM iMX8MP variant:
6*44eeddd6SMarek Vasut * DHCM-iMX8ML8-C160-R409-F1638-SPI16-GE-CAN2-SD-RTC-WBTA-ADC-T-RGB-CSI2-HS-I-01D2
7*44eeddd6SMarek Vasut * DHCOM PCB number: 660-100 or newer
8*44eeddd6SMarek Vasut * PDK3 PCB number: 669-100 or newer
9*44eeddd6SMarek Vasut */
10*44eeddd6SMarek Vasut
11*44eeddd6SMarek Vasut/dts-v1/;
12*44eeddd6SMarek Vasut
13*44eeddd6SMarek Vasut#include <dt-bindings/leds/common.h>
14*44eeddd6SMarek Vasut#include <dt-bindings/phy/phy-imx8-pcie.h>
15*44eeddd6SMarek Vasut#include "imx8mp-dhcom-som.dtsi"
16*44eeddd6SMarek Vasut
17*44eeddd6SMarek Vasut/ {
18*44eeddd6SMarek Vasut	model = "DH electronics i.MX8M Plus DHCOM Premium Developer Kit (3)";
19*44eeddd6SMarek Vasut	compatible = "dh,imx8mp-dhcom-pdk3", "dh,imx8mp-dhcom-som",
20*44eeddd6SMarek Vasut		     "fsl,imx8mp";
21*44eeddd6SMarek Vasut
22*44eeddd6SMarek Vasut	chosen {
23*44eeddd6SMarek Vasut		stdout-path = &uart1;
24*44eeddd6SMarek Vasut	};
25*44eeddd6SMarek Vasut
26*44eeddd6SMarek Vasut	clk_ext_audio_codec: clock-codec {
27*44eeddd6SMarek Vasut		compatible = "fixed-clock";
28*44eeddd6SMarek Vasut		#clock-cells = <0>;
29*44eeddd6SMarek Vasut		clock-frequency = <24000000>;
30*44eeddd6SMarek Vasut	};
31*44eeddd6SMarek Vasut
32*44eeddd6SMarek Vasut	clk_xtal25: clock-xtal25 {
33*44eeddd6SMarek Vasut		compatible = "fixed-clock";
34*44eeddd6SMarek Vasut		#clock-cells = <0>;
35*44eeddd6SMarek Vasut		clock-frequency = <25000000>;
36*44eeddd6SMarek Vasut	};
37*44eeddd6SMarek Vasut
38*44eeddd6SMarek Vasut	connector {
39*44eeddd6SMarek Vasut		compatible = "usb-c-connector";
40*44eeddd6SMarek Vasut		label = "USB-C";
41*44eeddd6SMarek Vasut		data-role = "dual";
42*44eeddd6SMarek Vasut
43*44eeddd6SMarek Vasut		ports {
44*44eeddd6SMarek Vasut			#address-cells = <1>;
45*44eeddd6SMarek Vasut			#size-cells = <0>;
46*44eeddd6SMarek Vasut
47*44eeddd6SMarek Vasut			port@0 {
48*44eeddd6SMarek Vasut				reg = <0>;
49*44eeddd6SMarek Vasut
50*44eeddd6SMarek Vasut				usb_c_0_hs_ep: endpoint {
51*44eeddd6SMarek Vasut					remote-endpoint = <&dwc3_0_hs_ep>;
52*44eeddd6SMarek Vasut				};
53*44eeddd6SMarek Vasut			};
54*44eeddd6SMarek Vasut
55*44eeddd6SMarek Vasut			port@1 {
56*44eeddd6SMarek Vasut				reg = <1>;
57*44eeddd6SMarek Vasut
58*44eeddd6SMarek Vasut				usb_c_0_ss_ep: endpoint {
59*44eeddd6SMarek Vasut					remote-endpoint = <&ptn5150_in_ep>;
60*44eeddd6SMarek Vasut				};
61*44eeddd6SMarek Vasut			};
62*44eeddd6SMarek Vasut		};
63*44eeddd6SMarek Vasut	};
64*44eeddd6SMarek Vasut
65*44eeddd6SMarek Vasut	gpio-keys {
66*44eeddd6SMarek Vasut		compatible = "gpio-keys";
67*44eeddd6SMarek Vasut
68*44eeddd6SMarek Vasut		button-0 {
69*44eeddd6SMarek Vasut			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; /* GPIO A */
70*44eeddd6SMarek Vasut			label = "TA1-GPIO-A";
71*44eeddd6SMarek Vasut			linux,code = <KEY_A>;
72*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_a>;
73*44eeddd6SMarek Vasut			pinctrl-names = "default";
74*44eeddd6SMarek Vasut			wakeup-source;
75*44eeddd6SMarek Vasut		};
76*44eeddd6SMarek Vasut
77*44eeddd6SMarek Vasut		button-1 {
78*44eeddd6SMarek Vasut			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; /* GPIO B */
79*44eeddd6SMarek Vasut			label = "TA2-GPIO-B";
80*44eeddd6SMarek Vasut			linux,code = <KEY_B>;
81*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_b>;
82*44eeddd6SMarek Vasut			pinctrl-names = "default";
83*44eeddd6SMarek Vasut			wakeup-source;
84*44eeddd6SMarek Vasut		};
85*44eeddd6SMarek Vasut
86*44eeddd6SMarek Vasut		button-2 {
87*44eeddd6SMarek Vasut			gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; /* GPIO C */
88*44eeddd6SMarek Vasut			label = "TA3-GPIO-C";
89*44eeddd6SMarek Vasut			linux,code = <KEY_C>;
90*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_c>;
91*44eeddd6SMarek Vasut			pinctrl-names = "default";
92*44eeddd6SMarek Vasut			wakeup-source;
93*44eeddd6SMarek Vasut		};
94*44eeddd6SMarek Vasut
95*44eeddd6SMarek Vasut		button-3 {
96*44eeddd6SMarek Vasut			gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; /* GPIO E */
97*44eeddd6SMarek Vasut			label = "TA4-GPIO-E";
98*44eeddd6SMarek Vasut			linux,code = <KEY_E>;
99*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_e>;
100*44eeddd6SMarek Vasut			pinctrl-names = "default";
101*44eeddd6SMarek Vasut			wakeup-source;
102*44eeddd6SMarek Vasut		};
103*44eeddd6SMarek Vasut	};
104*44eeddd6SMarek Vasut
105*44eeddd6SMarek Vasut	led {
106*44eeddd6SMarek Vasut		compatible = "gpio-leds";
107*44eeddd6SMarek Vasut
108*44eeddd6SMarek Vasut		led-0 {
109*44eeddd6SMarek Vasut			color = <LED_COLOR_ID_GREEN>;
110*44eeddd6SMarek Vasut			default-state = "off";
111*44eeddd6SMarek Vasut			function = LED_FUNCTION_INDICATOR;
112*44eeddd6SMarek Vasut			function-enumerator = <0>;
113*44eeddd6SMarek Vasut			gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>; /* GPIO D */
114*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_d>;
115*44eeddd6SMarek Vasut			pinctrl-names = "default";
116*44eeddd6SMarek Vasut		};
117*44eeddd6SMarek Vasut
118*44eeddd6SMarek Vasut		led-1 {
119*44eeddd6SMarek Vasut			color = <LED_COLOR_ID_GREEN>;
120*44eeddd6SMarek Vasut			default-state = "off";
121*44eeddd6SMarek Vasut			function = LED_FUNCTION_INDICATOR;
122*44eeddd6SMarek Vasut			function-enumerator = <1>;
123*44eeddd6SMarek Vasut			gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* GPIO F */
124*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_f>;
125*44eeddd6SMarek Vasut			pinctrl-names = "default";
126*44eeddd6SMarek Vasut		};
127*44eeddd6SMarek Vasut
128*44eeddd6SMarek Vasut		led-2 {
129*44eeddd6SMarek Vasut			color = <LED_COLOR_ID_GREEN>;
130*44eeddd6SMarek Vasut			default-state = "off";
131*44eeddd6SMarek Vasut			function = LED_FUNCTION_INDICATOR;
132*44eeddd6SMarek Vasut			function-enumerator = <2>;
133*44eeddd6SMarek Vasut			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; /* GPIO G */
134*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_g>;
135*44eeddd6SMarek Vasut			pinctrl-names = "default";
136*44eeddd6SMarek Vasut		};
137*44eeddd6SMarek Vasut
138*44eeddd6SMarek Vasut		led-3 {
139*44eeddd6SMarek Vasut			color = <LED_COLOR_ID_GREEN>;
140*44eeddd6SMarek Vasut			default-state = "off";
141*44eeddd6SMarek Vasut			function = LED_FUNCTION_INDICATOR;
142*44eeddd6SMarek Vasut			function-enumerator = <3>;
143*44eeddd6SMarek Vasut			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* GPIO I */
144*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_dhcom_i>;
145*44eeddd6SMarek Vasut			pinctrl-names = "default";
146*44eeddd6SMarek Vasut		};
147*44eeddd6SMarek Vasut	};
148*44eeddd6SMarek Vasut
149*44eeddd6SMarek Vasut	reg_3p3vdd: regulator-3p3vdd {	/* 3.3VDD */
150*44eeddd6SMarek Vasut		compatible = "regulator-fixed";
151*44eeddd6SMarek Vasut		regulator-always-on;
152*44eeddd6SMarek Vasut		regulator-min-microvolt = <3300000>;
153*44eeddd6SMarek Vasut		regulator-max-microvolt = <3300000>;
154*44eeddd6SMarek Vasut		regulator-name = "3P3VDD";
155*44eeddd6SMarek Vasut	};
156*44eeddd6SMarek Vasut
157*44eeddd6SMarek Vasut	sound {
158*44eeddd6SMarek Vasut		compatible = "simple-audio-card";
159*44eeddd6SMarek Vasut		simple-audio-card,name = "SGTL5000-Card";
160*44eeddd6SMarek Vasut		simple-audio-card,format = "i2s";
161*44eeddd6SMarek Vasut		simple-audio-card,bitclock-master = <&codec_dai>;
162*44eeddd6SMarek Vasut		simple-audio-card,frame-master = <&codec_dai>;
163*44eeddd6SMarek Vasut		simple-audio-card,widgets = "Headphone", "Headphone Jack";
164*44eeddd6SMarek Vasut		simple-audio-card,routing = "Headphone Jack", "HP_OUT";
165*44eeddd6SMarek Vasut
166*44eeddd6SMarek Vasut		cpu_dai: simple-audio-card,cpu {
167*44eeddd6SMarek Vasut			sound-dai = <&sai3>;
168*44eeddd6SMarek Vasut		};
169*44eeddd6SMarek Vasut
170*44eeddd6SMarek Vasut		codec_dai: simple-audio-card,codec {
171*44eeddd6SMarek Vasut			sound-dai = <&sgtl5000>;
172*44eeddd6SMarek Vasut		};
173*44eeddd6SMarek Vasut	};
174*44eeddd6SMarek Vasut};
175*44eeddd6SMarek Vasut
176*44eeddd6SMarek Vasut&i2c5 {
177*44eeddd6SMarek Vasut	i2c-mux@70 {
178*44eeddd6SMarek Vasut		compatible = "nxp,pca9540";
179*44eeddd6SMarek Vasut		reg = <0x70>;
180*44eeddd6SMarek Vasut		#address-cells = <1>;
181*44eeddd6SMarek Vasut		#size-cells = <0>;
182*44eeddd6SMarek Vasut
183*44eeddd6SMarek Vasut		i2cmuxed0: i2c@0 {
184*44eeddd6SMarek Vasut			#address-cells = <1>;
185*44eeddd6SMarek Vasut			#size-cells = <0>;
186*44eeddd6SMarek Vasut			reg = <0>;
187*44eeddd6SMarek Vasut
188*44eeddd6SMarek Vasut			sgtl5000: codec@a {
189*44eeddd6SMarek Vasut				compatible = "fsl,sgtl5000";
190*44eeddd6SMarek Vasut				reg = <0x0a>;
191*44eeddd6SMarek Vasut				#sound-dai-cells = <0>;
192*44eeddd6SMarek Vasut				clocks = <&clk_ext_audio_codec>;
193*44eeddd6SMarek Vasut				VDDA-supply = <&reg_3p3vdd>;
194*44eeddd6SMarek Vasut				VDDIO-supply = <&reg_vdd_3p3v_awo>;
195*44eeddd6SMarek Vasut			};
196*44eeddd6SMarek Vasut
197*44eeddd6SMarek Vasut			typec@3d {
198*44eeddd6SMarek Vasut				compatible = "nxp,ptn5150";
199*44eeddd6SMarek Vasut				reg = <0x3d>;
200*44eeddd6SMarek Vasut				interrupt-parent = <&gpio4>;
201*44eeddd6SMarek Vasut				interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
202*44eeddd6SMarek Vasut				pinctrl-names = "default";
203*44eeddd6SMarek Vasut				pinctrl-0 = <&pinctrl_ptn5150>;
204*44eeddd6SMarek Vasut
205*44eeddd6SMarek Vasut				ports {
206*44eeddd6SMarek Vasut					#address-cells = <1>;
207*44eeddd6SMarek Vasut					#size-cells = <0>;
208*44eeddd6SMarek Vasut
209*44eeddd6SMarek Vasut					port@0 {
210*44eeddd6SMarek Vasut						reg = <0>;
211*44eeddd6SMarek Vasut
212*44eeddd6SMarek Vasut						ptn5150_in_ep: endpoint {
213*44eeddd6SMarek Vasut							remote-endpoint = <&usb_c_0_ss_ep>;
214*44eeddd6SMarek Vasut						};
215*44eeddd6SMarek Vasut					};
216*44eeddd6SMarek Vasut
217*44eeddd6SMarek Vasut					port@1 {
218*44eeddd6SMarek Vasut						reg = <1>;
219*44eeddd6SMarek Vasut
220*44eeddd6SMarek Vasut						ptn5150_out_ep: endpoint {
221*44eeddd6SMarek Vasut							remote-endpoint = <&dwc3_0_ss_ep>;
222*44eeddd6SMarek Vasut						};
223*44eeddd6SMarek Vasut					};
224*44eeddd6SMarek Vasut				};
225*44eeddd6SMarek Vasut			};
226*44eeddd6SMarek Vasut
227*44eeddd6SMarek Vasut			power-sensor@40 {
228*44eeddd6SMarek Vasut			    compatible = "ti,ina238";
229*44eeddd6SMarek Vasut			    reg = <0x40>;
230*44eeddd6SMarek Vasut			    shunt-resistor = <20000>;	/* 0.02 R */
231*44eeddd6SMarek Vasut			    ti,shunt-gain = <1>;	/* Drop cca. 40mV */
232*44eeddd6SMarek Vasut			};
233*44eeddd6SMarek Vasut
234*44eeddd6SMarek Vasut			eeprom_board: eeprom@54 {
235*44eeddd6SMarek Vasut				compatible = "atmel,24c04";
236*44eeddd6SMarek Vasut				pagesize = <16>;
237*44eeddd6SMarek Vasut				reg = <0x54>;
238*44eeddd6SMarek Vasut			};
239*44eeddd6SMarek Vasut
240*44eeddd6SMarek Vasut			pcieclk: clock@6b {
241*44eeddd6SMarek Vasut				compatible = "skyworks,si52144";
242*44eeddd6SMarek Vasut				reg = <0x6b>;
243*44eeddd6SMarek Vasut				clocks = <&clk_xtal25>;
244*44eeddd6SMarek Vasut				#clock-cells = <1>;
245*44eeddd6SMarek Vasut			};
246*44eeddd6SMarek Vasut		};
247*44eeddd6SMarek Vasut
248*44eeddd6SMarek Vasut		i2cmuxed1: i2c@1 {	/* HDMI DDC I2C */
249*44eeddd6SMarek Vasut			#address-cells = <1>;
250*44eeddd6SMarek Vasut			#size-cells = <0>;
251*44eeddd6SMarek Vasut			reg = <1>;
252*44eeddd6SMarek Vasut		};
253*44eeddd6SMarek Vasut	};
254*44eeddd6SMarek Vasut};
255*44eeddd6SMarek Vasut
256*44eeddd6SMarek Vasut&ethphy0g {
257*44eeddd6SMarek Vasut	reg = <7>;
258*44eeddd6SMarek Vasut};
259*44eeddd6SMarek Vasut
260*44eeddd6SMarek Vasut&fec {	/* Second ethernet */
261*44eeddd6SMarek Vasut	pinctrl-0 = <&pinctrl_fec_rgmii>;
262*44eeddd6SMarek Vasut	phy-handle = <&ethphypdk>;
263*44eeddd6SMarek Vasut	phy-mode = "rgmii-id";
264*44eeddd6SMarek Vasut
265*44eeddd6SMarek Vasut	mdio {
266*44eeddd6SMarek Vasut		ethphypdk: ethernet-phy@7 { /* Micrel KSZ9131RNXI */
267*44eeddd6SMarek Vasut			compatible = "ethernet-phy-id0022.1642",
268*44eeddd6SMarek Vasut				     "ethernet-phy-ieee802.3-c22";
269*44eeddd6SMarek Vasut			interrupt-parent = <&gpio4>;
270*44eeddd6SMarek Vasut			interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
271*44eeddd6SMarek Vasut			pinctrl-0 = <&pinctrl_ethphy1>;
272*44eeddd6SMarek Vasut			pinctrl-names = "default";
273*44eeddd6SMarek Vasut			reg = <7>;
274*44eeddd6SMarek Vasut			reset-assert-us = <1000>;
275*44eeddd6SMarek Vasut			/* RESET_N signal rise time ~100ms */
276*44eeddd6SMarek Vasut			reset-deassert-us = <120000>;
277*44eeddd6SMarek Vasut			reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
278*44eeddd6SMarek Vasut		};
279*44eeddd6SMarek Vasut	};
280*44eeddd6SMarek Vasut};
281*44eeddd6SMarek Vasut
282*44eeddd6SMarek Vasut&flexcan1 {
283*44eeddd6SMarek Vasut	status = "okay";
284*44eeddd6SMarek Vasut};
285*44eeddd6SMarek Vasut
286*44eeddd6SMarek Vasut&pcie_phy {
287*44eeddd6SMarek Vasut	clocks = <&pcieclk 1>;
288*44eeddd6SMarek Vasut	clock-names = "ref";
289*44eeddd6SMarek Vasut	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
290*44eeddd6SMarek Vasut	status = "okay";
291*44eeddd6SMarek Vasut};
292*44eeddd6SMarek Vasut
293*44eeddd6SMarek Vasut&pcie {
294*44eeddd6SMarek Vasut	fsl,max-link-speed = <3>;
295*44eeddd6SMarek Vasut	reset-gpio = <&gpio1 6 GPIO_ACTIVE_LOW>;
296*44eeddd6SMarek Vasut	status = "okay";
297*44eeddd6SMarek Vasut};
298*44eeddd6SMarek Vasut
299*44eeddd6SMarek Vasut&sai3 {
300*44eeddd6SMarek Vasut	pinctrl-names = "default";
301*44eeddd6SMarek Vasut	pinctrl-0 = <&pinctrl_sai3>;
302*44eeddd6SMarek Vasut	assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
303*44eeddd6SMarek Vasut	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
304*44eeddd6SMarek Vasut	assigned-clock-rates = <12288000>;
305*44eeddd6SMarek Vasut	fsl,sai-mclk-direction-output;
306*44eeddd6SMarek Vasut	status = "okay";
307};
308
309&usb_dwc3_0 {
310	usb-role-switch;
311
312	port {
313		#address-cells = <1>;
314		#size-cells = <0>;
315
316		dwc3_0_hs_ep: endpoint@0 {
317			reg = <0>;
318			remote-endpoint = <&usb_c_0_hs_ep>;
319		};
320
321		dwc3_0_ss_ep: endpoint@1 {
322			reg = <1>;
323			remote-endpoint = <&ptn5150_out_ep>;
324		};
325	};
326};
327
328&usb3_1 {
329	fsl,disable-port-power-control;
330	fsl,permanently-attached;
331};
332
333&usb_dwc3_1 {
334	/* This port has USB5734 Hub connected to it, PWR/OC pins are unused */
335	/delete-property/ pinctrl-names;
336	/delete-property/ pinctrl-0;
337};
338
339&iomuxc {
340	/*
341	 * GPIO_A,B,C,E are connected to buttons.
342	 * GPIO_D,F,G,I are connected to LEDs.
343	 * GPIO_H is connected to USB Hub RESET_N.
344	 * GPIO_M is connected to CLKOUT2.
345	 */
346	pinctrl-0 = <&pinctrl_hog_base
347		     &pinctrl_dhcom_h &pinctrl_dhcom_j &pinctrl_dhcom_k
348		     &pinctrl_dhcom_l
349		     &pinctrl_dhcom_int>;
350
351	pinctrl_ptn5150: ptn5150grp {
352		fsl,pins = <
353			MX8MP_IOMUXC_SAI2_TXC__GPIO4_IO25		0x40000000
354		>;
355	};
356};
357