Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6-microblaze.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-width = <8>;
94                         hsync-active = <0>;
95                         vsync-active = <0>;
96                         pclk-sample = <1>;
97                 };
98         };
99 };
100
101 &dsi {
102         phy-dsi-supply = <&reg18>;
103         status = "okay";
104
105         ports {
106                 port@0 {
107                         reg = <0>;
108                         dsi_in: endpoint {
109                                 remote-endpoint = <&ltdc_ep0_out>;
110                         };
111                 };
112
113                 port@1 {
114                         reg = <1>;
115                         dsi_out: endpoint {
116                                 remote-endpoint = <&dsi_panel_in>;
117                         };
118                 };
119         };
120
121         panel-dsi@0 {
122                 compatible = "raydium,rm68200";
123                 reg = <0>;
124                 reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
125                 backlight = <&panel_backlight>;
126                 power-supply = <&v3v3>;
127                 status = "okay";
128
129                 port {
130                         dsi_panel_in: endpoint {
131                                 remote-endpoint = <&dsi_out>;
132                         };
133                 };
134         };
135 };
136
137 &ethernet0 {
138         status = "okay";
139         pinctrl-0 = <&ethernet0_rgmii_pins_a>;
140         pinctrl-1 = <&ethernet0_rgmii_sleep_pins_a>;
141         pinctrl-names = "default", "sleep";
142         phy-mode = "rgmii-id";
143         max-speed = <1000>;
144         phy-handle = <&phy0>;
145
146         mdio0 {
147                 #address-cells = <1>;
148                 #size-cells = <0>;
149                 compatible = "snps,dwmac-mdio";
150                 phy0: ethernet-phy@0 {
151                         reg = <0>;
152                 };
153         };
154 };
155
156 &fmc {
157         pinctrl-names = "default", "sleep";
158         pinctrl-0 = <&fmc_pins_a>;
159         pinctrl-1 = <&fmc_sleep_pins_a>;
160         status = "okay";
161
162         nand-controller@4,0 {
163                 status = "okay";
164
165                 nand@0 {
166                         reg = <0>;
167                         nand-on-flash-bbt;
168                         #address-cells = <1>;
169                         #size-cells = <1>;
170                 };
171         };
172 };
173
174 &i2c2 {
175         pinctrl-names = "default", "sleep";
176         pinctrl-0 = <&i2c2_pins_a>;
177         pinctrl-1 = <&i2c2_sleep_pins_a>;
178         i2c-scl-rising-time-ns = <185>;
179         i2c-scl-falling-time-ns = <20>;
180         status = "okay";
181
182         ov5640: camera@3c {
183                 compatible = "ovti,ov5640";
184                 reg = <0x3c>;
185                 clocks = <&clk_ext_camera>;
186                 clock-names = "xclk";
187                 DOVDD-supply = <&v2v8>;
188                 powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>;
189                 reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
190                 rotation = <180>;
191                 status = "okay";
192
193                 port {
194                         ov5640_0: endpoint {
195                                 remote-endpoint = <&dcmi_0>;
196                                 bus-width = <8>;
197                                 data-shift = <2>; /* lines 9:2 are used */
198                                 hsync-active = <0>;
199                                 vsync-active = <0>;
200                                 pclk-sample = <1>;
201                         };
202                 };
203         };
204
205         stmfx: stmfx@42 {
206                 compatible = "st,stmfx-0300";
207                 reg = <0x42>;
208                 interrupts = <8 IRQ_TYPE_EDGE_RISING>;
209                 interrupt-parent = <&gpioi>;
210                 vdd-supply = <&v3v3>;
211
212                 stmfx_pinctrl: pinctrl {
213                         compatible = "st,stmfx-0300-pinctrl";
214                         gpio-controller;
215                         #gpio-cells = <2>;
216                         interrupt-controller;
217                         #interrupt-cells = <2>;
218                         gpio-ranges = <&stmfx_pinctrl 0 0 24>;
219
220                         joystick_pins: joystick-pins {
221                                 pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
222                                 bias-pull-down;
223                         };
224                 };
225         };
226 };
227
228 &i2c5 {
229         pinctrl-names = "default", "sleep";
230         pinctrl-0 = <&i2c5_pins_a>;
231         pinctrl-1 = <&i2c5_sleep_pins_a>;
232         i2c-scl-rising-time-ns = <185>;
233         i2c-scl-falling-time-ns = <20>;
234         status = "okay";
235 };
236
237 &ltdc {
238         status = "okay";
239
240         port {
241                 ltdc_ep0_out: endpoint@0 {
242                         reg = <0>;
243                         remote-endpoint = <&dsi_in>;
244                 };
245         };
246 };
247
248 &m_can1 {
249         pinctrl-names = "default", "sleep";
250         pinctrl-0 = <&m_can1_pins_a>;
251         pinctrl-1 = <&m_can1_sleep_pins_a>;
252         status = "okay";
253 };
254
255 &qspi {
256         pinctrl-names = "default", "sleep";
257         pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a &qspi_bk2_pins_a>;
258         pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a &qspi_bk2_sleep_pins_a>;
259         reg = <0x58003000 0x1000>, <0x70000000 0x4000000>;
260         #address-cells = <1>;
261         #size-cells = <0>;
262         status = "okay";
263
264         flash0: mx66l51235l@0 {
265                 compatible = "jedec,spi-nor";
266                 reg = <0>;
267                 spi-rx-bus-width = <4>;
268                 spi-max-frequency = <108000000>;
269                 #address-cells = <1>;
270                 #size-cells = <1>;
271         };
272
273         flash1: mx66l51235l@1 {
274                 compatible = "jedec,spi-nor";
275                 reg = <1>;
276                 spi-rx-bus-width = <4>;
277                 spi-max-frequency = <108000000>;
278                 #address-cells = <1>;
279                 #size-cells = <1>;
280         };
281 };
282
283 &sdmmc3 {
284         pinctrl-names = "default", "opendrain", "sleep";
285         pinctrl-0 = <&sdmmc3_b4_pins_a>;
286         pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
287         pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
288         broken-cd;
289         st,neg-edge;
290         bus-width = <4>;
291         vmmc-supply = <&v3v3>;
292         status = "disabled";
293 };
294
295 &spi1 {
296         pinctrl-names = "default";
297         pinctrl-0 = <&spi1_pins_a>;
298         status = "disabled";
299 };
300
301 &timers2 {
302         /* spare dmas for other usage (un-delete to enable pwm capture) */
303         /delete-property/dmas;
304         /delete-property/dma-names;
305         status = "disabled";
306         pwm {
307                 pinctrl-0 = <&pwm2_pins_a>;
308                 pinctrl-1 = <&pwm2_sleep_pins_a>;
309                 pinctrl-names = "default", "sleep";
310                 status = "okay";
311         };
312         timer@1 {
313                 status = "okay";
314         };
315 };
316
317 &timers8 {
318         /delete-property/dmas;
319         /delete-property/dma-names;
320         status = "disabled";
321         pwm {
322                 pinctrl-0 = <&pwm8_pins_a>;
323                 pinctrl-1 = <&pwm8_sleep_pins_a>;
324                 pinctrl-names = "default", "sleep";
325                 status = "okay";
326         };
327         timer@7 {
328                 status = "okay";
329         };
330 };
331
332 &timers12 {
333         /delete-property/dmas;
334         /delete-property/dma-names;
335         status = "disabled";
336         pwm {
337                 pinctrl-0 = <&pwm12_pins_a>;
338                 pinctrl-1 = <&pwm12_sleep_pins_a>;
339                 pinctrl-names = "default", "sleep";
340                 status = "okay";
341         };
342         timer@11 {
343                 status = "okay";
344         };
345 };
346
347 &usart3 {
348         pinctrl-names = "default", "sleep", "idle";
349         pinctrl-0 = <&usart3_pins_b>;
350         pinctrl-1 = <&usart3_sleep_pins_b>;
351         pinctrl-2 = <&usart3_idle_pins_b>;
352         /*
353          * HW flow control USART3_RTS is optional, and isn't default wired to
354          * the connector. SB23 needs to be soldered in order to use it, and R77
355          * (ETH_CLK) should be removed.
356          */
357         uart-has-rtscts;
358         status = "disabled";
359 };
360
361 &usbh_ehci {
362         phys = <&usbphyc_port0>;
363         status = "okay";
364 };
365
366 &usbotg_hs {
367         pinctrl-0 = <&usbotg_hs_pins_a>;
368         pinctrl-names = "default";
369         phys = <&usbphyc_port1 0>;
370         phy-names = "usb2-phy";
371         status = "okay";
372 };
373
374 &usbphyc {
375         status = "okay";
376 };