GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / arm / boot / dts / stm32mp157c-ev1.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2 /*
3  * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
4  * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
5  */
6 /dts-v1/;
7
8 #include "stm32mp157c-ed1.dts"
9 #include <dt-bindings/gpio/gpio.h>
10 #include <dt-bindings/input/input.h>
11
12 / {
13         model = "STMicroelectronics STM32MP157C eval daughter on eval mother";
14         compatible = "st,stm32mp157c-ev1", "st,stm32mp157c-ed1", "st,stm32mp157";
15
16         chosen {
17                 stdout-path = "serial0:115200n8";
18         };
19
20         aliases {
21                 serial0 = &uart4;
22                 serial1 = &usart3;
23                 ethernet0 = &ethernet0;
24         };
25
26         clocks {
27                 clk_ext_camera: clk-ext-camera {
28                         #clock-cells = <0>;
29                         compatible = "fixed-clock";
30                         clock-frequency = <24000000>;
31                 };
32         };
33
34         joystick {
35                 compatible = "gpio-keys";
36                 pinctrl-0 = <&joystick_pins>;
37                 pinctrl-names = "default";
38                 button-0 {
39                         label = "JoySel";
40                         linux,code = <KEY_ENTER>;
41                         interrupt-parent = <&stmfx_pinctrl>;
42                         interrupts = <0 IRQ_TYPE_EDGE_RISING>;
43                 };
44                 button-1 {
45                         label = "JoyDown";
46                         linux,code = <KEY_DOWN>;
47                         interrupt-parent = <&stmfx_pinctrl>;
48                         interrupts = <1 IRQ_TYPE_EDGE_RISING>;
49                 };
50                 button-2 {
51                         label = "JoyLeft";
52                         linux,code = <KEY_LEFT>;
53                         interrupt-parent = <&stmfx_pinctrl>;
54                         interrupts = <2 IRQ_TYPE_EDGE_RISING>;
55                 };
56                 button-3 {
57                         label = "JoyRight";
58                         linux,code = <KEY_RIGHT>;
59                         interrupt-parent = <&stmfx_pinctrl>;
60                         interrupts = <3 IRQ_TYPE_EDGE_RISING>;
61                 };
62                 button-4 {
63                         label = "JoyUp";
64                         linux,code = <KEY_UP>;
65                         interrupt-parent = <&stmfx_pinctrl>;
66                         interrupts = <4 IRQ_TYPE_EDGE_RISING>;
67                 };
68         };
69
70         panel_backlight: panel-backlight {
71                 compatible = "gpio-backlight";
72                 gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
73                 default-on;
74                 status = "okay";
75         };
76 };
77
78 &cec {
79         pinctrl-names = "default";
80         pinctrl-0 = <&cec_pins_a>;
81         status = "okay";
82 };
83
84 &dcmi {
85         status = "okay";
86         pinctrl-names = "default", "sleep";
87         pinctrl-0 = <&dcmi_pins_a>;
88         pinctrl-1 = <&dcmi_sleep_pins_a>;
89
90         port {
91                 dcmi_0: endpoint {
92                         remote-endpoint = <&ov5640_0>;
93                         bus-type = <5>;
94                         bus-width = <8>;
95                         hsync-active = <0>;
96                         vsync-active = <0>;
97                         pclk-sample = <1>;
98                 };
99         };
100 };
101
102 &dsi {
103         phy-dsi-supply = <&reg18>;
104         status = "okay";
105
106         ports {
107                 port@0 {
108                         reg = <0>;
109                         dsi_in: endpoint {
110                                 remote-endpoint = <&ltdc_ep0_out>;
111                         };
112                 };
113
114                 port@1 {
115                         reg = <1>;
116                         dsi_out: endpoint {
117                                 remote-endpoint = <&dsi_panel_in>;
118                         };
119                 };
120         };
121
122         panel-dsi@0 {
123                 compatible = "raydium,rm68200";
124                 reg = <0>;
125                 reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
126                 backlight = <&panel_backlight>;
127                 power-supply = <&v3v3>;
128                 status = "okay";
129
130                 port {
131                         dsi_panel_in: endpoint {
132                                 remote-endpoint = <&dsi_out>;
133                         };
134                 };
135         };
136 };
137
138 &ethernet0 {
139         status = "okay";
140         pinctrl-0 = <&ethernet0_rgmii_pins_a>;
141         pinctrl-1 = <&ethernet0_rgmii_sleep_pins_a>;
142         pinctrl-names = "default", "sleep";
143         phy-mode = "rgmii-id";
144         max-speed = <1000>;
145         phy-handle = <&phy0>;
146
147         mdio {
148                 #address-cells = <1>;
149                 #size-cells = <0>;
150                 compatible = "snps,dwmac-mdio";
151                 phy0: ethernet-phy@0 {
152                         reg = <0>;
153                 };
154         };
155 };
156
157 &fmc {
158         pinctrl-names = "default", "sleep";
159         pinctrl-0 = <&fmc_pins_a>;
160         pinctrl-1 = <&fmc_sleep_pins_a>;
161         status = "okay";
162
163         nand-controller@4,0 {
164                 status = "okay";
165
166                 nand@0 {
167                         reg = <0>;
168                         nand-on-flash-bbt;
169                         #address-cells = <1>;
170                         #size-cells = <1>;
171                 };
172         };
173 };
174
175 &i2c2 {
176         pinctrl-names = "default", "sleep";
177         pinctrl-0 = <&i2c2_pins_a>;
178         pinctrl-1 = <&i2c2_sleep_pins_a>;
179         i2c-scl-rising-time-ns = <185>;
180         i2c-scl-falling-time-ns = <20>;
181         status = "okay";
182
183         ov5640: camera@3c {
184                 compatible = "ovti,ov5640";
185                 reg = <0x3c>;
186                 clocks = <&clk_ext_camera>;
187                 clock-names = "xclk";
188                 DOVDD-supply = <&v2v8>;
189                 powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>;
190                 reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
191                 rotation = <180>;
192                 status = "okay";
193
194                 port {
195                         ov5640_0: endpoint {
196                                 remote-endpoint = <&dcmi_0>;
197                                 bus-width = <8>;
198                                 data-shift = <2>; /* lines 9:2 are used */
199                                 hsync-active = <0>;
200                                 vsync-active = <0>;
201                                 pclk-sample = <1>;
202                         };
203                 };
204         };
205
206         stmfx: stmfx@42 {
207                 compatible = "st,stmfx-0300";
208                 reg = <0x42>;
209                 interrupts = <8 IRQ_TYPE_EDGE_RISING>;
210                 interrupt-parent = <&gpioi>;
211                 vdd-supply = <&v3v3>;
212
213                 stmfx_pinctrl: pinctrl {
214                         compatible = "st,stmfx-0300-pinctrl";
215                         gpio-controller;
216                         #gpio-cells = <2>;
217                         interrupt-controller;
218                         #interrupt-cells = <2>;
219                         gpio-ranges = <&stmfx_pinctrl 0 0 24>;
220
221                         joystick_pins: joystick-pins {
222                                 pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
223                                 bias-pull-down;
224                         };
225                 };
226         };
227 };
228
229 &i2c5 {
230         pinctrl-names = "default", "sleep";
231         pinctrl-0 = <&i2c5_pins_a>;
232         pinctrl-1 = <&i2c5_sleep_pins_a>;
233         i2c-scl-rising-time-ns = <185>;
234         i2c-scl-falling-time-ns = <20>;
235         status = "okay";
236 };
237
238 &ltdc {
239         status = "okay";
240
241         port {
242                 ltdc_ep0_out: endpoint@0 {
243                         reg = <0>;
244                         remote-endpoint = <&dsi_in>;
245                 };
246         };
247 };
248
249 &m_can1 {
250         pinctrl-names = "default", "sleep";
251         pinctrl-0 = <&m_can1_pins_a>;
252         pinctrl-1 = <&m_can1_sleep_pins_a>;
253         status = "okay";
254 };
255
256 &qspi {
257         pinctrl-names = "default", "sleep";
258         pinctrl-0 = <&qspi_clk_pins_a
259                      &qspi_bk1_pins_a
260                      &qspi_cs1_pins_a
261                      &qspi_bk2_pins_a
262                      &qspi_cs2_pins_a>;
263         pinctrl-1 = <&qspi_clk_sleep_pins_a
264                      &qspi_bk1_sleep_pins_a
265                      &qspi_cs1_sleep_pins_a
266                      &qspi_bk2_sleep_pins_a
267                      &qspi_cs2_sleep_pins_a>;
268         reg = <0x58003000 0x1000>, <0x70000000 0x4000000>;
269         #address-cells = <1>;
270         #size-cells = <0>;
271         status = "okay";
272
273         flash0: flash@0 {
274                 compatible = "jedec,spi-nor";
275                 reg = <0>;
276                 spi-rx-bus-width = <4>;
277                 spi-max-frequency = <108000000>;
278                 #address-cells = <1>;
279                 #size-cells = <1>;
280         };
281
282         flash1: flash@1 {
283                 compatible = "jedec,spi-nor";
284                 reg = <1>;
285                 spi-rx-bus-width = <4>;
286                 spi-max-frequency = <108000000>;
287                 #address-cells = <1>;
288                 #size-cells = <1>;
289         };
290 };
291
292 &sdmmc3 {
293         pinctrl-names = "default", "opendrain", "sleep";
294         pinctrl-0 = <&sdmmc3_b4_pins_a>;
295         pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
296         pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
297         broken-cd;
298         st,neg-edge;
299         bus-width = <4>;
300         vmmc-supply = <&v3v3>;
301         status = "disabled";
302 };
303
304 &spi1 {
305         pinctrl-names = "default";
306         pinctrl-0 = <&spi1_pins_a>;
307         status = "disabled";
308 };
309
310 &timers2 {
311         /* spare dmas for other usage (un-delete to enable pwm capture) */
312         /delete-property/dmas;
313         /delete-property/dma-names;
314         status = "disabled";
315         pwm {
316                 pinctrl-0 = <&pwm2_pins_a>;
317                 pinctrl-1 = <&pwm2_sleep_pins_a>;
318                 pinctrl-names = "default", "sleep";
319                 status = "okay";
320         };
321         timer@1 {
322                 status = "okay";
323         };
324 };
325
326 &timers8 {
327         /delete-property/dmas;
328         /delete-property/dma-names;
329         status = "disabled";
330         pwm {
331                 pinctrl-0 = <&pwm8_pins_a>;
332                 pinctrl-1 = <&pwm8_sleep_pins_a>;
333                 pinctrl-names = "default", "sleep";
334                 status = "okay";
335         };
336         timer@7 {
337                 status = "okay";
338         };
339 };
340
341 &timers12 {
342         /delete-property/dmas;
343         /delete-property/dma-names;
344         status = "disabled";
345         pwm {
346                 pinctrl-0 = <&pwm12_pins_a>;
347                 pinctrl-1 = <&pwm12_sleep_pins_a>;
348                 pinctrl-names = "default", "sleep";
349                 status = "okay";
350         };
351         timer@11 {
352                 status = "okay";
353         };
354 };
355
356 &usart3 {
357         pinctrl-names = "default", "sleep", "idle";
358         pinctrl-0 = <&usart3_pins_b>;
359         pinctrl-1 = <&usart3_sleep_pins_b>;
360         pinctrl-2 = <&usart3_idle_pins_b>;
361         /*
362          * HW flow control USART3_RTS is optional, and isn't default wired to
363          * the connector. SB23 needs to be soldered in order to use it, and R77
364          * (ETH_CLK) should be removed.
365          */
366         uart-has-rtscts;
367         status = "disabled";
368 };
369
370 &usbh_ehci {
371         phys = <&usbphyc_port0>;
372         status = "okay";
373 };
374
375 &usbotg_hs {
376         pinctrl-0 = <&usbotg_hs_pins_a>;
377         pinctrl-names = "default";
378         phys = <&usbphyc_port1 0>;
379         phy-names = "usb2-phy";
380         status = "okay";
381 };
382
383 &usbphyc {
384         status = "okay";
385 };
386
387 &usbphyc_port0 {
388         st,tune-hs-dc-level = <2>;
389         st,enable-fs-rftime-tuning;
390         st,enable-hs-rftime-reduction;
391         st,trim-hs-current = <15>;
392         st,trim-hs-impedance = <1>;
393         st,tune-squelch-level = <3>;
394         st,tune-hs-rx-offset = <2>;
395         st,no-lsfs-sc;
396 };
397
398 &usbphyc_port1 {
399         st,tune-hs-dc-level = <2>;
400         st,enable-fs-rftime-tuning;
401         st,enable-hs-rftime-reduction;
402         st,trim-hs-current = <15>;
403         st,trim-hs-impedance = <1>;
404         st,tune-squelch-level = <3>;
405         st,tune-hs-rx-offset = <2>;
406         st,no-lsfs-sc;
407 };