blob: ef012e8365b1f5ae66d5f50d0dfd4cd2a108a183 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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
Tom Rini6b642ac2024-10-01 12:20:28 -060078 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
Tom Rini53633a82024-02-29 12:33:36 -050090 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
Tom Rini762f85b2024-07-20 11:15:10 -0600182 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
Tom Rini53633a82024-02-29 12:33:36 -0500192 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
Tom Rini6b642ac2024-10-01 12:20:28 -0600263&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
Tom Rini53633a82024-02-29 12:33:36 -0500290&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};