Merge tag 'firewire-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee139...
[linux-2.6-microblaze.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_pcie: clock-pcie {
27                 compatible = "fixed-clock";
28                 #clock-cells = <0>;
29                 clock-frequency = <100000000>;
30         };
31
32         connector {
33                 compatible = "usb-c-connector";
34                 label = "USB-C";
35                 data-role = "dual";
36
37                 ports {
38                         #address-cells = <1>;
39                         #size-cells = <0>;
40
41                         port@0 {
42                                 reg = <0>;
43
44                                 usb_c_0_hs_ep: endpoint {
45                                         remote-endpoint = <&dwc3_0_hs_ep>;
46                                 };
47                         };
48
49                         port@1 {
50                                 reg = <1>;
51
52                                 usb_c_0_ss_ep: endpoint {
53                                         remote-endpoint = <&ptn5150_in_ep>;
54                                 };
55                         };
56                 };
57         };
58
59         gpio-keys {
60                 compatible = "gpio-keys";
61
62                 button-0 {
63                         gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; /* GPIO A */
64                         label = "TA1-GPIO-A";
65                         linux,code = <KEY_A>;
66                         pinctrl-0 = <&pinctrl_dhcom_a>;
67                         pinctrl-names = "default";
68                         wakeup-source;
69                 };
70
71                 button-1 {
72                         gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; /* GPIO B */
73                         label = "TA2-GPIO-B";
74                         linux,code = <KEY_B>;
75                         pinctrl-0 = <&pinctrl_dhcom_b>;
76                         pinctrl-names = "default";
77                         wakeup-source;
78                 };
79
80                 button-2 {
81                         gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; /* GPIO C */
82                         label = "TA3-GPIO-C";
83                         linux,code = <KEY_C>;
84                         pinctrl-0 = <&pinctrl_dhcom_c>;
85                         pinctrl-names = "default";
86                         wakeup-source;
87                 };
88
89                 button-3 {
90                         gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; /* GPIO E */
91                         label = "TA4-GPIO-E";
92                         linux,code = <KEY_E>;
93                         pinctrl-0 = <&pinctrl_dhcom_e>;
94                         pinctrl-names = "default";
95                         wakeup-source;
96                 };
97         };
98
99         led {
100                 compatible = "gpio-leds";
101
102                 led-0 {
103                         color = <LED_COLOR_ID_GREEN>;
104                         default-state = "off";
105                         function = LED_FUNCTION_INDICATOR;
106                         function-enumerator = <0>;
107                         gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>; /* GPIO D */
108                         pinctrl-0 = <&pinctrl_dhcom_d>;
109                         pinctrl-names = "default";
110                 };
111
112                 led-1 {
113                         color = <LED_COLOR_ID_GREEN>;
114                         default-state = "off";
115                         function = LED_FUNCTION_INDICATOR;
116                         function-enumerator = <1>;
117                         gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* GPIO F */
118                         pinctrl-0 = <&pinctrl_dhcom_f>;
119                         pinctrl-names = "default";
120                 };
121
122                 led-2 {
123                         color = <LED_COLOR_ID_GREEN>;
124                         default-state = "off";
125                         function = LED_FUNCTION_INDICATOR;
126                         function-enumerator = <2>;
127                         gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; /* GPIO G */
128                         pinctrl-0 = <&pinctrl_dhcom_g>;
129                         pinctrl-names = "default";
130                 };
131
132                 led-3 {
133                         color = <LED_COLOR_ID_GREEN>;
134                         default-state = "off";
135                         function = LED_FUNCTION_INDICATOR;
136                         function-enumerator = <3>;
137                         gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* GPIO I */
138                         pinctrl-0 = <&pinctrl_dhcom_i>;
139                         pinctrl-names = "default";
140                 };
141         };
142
143         reg_avdd: regulator-avdd {      /* AUDIO_VDD */
144                 compatible = "regulator-fixed";
145                 regulator-always-on;
146                 regulator-min-microvolt = <3300000>;
147                 regulator-max-microvolt = <3300000>;
148                 regulator-name = "AUDIO_VDD";
149         };
150 };
151
152 &i2c5 {
153         i2c-mux@70 {
154                 compatible = "nxp,pca9540";
155                 reg = <0x70>;
156                 #address-cells = <1>;
157                 #size-cells = <0>;
158
159                 i2cmuxed0: i2c@0 {
160                         #address-cells = <1>;
161                         #size-cells = <0>;
162                         reg = <0>;
163
164                         typec@3d {
165                                 compatible = "nxp,ptn5150";
166                                 reg = <0x3d>;
167                                 interrupt-parent = <&gpio4>;
168                                 interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
169                                 pinctrl-names = "default";
170                                 pinctrl-0 = <&pinctrl_ptn5150>;
171
172                                 ports {
173                                         #address-cells = <1>;
174                                         #size-cells = <0>;
175
176                                         port@0 {
177                                                 reg = <0>;
178
179                                                 ptn5150_in_ep: endpoint {
180                                                         remote-endpoint = <&usb_c_0_ss_ep>;
181                                                 };
182                                         };
183
184                                         port@1 {
185                                                 reg = <1>;
186
187                                                 ptn5150_out_ep: endpoint {
188                                                         remote-endpoint = <&dwc3_0_ss_ep>;
189                                                 };
190                                         };
191                                 };
192                         };
193
194                         power-sensor@40 {
195                             compatible = "ti,ina238";
196                             reg = <0x40>;
197                             shunt-resistor = <20000>;   /* 0.02 R */
198                             ti,shunt-gain = <1>;        /* Drop cca. 40mV */
199                         };
200
201                         eeprom_board: eeprom@54 {
202                                 compatible = "atmel,24c04";
203                                 pagesize = <16>;
204                                 reg = <0x54>;
205                         };
206                 };
207
208                 i2cmuxed1: i2c@1 {      /* HDMI DDC I2C */
209                         #address-cells = <1>;
210                         #size-cells = <0>;
211                         reg = <1>;
212                 };
213         };
214 };
215
216 &ethphy0g {
217         reg = <7>;
218 };
219
220 &fec {  /* Second ethernet */
221         pinctrl-0 = <&pinctrl_fec_rgmii>;
222         phy-handle = <&ethphypdk>;
223         phy-mode = "rgmii-id";
224
225         mdio {
226                 ethphypdk: ethernet-phy@7 { /* Micrel KSZ9131RNXI */
227                         compatible = "ethernet-phy-id0022.1642",
228                                      "ethernet-phy-ieee802.3-c22";
229                         interrupt-parent = <&gpio4>;
230                         interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
231                         pinctrl-0 = <&pinctrl_ethphy1>;
232                         pinctrl-names = "default";
233                         reg = <7>;
234                         reset-assert-us = <1000>;
235                         /* RESET_N signal rise time ~100ms */
236                         reset-deassert-us = <120000>;
237                         reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
238                 };
239         };
240 };
241
242 &flexcan1 {
243         status = "okay";
244 };
245
246 &pcie_phy {
247         clocks = <&clk_pcie>;
248         clock-names = "ref";
249         fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
250         status = "okay";
251 };
252
253 &pcie {
254         fsl,max-link-speed = <3>;
255         reset-gpio = <&gpio1 6 GPIO_ACTIVE_LOW>;
256         status = "okay";
257 };
258
259 &usb_dwc3_0 {
260         usb-role-switch;
261
262         port {
263                 #address-cells = <1>;
264                 #size-cells = <0>;
265
266                 dwc3_0_hs_ep: endpoint@0 {
267                         reg = <0>;
268                         remote-endpoint = <&usb_c_0_hs_ep>;
269                 };
270
271                 dwc3_0_ss_ep: endpoint@1 {
272                         reg = <1>;
273                         remote-endpoint = <&ptn5150_out_ep>;
274                 };
275         };
276 };
277
278 &usb3_1 {
279         fsl,disable-port-power-control;
280         fsl,permanently-attached;
281 };
282
283 &usb_dwc3_1 {
284         /* This port has USB5734 Hub connected to it, PWR/OC pins are unused */
285         /delete-property/ pinctrl-names;
286         /delete-property/ pinctrl-0;
287 };
288
289 &iomuxc {
290         /*
291          * GPIO_A,B,C,E are connected to buttons.
292          * GPIO_D,F,G,I are connected to LEDs.
293          * GPIO_H is connected to USB Hub RESET_N.
294          * GPIO_M is connected to CLKOUT2.
295          */
296         pinctrl-0 = <&pinctrl_hog_base
297                      &pinctrl_dhcom_h &pinctrl_dhcom_j &pinctrl_dhcom_k
298                      &pinctrl_dhcom_l
299                      &pinctrl_dhcom_int>;
300
301         pinctrl_ptn5150: ptn5150grp {
302                 fsl,pins = <
303                         MX8MP_IOMUXC_SAI2_TXC__GPIO4_IO25               0x40000000
304                 >;
305         };
306 };