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