blob: 83ff2e7ce1783403e21e0de9a21e52107c8269ba [file] [log] [blame]
Marcin Sloniewski87e1e0f2020-07-08 19:56:22 +02001// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (C) 2020 Marcin Sloniewski <marcin.sloniewski@gmail.com>
4 */
5
6/dts-v1/;
7
8#include "stm32mp157.dtsi"
9#include "stm32mp15xc.dtsi"
10#include "stm32mp15-pinctrl.dtsi"
11#include "stm32mp15xxac-pinctrl.dtsi"
12
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/mfd/st,stpmic1.h>
15
16/ {
17
18 model = "Seeed Studio Odyssey-STM32MP157C SOM";
19 compatible = "seeed,odyssey-stm32mp157c-som", "st,stm32mp157";
20
21 memory@c0000000 {
22 device_type = "memory";
23 reg = <0xc0000000 0x20000000>;
24 };
25
26 reserved-memory {
27 #address-cells = <1>;
28 #size-cells = <1>;
29 ranges;
30
31 mcuram2: mcuram2@10000000 {
32 compatible = "shared-dma-pool";
33 reg = <0x10000000 0x40000>;
34 no-map;
35 };
36
37 vdev0vring0: vdev0vring0@10040000 {
38 compatible = "shared-dma-pool";
39 reg = <0x10040000 0x1000>;
40 no-map;
41 };
42
43 vdev0vring1: vdev0vring1@10041000 {
44 compatible = "shared-dma-pool";
45 reg = <0x10041000 0x1000>;
46 no-map;
47 };
48
49 vdev0buffer: vdev0buffer@10042000 {
50 compatible = "shared-dma-pool";
51 reg = <0x10042000 0x4000>;
52 no-map;
53 };
54
55 mcuram: mcuram@30000000 {
56 compatible = "shared-dma-pool";
57 reg = <0x30000000 0x40000>;
58 no-map;
59 };
60
61 retram: retram@38000000 {
62 compatible = "shared-dma-pool";
63 reg = <0x38000000 0x10000>;
64 no-map;
65 };
66
67 gpu_reserved: gpu@d4000000 {
68 reg = <0xd4000000 0x4000000>;
69 no-map;
70 };
71
72 optee@de000000 {
73 reg = <0xde000000 0x02000000>;
74 no-map;
75 };
76 };
77
78 led {
79 compatible = "gpio-leds";
80 blue {
81 label = "heartbeat";
82 gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
83 linux,default-trigger = "heartbeat";
84 default-state = "off";
85 };
86 };
87
88};
89
90&gpu {
91 contiguous-area = <&gpu_reserved>;
92 status = "okay";
93};
94
95&i2c2 {
96 pinctrl-names = "default", "sleep";
97 pinctrl-0 = <&i2c2_pins_a>;
98 pinctrl-1 = <&i2c2_sleep_pins_a>;
99 i2c-scl-rising-time-ns = <185>;
100 i2c-scl-falling-time-ns = <20>;
101 clock-frequency = <400000>;
102 status = "okay";
103 /* spare dmas for other usage */
104 /delete-property/dmas;
105 /delete-property/dma-names;
106
107 pmic: stpmic@33 {
108 compatible = "st,stpmic1";
109 reg = <0x33>;
110 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
111 interrupt-controller;
112 #interrupt-cells = <2>;
113 status = "okay";
114
115 regulators {
116 compatible = "st,stpmic1-regulators";
117 ldo1-supply = <&v3v3>;
118 ldo3-supply = <&vdd_ddr>;
119 ldo6-supply = <&v3v3>;
120 pwr_sw1-supply = <&bst_out>;
121 pwr_sw2-supply = <&bst_out>;
122
123 vddcore: buck1 {
124 regulator-name = "vddcore";
125 regulator-min-microvolt = <1200000>;
126 regulator-max-microvolt = <1350000>;
127 regulator-always-on;
128 regulator-initial-mode = <0>;
129 regulator-over-current-protection;
130 };
131
132 vdd_ddr: buck2 {
133 regulator-name = "vdd_ddr";
134 regulator-min-microvolt = <1350000>;
135 regulator-max-microvolt = <1350000>;
136 regulator-always-on;
137 regulator-initial-mode = <0>;
138 regulator-over-current-protection;
139 };
140
141 vdd: buck3 {
142 regulator-name = "vdd";
143 regulator-min-microvolt = <3300000>;
144 regulator-max-microvolt = <3300000>;
145 regulator-always-on;
146 st,mask-reset;
147 regulator-initial-mode = <0>;
148 regulator-over-current-protection;
149 };
150
151 v3v3: buck4 {
152 regulator-name = "v3v3";
153 regulator-min-microvolt = <3300000>;
154 regulator-max-microvolt = <3300000>;
155 regulator-always-on;
156 regulator-over-current-protection;
157 regulator-initial-mode = <0>;
158 };
159
160 v1v8_audio: ldo1 {
161 regulator-name = "v1v8_audio";
162 regulator-min-microvolt = <1800000>;
163 regulator-max-microvolt = <1800000>;
164 regulator-always-on;
165 interrupts = <IT_CURLIM_LDO1 0>;
166 };
167
168 v3v3_hdmi: ldo2 {
169 regulator-name = "v3v3_hdmi";
170 regulator-min-microvolt = <3300000>;
171 regulator-max-microvolt = <3300000>;
172 regulator-always-on;
173 interrupts = <IT_CURLIM_LDO2 0>;
174 };
175
176 vtt_ddr: ldo3 {
177 regulator-name = "vtt_ddr";
178 regulator-min-microvolt = <500000>;
179 regulator-max-microvolt = <750000>;
180 regulator-always-on;
181 regulator-over-current-protection;
182 };
183
184 vdd_usb: ldo4 {
185 regulator-name = "vdd_usb";
186 interrupts = <IT_CURLIM_LDO4 0>;
187 };
188
189 vdda: ldo5 {
190 regulator-name = "vdda";
191 regulator-min-microvolt = <2900000>;
192 regulator-max-microvolt = <2900000>;
193 interrupts = <IT_CURLIM_LDO5 0>;
194 regulator-boot-on;
195 };
196
197 v1v2_hdmi: ldo6 {
198 regulator-name = "v1v2_hdmi";
199 regulator-min-microvolt = <1200000>;
200 regulator-max-microvolt = <1200000>;
201 regulator-always-on;
202 interrupts = <IT_CURLIM_LDO6 0>;
203 };
204
205 vref_ddr: vref_ddr {
206 regulator-name = "vref_ddr";
207 regulator-always-on;
208 };
209
210 bst_out: boost {
211 regulator-name = "bst_out";
212 interrupts = <IT_OCP_BOOST 0>;
213 };
214
215 vbus_otg: pwr_sw1 {
216 regulator-name = "vbus_otg";
217 interrupts = <IT_OCP_OTG 0>;
218 };
219
220 vbus_sw: pwr_sw2 {
221 regulator-name = "vbus_sw";
222 interrupts = <IT_OCP_SWOUT 0>;
223 regulator-active-discharge = <1>;
224 };
225 };
226
227 onkey {
228 compatible = "st,stpmic1-onkey";
229 interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
230 interrupt-names = "onkey-falling", "onkey-rising";
231 power-off-time-sec = <10>;
232 status = "okay";
233 };
234
235 watchdog {
236 compatible = "st,stpmic1-wdt";
237 status = "disabled";
238 };
239 };
240};
241
242&ipcc {
243 status = "okay";
244};
245
246&iwdg2 {
247 timeout-sec = <32>;
248 status = "okay";
249};
250
251&m4_rproc {
252 memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
253 <&vdev0vring1>, <&vdev0buffer>;
254 mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
255 mbox-names = "vq0", "vq1", "shutdown";
256 interrupt-parent = <&exti>;
257 interrupts = <68 1>;
258 status = "okay";
259};
260
261&sdmmc2 {
262 pinctrl-names = "default", "opendrain", "sleep";
263 pinctrl-0 = <&sdmmc2_b4_pins_a>;
264 pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
265 pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;
266 broken-cd;
267 disable-wp;
268 st,neg-edge;
269 bus-width = <4>;
270 vmmc-supply = <&v3v3>;
271 status = "okay";
272};
273
274&timers1 {
275 /* spare dmas for other usage */
276 /delete-property/dmas;
277 /delete-property/dma-names;
278 status = "disabled";
279 pwm {
280 pinctrl-0 = <&pwm1_pins_a>;
281 pinctrl-1 = <&pwm1_sleep_pins_a>;
282 pinctrl-names = "default", "sleep";
283 status = "okay";
284 };
285 timer@0 {
286 status = "okay";
287 };
288};
289
290&timers3 {
291 /delete-property/dmas;
292 /delete-property/dma-names;
293 status = "disabled";
294 pwm {
295 pinctrl-0 = <&pwm3_pins_a>;
296 pinctrl-1 = <&pwm3_sleep_pins_a>;
297 pinctrl-names = "default", "sleep";
298 status = "okay";
299 };
300 timer@2 {
301 status = "okay";
302 };
303};
304
305&timers4 {
306 /delete-property/dmas;
307 /delete-property/dma-names;
308 status = "disabled";
309 pwm {
310 pinctrl-0 = <&pwm4_pins_a &pwm4_pins_b>;
311 pinctrl-1 = <&pwm4_sleep_pins_a &pwm4_sleep_pins_b>;
312 pinctrl-names = "default", "sleep";
313 status = "okay";
314 };
315 timer@3 {
316 status = "okay";
317 };
318};
319
320&timers5 {
321 /delete-property/dmas;
322 /delete-property/dma-names;
323 status = "disabled";
324 pwm {
325 pinctrl-0 = <&pwm5_pins_a>;
326 pinctrl-1 = <&pwm5_sleep_pins_a>;
327 pinctrl-names = "default", "sleep";
328 status = "okay";
329 };
330 timer@4 {
331 status = "okay";
332 };
333};
334
335&timers6 {
336 /delete-property/dmas;
337 /delete-property/dma-names;
338 status = "disabled";
339 timer@5 {
340 status = "okay";
341 };
342};
343
344&timers12 {
345 /delete-property/dmas;
346 /delete-property/dma-names;
347 status = "disabled";
348 pwm {
349 pinctrl-0 = <&pwm12_pins_a>;
350 pinctrl-1 = <&pwm12_sleep_pins_a>;
351 pinctrl-names = "default", "sleep";
352 status = "okay";
353 };
354 timer@11 {
355 status = "okay";
356 };
357};
358
359&vrefbuf {
360 regulator-min-microvolt = <2500000>;
361 regulator-max-microvolt = <2500000>;
362 vdda-supply = <&vdd>;
363 status = "okay";
364};