Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / freescale / imx8mp-dhcom-pdk3.dts
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         led {
79                 compatible = "gpio-leds";
80
81                 led-0 {
82                         color = <LED_COLOR_ID_GREEN>;
83                         default-state = "off";
84                         function = LED_FUNCTION_INDICATOR;
85                         function-enumerator = <0>;
86                         gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>; /* GPIO D */
87                         pinctrl-0 = <&pinctrl_dhcom_d>;
88                         pinctrl-names = "default";
89                 };
90
91                 led-1 {
92                         color = <LED_COLOR_ID_GREEN>;
93                         default-state = "off";
94                         function = LED_FUNCTION_INDICATOR;
95                         function-enumerator = <1>;
96                         gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* GPIO F */
97                         pinctrl-0 = <&pinctrl_dhcom_f>;
98                         pinctrl-names = "default";
99                 };
100
101                 led-2 {
102                         color = <LED_COLOR_ID_GREEN>;
103                         default-state = "off";
104                         function = LED_FUNCTION_INDICATOR;
105                         function-enumerator = <2>;
106                         gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; /* GPIO G */
107                         pinctrl-0 = <&pinctrl_dhcom_g>;
108                         pinctrl-names = "default";
109                 };
110
111                 led-3 {
112                         color = <LED_COLOR_ID_GREEN>;
113                         default-state = "off";
114                         function = LED_FUNCTION_INDICATOR;
115                         function-enumerator = <3>;
116                         gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* GPIO I */
117                         pinctrl-0 = <&pinctrl_dhcom_i>;
118                         pinctrl-names = "default";
119                 };
120         };
121
122         reg_3p3vdd: regulator-3p3vdd {  /* 3.3VDD */
123                 compatible = "regulator-fixed";
124                 regulator-always-on;
125                 regulator-min-microvolt = <3300000>;
126                 regulator-max-microvolt = <3300000>;
127                 regulator-name = "3P3VDD";
128         };
129
130         sound {
131                 compatible = "simple-audio-card";
132                 simple-audio-card,name = "SGTL5000-Card";
133                 simple-audio-card,format = "i2s";
134                 simple-audio-card,bitclock-master = <&codec_dai>;
135                 simple-audio-card,frame-master = <&codec_dai>;
136                 simple-audio-card,widgets = "Headphone", "Headphone Jack";
137                 simple-audio-card,routing = "Headphone Jack", "HP_OUT";
138
139                 cpu_dai: simple-audio-card,cpu {
140                         sound-dai = <&sai3>;
141                 };
142
143                 codec_dai: simple-audio-card,codec {
144                         sound-dai = <&sgtl5000>;
145                 };
146         };
147 };
148
149 &i2c5 {
150         i2c-mux@70 {
151                 compatible = "nxp,pca9540";
152                 reg = <0x70>;
153                 #address-cells = <1>;
154                 #size-cells = <0>;
155
156                 i2cmuxed0: i2c@0 {
157                         #address-cells = <1>;
158                         #size-cells = <0>;
159                         reg = <0>;
160
161                         sgtl5000: codec@a {
162                                 compatible = "fsl,sgtl5000";
163                                 reg = <0x0a>;
164                                 #sound-dai-cells = <0>;
165                                 clocks = <&clk_ext_audio_codec>;
166                                 VDDA-supply = <&reg_3p3vdd>;
167                                 VDDIO-supply = <&reg_vdd_3p3v_awo>;
168                         };
169
170                         typec@3d {
171                                 compatible = "nxp,ptn5150";
172                                 reg = <0x3d>;
173                                 interrupt-parent = <&gpio4>;
174                                 interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
175                                 pinctrl-names = "default";
176                                 pinctrl-0 = <&pinctrl_ptn5150>;
177
178                                 port {
179
180                                         ptn5150_out_ep: endpoint {
181                                                 remote-endpoint = <&dwc3_0_ep>;
182                                         };
183                                 };
184                         };
185
186                         power-sensor@40 {
187                                 compatible = "ti,ina238";
188                                 reg = <0x40>;
189                                 shunt-resistor = <20000>;       /* 0.02 R */
190                                 ti,shunt-gain = <1>;    /* Drop cca. 40mV */
191                         };
192
193                         eeprom_board: eeprom@54 {
194                                 compatible = "atmel,24c04";
195                                 pagesize = <16>;
196                                 reg = <0x54>;
197                         };
198
199                         pcieclk: clock@6b {
200                                 compatible = "skyworks,si52144";
201                                 reg = <0x6b>;
202                                 clocks = <&clk_xtal25>;
203                                 #clock-cells = <1>;
204                         };
205                 };
206
207                 i2cmuxed1: i2c@1 {      /* HDMI DDC I2C */
208                         #address-cells = <1>;
209                         #size-cells = <0>;
210                         reg = <1>;
211                 };
212         };
213 };
214
215 &fec {  /* Second ethernet */
216         pinctrl-0 = <&pinctrl_fec_rgmii>;
217         phy-handle = <&ethphypdk>;
218         phy-mode = "rgmii-id";
219
220         mdio {
221                 ethphypdk: ethernet-phy@7 { /* Micrel KSZ9131RNXI */
222                         compatible = "ethernet-phy-id0022.1642",
223                                      "ethernet-phy-ieee802.3-c22";
224                         interrupt-parent = <&gpio4>;
225                         interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
226                         pinctrl-0 = <&pinctrl_ethphy1>;
227                         pinctrl-names = "default";
228                         reg = <7>;
229                         reset-assert-us = <1000>;
230                         /* RESET_N signal rise time ~100ms */
231                         reset-deassert-us = <120000>;
232                         reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
233                 };
234         };
235 };
236
237 &flexcan1 {
238         status = "okay";
239 };
240
241 &pcie_phy {
242         clocks = <&pcieclk 1>;
243         clock-names = "ref";
244         fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
245         status = "okay";
246 };
247
248 &pcie {
249         fsl,max-link-speed = <3>;
250         reset-gpio = <&gpio1 6 GPIO_ACTIVE_LOW>;
251         status = "okay";
252 };
253
254 &sai3 {
255         pinctrl-names = "default";
256         pinctrl-0 = <&pinctrl_sai3>;
257         assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
258         assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
259         assigned-clock-rates = <12288000>;
260         fsl,sai-mclk-direction-output;
261         status = "okay";
262 };
263
264 &usb_dwc3_0 {
265         usb-role-switch;
266
267         port {
268                 dwc3_0_ep: endpoint {
269                         remote-endpoint = <&ptn5150_out_ep>;
270                 };
271         };
272 };
273
274 &usb3_1 {
275         fsl,disable-port-power-control;
276         fsl,permanently-attached;
277 };
278
279 &usb_dwc3_1 {
280         /* This port has USB5734 Hub connected to it, PWR/OC pins are unused */
281         /delete-property/ pinctrl-names;
282         /delete-property/ pinctrl-0;
283 };
284
285 &iomuxc {
286         /*
287          * GPIO_A,B,C,E are connected to buttons.
288          * GPIO_D,F,G,I are connected to LEDs.
289          * GPIO_H is connected to USB Hub RESET_N.
290          * GPIO_M is connected to CLKOUT2.
291          */
292         pinctrl-0 = <&pinctrl_hog_base
293                      &pinctrl_dhcom_h &pinctrl_dhcom_j &pinctrl_dhcom_k
294                      &pinctrl_dhcom_l
295                      &pinctrl_dhcom_int>;
296
297         pinctrl_ptn5150: ptn5150grp {
298                 fsl,pins = <
299                         MX8MP_IOMUXC_SAI2_TXC__GPIO4_IO25               0x40000000
300                 >;
301         };
302 };