1 // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
2 /*
3 * Copyright (C) Linaro Ltd 2019 - All Rights Reserved
4 * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
5 * Copyright (C) 2020 Marek Vasut <marex@denx.de>
6 */
7
8 /* Avenger96 uses DHCOR SoM configured for 1V8 IO operation */
9 #include "stm32mp15xx-dhcor-io1v8.dtsi"
10
11 / {
12 aliases {
13 ethernet0 = ðernet0;
14 mmc0 = &sdmmc1;
15 serial0 = &uart4;
16 serial1 = &uart7;
17 serial2 = &usart2;
18 spi0 = &qspi;
19 };
20
21 /* XTal Q1 */
22 cec_clock: clk-cec-fixed {
23 #clock-cells = <0>;
24 compatible = "fixed-clock";
25 clock-frequency = <24000000>;
26 };
27
28 chosen {
29 stdout-path = "serial0:115200n8";
30 };
31
32 hdmi-out {
33 compatible = "hdmi-connector";
34 type = "a";
35
36 port {
37 hdmi_con: endpoint {
38 remote-endpoint = <&adv7513_out>;
39 };
40 };
41 };
42
43 led {
44 compatible = "gpio-leds";
45 led1 {
46 label = "green:user0";
47 gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>;
48 linux,default-trigger = "heartbeat";
49 default-state = "off";
50 };
51
52 led2 {
53 label = "green:user1";
54 gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
55 linux,default-trigger = "mmc0";
56 default-state = "off";
57 };
58
59 led3 {
60 label = "green:user2";
61 gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>;
62 linux,default-trigger = "mmc1";
63 default-state = "off";
64 };
65
66 led4 {
67 label = "green:user3";
68 gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>;
69 linux,default-trigger = "none";
70 default-state = "off";
71 panic-indicator;
72 };
73 };
74
75 sd_switch: regulator-sd_switch {
76 compatible = "regulator-gpio";
77 regulator-name = "sd_switch";
78 regulator-min-microvolt = <1800000>;
79 regulator-max-microvolt = <2900000>;
80 regulator-type = "voltage";
81 regulator-always-on;
82
83 gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>;
84 gpios-states = <0>;
85 states = <1800000 0x1>,
86 <2900000 0x0>;
87 };
88
89 sound {
90 compatible = "audio-graph-card";
91 label = "STM32MP1-AV96-HDMI";
92 dais = <&sai2a_port>;
93 status = "okay";
94 };
95
96 wlan_pwr: regulator-wlan {
97 compatible = "regulator-fixed";
98
99 regulator-name = "wl-reg";
100 regulator-min-microvolt = <3300000>;
101 regulator-max-microvolt = <3300000>;
102
103 gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>;
104 enable-active-high;
105 };
106 };
107
108 &adc {
109 pinctrl-names = "default";
110 pinctrl-0 = <&adc12_ain_pins_b>;
111 vdd-supply = <&vdd>;
112 vdda-supply = <&vdda>;
113 vref-supply = <&vdda>;
114 status = "okay";
115
116 adc1: adc@0 {
117 st,adc-channels = <0 1 6>;
118 st,min-sample-time-nsecs = <5000>;
119 status = "okay";
120 };
121
122 adc2: adc@100 {
123 st,adc-channels = <0 1 2>;
124 st,min-sample-time-nsecs = <5000>;
125 status = "okay";
126 };
127 };
128
129 &dcmi {
130 pinctrl-names = "default", "sleep";
131 pinctrl-0 = <&dcmi_pins_c>;
132 pinctrl-1 = <&dcmi_sleep_pins_c>;
133 status = "disabled";
134
135 port {
136 dcmi_0: endpoint {
137 remote-endpoint = <&stmipi_2>;
138 bus-type = <5>;
139 bus-width = <8>;
140 pclk-sample = <0>;
141 };
142 };
143 };
144
145 ðernet0 {
146 status = "okay";
147 pinctrl-0 = <ðernet0_rgmii_pins_c>;
148 pinctrl-1 = <ðernet0_rgmii_sleep_pins_c>;
149 pinctrl-names = "default", "sleep";
150 phy-mode = "rgmii";
151 max-speed = <1000>;
152 phy-handle = <&phy0>;
153
154 mdio0 {
155 #address-cells = <1>;
156 #size-cells = <0>;
157 compatible = "snps,dwmac-mdio";
158 reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
159 reset-delay-us = <1000>;
160 reset-post-delay-us = <1000>;
161
162 phy0: ethernet-phy@7 {
163 reg = <7>;
164
165 rxc-skew-ps = <1500>;
166 rxdv-skew-ps = <540>;
167 rxd0-skew-ps = <420>;
168 rxd1-skew-ps = <420>;
169 rxd2-skew-ps = <420>;
170 rxd3-skew-ps = <420>;
171
172 txc-skew-ps = <1440>;
173 txen-skew-ps = <540>;
174 txd0-skew-ps = <420>;
175 txd1-skew-ps = <420>;
176 txd2-skew-ps = <420>;
177 txd3-skew-ps = <420>;
178 };
179 };
180 };
181
182 &gpioa {
183 gpio-line-names = "", "", "", "",
184 "", "", "", "",
185 "", "", "", "AV96-K",
186 "AV96-I", "", "AV96-A", "";
187 };
188
189 &gpiob {
190 gpio-line-names = "", "", "", "",
191 "", "AV96-J", "", "",
192 "", "", "", "AV96-B",
193 "", "AV96-L", "", "";
194 };
195
196 &gpioc {
197 gpio-line-names = "", "", "", "AV96-C",
198 "", "", "", "",
199 "", "", "", "",
200 "", "", "", "";
201 };
202
203 &gpiod {
204 gpio-line-names = "", "", "", "",
205 "", "", "", "",
206 "AV96-D", "", "", "",
207 "", "", "AV96-E", "AV96-F";
208 };
209
210 &gpiof {
211 gpio-line-names = "", "", "", "",
212 "", "", "", "",
213 "", "", "", "",
214 "AV96-G", "AV96-H", "", "";
215 };
216
217 &i2c1 { /* X6 I2C1 */
218 pinctrl-names = "default";
219 pinctrl-0 = <&i2c1_pins_b>;
220 i2c-scl-rising-time-ns = <185>;
221 i2c-scl-falling-time-ns = <20>;
222 status = "okay";
223 /delete-property/dmas;
224 /delete-property/dma-names;
225 };
226
227 &i2c2 { /* X6 I2C2 */
228 pinctrl-names = "default";
229 pinctrl-0 = <&i2c2_pins_c>;
230 i2c-scl-rising-time-ns = <185>;
231 i2c-scl-falling-time-ns = <20>;
232 status = "okay";
233 /delete-property/dmas;
234 /delete-property/dma-names;
235 };
236
237 &i2c4 {
238 stmipi: stmipi@14 {
239 compatible = "st,st-mipid02";
240 pinctrl-names = "default", "sleep";
241 pinctrl-0 = <&mco1_pins_a>;
242 pinctrl-1 = <&mco1_sleep_pins_a>;
243 reg = <0x14>;
244 clocks = <&rcc CK_MCO1>;
245 clock-names = "xclk";
246 assigned-clocks = <&rcc CK_MCO1>;
247 assigned-clock-parents = <&rcc CK_HSE>;
248 assigned-clock-rates = <24000000>;
249 VDDE-supply = <&v1v8>;
250 VDDIN-supply = <&v1v8>;
251 reset-gpios = <&gpioz 0 GPIO_ACTIVE_LOW>;
252 status = "disabled";
253
254 ports {
255 #address-cells = <1>;
256 #size-cells = <0>;
257
258 port@0 {
259 reg = <0>;
260 stmipi_0: endpoint {
261 };
262 };
263
264 port@2 {
265 reg = <2>;
266 stmipi_2: endpoint {
267 bus-width = <8>;
268 hsync-active = <0>;
269 vsync-active = <0>;
270 pclk-sample = <0>;
271 remote-endpoint = <&dcmi_0>;
272 };
273 };
274 };
275 };
276
277 hdmi-transmitter@3d {
278 compatible = "adi,adv7513";
279 reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>;
280 reg-names = "main", "edid", "cec", "packet";
281 clocks = <&cec_clock>;
282 clock-names = "cec";
283
284 avdd-supply = <&v3v3>;
285 dvdd-supply = <&v3v3>;
286 pvdd-supply = <&v3v3>;
287 dvdd-3v-supply = <&v3v3>;
288 bgvdd-supply = <&v3v3>;
289
290 interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
291 interrupt-parent = <&gpiog>;
292
293 status = "okay";
294
295 adi,input-depth = <8>;
296 adi,input-colorspace = "rgb";
297 adi,input-clock = "1x";
298
299 ports {
300 #address-cells = <1>;
301 #size-cells = <0>;
302
303 port@0 {
304 reg = <0>;
305 adv7513_in: endpoint {
306 remote-endpoint = <<dc_ep0_out>;
307 };
308 };
309
310 port@1 {
311 reg = <1>;
312 adv7513_out: endpoint {
313 remote-endpoint = <&hdmi_con>;
314 };
315 };
316
317 port@2 {
318 reg = <2>;
319 adv7513_i2s0: endpoint {
320 remote-endpoint = <&sai2a_endpoint>;
321 };
322 };
323 };
324 };
325 };
326
327 <dc {
328 pinctrl-names = "default", "sleep";
329 pinctrl-0 = <<dc_pins_d>;
330 pinctrl-1 = <<dc_sleep_pins_d>;
331 status = "okay";
332
333 port {
334 #address-cells = <1>;
335 #size-cells = <0>;
336
337 ltdc_ep0_out: endpoint@0 {
338 reg = <0>;
339 remote-endpoint = <&adv7513_in>;
340 };
341 };
342 };
343
344 &sai2 {
345 clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
346 pinctrl-names = "default", "sleep";
347 pinctrl-0 = <&sai2a_pins_c>;
348 pinctrl-1 = <&sai2a_sleep_pins_c>;
349 clock-names = "pclk", "x8k", "x11k";
350 status = "okay";
351
352 sai2a: audio-controller@4400b004 {
353 #clock-cells = <0>;
354 dma-names = "tx";
355 clocks = <&rcc SAI2_K>;
356 clock-names = "sai_ck";
357 status = "okay";
358
359 sai2a_port: port {
360 sai2a_endpoint: endpoint {
361 remote-endpoint = <&adv7513_i2s0>;
362 format = "i2s";
363 mclk-fs = <256>;
364 };
365 };
366 };
367 };
368
369 &sdmmc1 {
370 pinctrl-names = "default", "opendrain", "sleep";
371 pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>;
372 pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>;
373 pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>;
374 cd-gpios = <&gpioi 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
375 disable-wp;
376 st,sig-dir;
377 st,neg-edge;
378 st,use-ckin;
379 bus-width = <4>;
380 vmmc-supply = <&vdd_sd>;
381 vqmmc-supply = <&sd_switch>;
382 status = "okay";
383 };
384
385 &sdmmc2 {
386 pinctrl-names = "default", "opendrain", "sleep";
387 pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>;
388 pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>;
389 pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>;
390 bus-width = <8>;
391 mmc-ddr-1_8v;
392 no-sd;
393 no-sdio;
394 non-removable;
395 st,neg-edge;
396 vmmc-supply = <&v3v3>;
397 vqmmc-supply = <&vdd_io>;
398 status = "okay";
399 };
400
401 &sdmmc3 {
402 pinctrl-names = "default", "opendrain", "sleep";
403 pinctrl-0 = <&sdmmc3_b4_pins_b>;
404 pinctrl-1 = <&sdmmc3_b4_od_pins_b>;
405 pinctrl-2 = <&sdmmc3_b4_sleep_pins_b>;
406 broken-cd;
407 non-removable;
408 st,neg-edge;
409 bus-width = <4>;
410 vmmc-supply = <&wlan_pwr>;
411 status = "okay";
412
413 #address-cells = <1>;
414 #size-cells = <0>;
415 brcmf: bcrmf@1 {
416 reg = <1>;
417 compatible = "brcm,bcm4329-fmac";
418 };
419 };
420
421 &spi2 {
422 pinctrl-names = "default";
423 pinctrl-0 = <&spi2_pins_a>;
424 cs-gpios = <&gpioi 0 0>;
425 status = "disabled";
426 /delete-property/dmas;
427 /delete-property/dma-names;
428 };
429
430 &uart4 {
431 /* On Low speed expansion header */
432 label = "LS-UART1";
433 pinctrl-names = "default";
434 pinctrl-0 = <&uart4_pins_b>;
435 /delete-property/dmas;
436 /delete-property/dma-names;
437 status = "okay";
438 };
439
440 &uart7 {
441 /* On Low speed expansion header */
442 label = "LS-UART0";
443 pinctrl-names = "default";
444 pinctrl-0 = <&uart7_pins_a>;
445 uart-has-rtscts;
446 /delete-property/dmas;
447 /delete-property/dma-names;
448 status = "okay";
449 };
450
451 /* Bluetooth */
452 &usart2 {
453 pinctrl-names = "default", "sleep";
454 pinctrl-0 = <&usart2_pins_a>;
455 pinctrl-1 = <&usart2_sleep_pins_a>;
456 st,hw-flow-ctrl;
457 /delete-property/dmas;
458 /delete-property/dma-names;
459 status = "okay";
460
461 bluetooth {
462 compatible = "brcm,bcm43438-bt";
463 max-speed = <3000000>;
464 shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>;
465 };
466 };
467
468 &usbh_ehci {
469 phys = <&usbphyc_port0>;
470 phy-names = "usb";
471 status = "okay";
472 };
473
474 &usbotg_hs {
475 pinctrl-0 = <&usbotg_hs_pins_a>;
476 pinctrl-names = "default";
477 phy-names = "usb2-phy";
478 phys = <&usbphyc_port1 0>;
479 status = "okay";
480 vbus-supply = <&vbus_otg>;
481 };
482
483 &usbphyc {
484 status = "okay";
485 };
486
487 &usbphyc_port0 {
488 phy-supply = <&vdd_usb>;
489 };
490
491 &usbphyc_port1 {
492 phy-supply = <&vdd_usb>;
493 };
Cache object: 4ba35f7bf1359cbc59d1d7bb3eab709b
|