1// 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#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/leds/common.h>
14#include <dt-bindings/mfd/st,stpmic1.h>
15
16/ {
17	model = "Seeed Studio Odyssey-STM32MP157C SOM";
18	compatible = "seeed,stm32mp157c-odyssey-som", "st,stm32mp157";
19
20	memory@c0000000 {
21		device_type = "memory";
22		reg = <0xc0000000 0x20000000>;
23	};
24
25	reserved-memory {
26		#address-cells = <1>;
27		#size-cells = <1>;
28		ranges;
29
30		mcuram2: mcuram2@10000000 {
31			compatible = "shared-dma-pool";
32			reg = <0x10000000 0x40000>;
33			no-map;
34		};
35
36		vdev0vring0: vdev0vring0@10040000 {
37			compatible = "shared-dma-pool";
38			reg = <0x10040000 0x1000>;
39			no-map;
40		};
41
42		vdev0vring1: vdev0vring1@10041000 {
43			compatible = "shared-dma-pool";
44			reg = <0x10041000 0x1000>;
45			no-map;
46		};
47
48		vdev0buffer: vdev0buffer@10042000 {
49			compatible = "shared-dma-pool";
50			reg = <0x10042000 0x4000>;
51			no-map;
52		};
53
54		mcuram: mcuram@30000000 {
55			compatible = "shared-dma-pool";
56			reg = <0x30000000 0x40000>;
57			no-map;
58		};
59
60		retram: retram@38000000 {
61			compatible = "shared-dma-pool";
62			reg = <0x38000000 0x10000>;
63			no-map;
64		};
65	};
66
67	led {
68		compatible = "gpio-leds";
69		led-blue {
70			color = <LED_COLOR_ID_BLUE>;
71			function = LED_FUNCTION_HEARTBEAT;
72			gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
73			linux,default-trigger = "heartbeat";
74		};
75	};
76};
77
78&i2c2 {
79	pinctrl-names = "default";
80	pinctrl-0 = <&i2c2_pins_a>;
81	i2c-scl-rising-time-ns = <185>;
82	i2c-scl-falling-time-ns = <20>;
83	status = "okay";
84	/* spare dmas for other usage */
85	/delete-property/dmas;
86	/delete-property/dma-names;
87
88	pmic: stpmic@33 {
89		compatible = "st,stpmic1";
90		reg = <0x33>;
91		interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
92		interrupt-controller;
93		#interrupt-cells = <2>;
94
95		regulators {
96			compatible = "st,stpmic1-regulators";
97			ldo1-supply = <&v3v3>;
98			ldo3-supply = <&vdd_ddr>;
99			ldo6-supply = <&v3v3>;
100			pwr_sw1-supply = <&bst_out>;
101			pwr_sw2-supply = <&bst_out>;
102
103			vddcore: buck1 {
104				regulator-name = "vddcore";
105				regulator-min-microvolt = <800000>;
106				regulator-max-microvolt = <1350000>;
107				regulator-always-on;
108				regulator-initial-mode = <0>;
109				regulator-over-current-protection;
110			};
111
112			vdd_ddr: buck2 {
113				regulator-name = "vdd_ddr";
114				regulator-min-microvolt = <1350000>;
115				regulator-max-microvolt = <1350000>;
116				regulator-always-on;
117				regulator-initial-mode = <0>;
118				regulator-over-current-protection;
119			};
120
121			vdd: buck3 {
122				regulator-name = "vdd";
123				regulator-min-microvolt = <3300000>;
124				regulator-max-microvolt = <3300000>;
125				regulator-always-on;
126				st,mask-reset;
127				regulator-initial-mode = <0>;
128				regulator-over-current-protection;
129			};
130
131			v3v3: buck4 {
132				regulator-name = "v3v3";
133				regulator-min-microvolt = <3300000>;
134				regulator-max-microvolt = <3300000>;
135				regulator-always-on;
136				regulator-over-current-protection;
137				regulator-initial-mode = <0>;
138			};
139
140			v1v8_audio: ldo1 {
141				regulator-name = "v1v8_audio";
142				regulator-min-microvolt = <1800000>;
143				regulator-max-microvolt = <1800000>;
144				regulator-always-on;
145				interrupts = <IT_CURLIM_LDO1 0>;
146			};
147
148			v3v3_hdmi: ldo2 {
149				regulator-name = "v3v3_hdmi";
150				regulator-min-microvolt = <3300000>;
151				regulator-max-microvolt = <3300000>;
152				regulator-always-on;
153				interrupts = <IT_CURLIM_LDO2 0>;
154			};
155
156			vtt_ddr: ldo3 {
157				regulator-name = "vtt_ddr";
158				regulator-min-microvolt = <500000>;
159				regulator-max-microvolt = <750000>;
160				regulator-always-on;
161				regulator-over-current-protection;
162			};
163
164			vdd_usb: ldo4 {
165				regulator-name = "vdd_usb";
166				interrupts = <IT_CURLIM_LDO4 0>;
167			};
168
169			vdda: ldo5 {
170				regulator-name = "vdda";
171				regulator-min-microvolt = <2900000>;
172				regulator-max-microvolt = <2900000>;
173				interrupts = <IT_CURLIM_LDO5 0>;
174				regulator-boot-on;
175			};
176
177			v1v2_hdmi: ldo6 {
178				regulator-name = "v1v2_hdmi";
179				regulator-min-microvolt = <1200000>;
180				regulator-max-microvolt = <1200000>;
181				regulator-always-on;
182				interrupts = <IT_CURLIM_LDO6 0>;
183			};
184
185			vref_ddr: vref_ddr {
186				regulator-name = "vref_ddr";
187				regulator-always-on;
188			};
189
190			 bst_out: boost {
191				regulator-name = "bst_out";
192				interrupts = <IT_OCP_BOOST 0>;
193			 };
194
195			vbus_otg: pwr_sw1 {
196				regulator-name = "vbus_otg";
197				interrupts = <IT_OCP_OTG 0>;
198			 };
199
200			 vbus_sw: pwr_sw2 {
201				regulator-name = "vbus_sw";
202				interrupts = <IT_OCP_SWOUT 0>;
203				regulator-active-discharge = <1>;
204			 };
205		};
206
207		onkey {
208			compatible = "st,stpmic1-onkey";
209			interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
210			interrupt-names = "onkey-falling", "onkey-rising";
211			power-off-time-sec = <10>;
212		};
213
214		watchdog {
215			compatible = "st,stpmic1-wdt";
216			status = "disabled";
217		};
218	};
219};
220
221&ipcc {
222	status = "okay";
223};
224
225&iwdg2 {
226	timeout-sec = <32>;
227	status = "okay";
228};
229
230&m4_rproc {
231	memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
232			<&vdev0vring1>, <&vdev0buffer>;
233	mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
234	mbox-names = "vq0", "vq1", "shutdown";
235	interrupt-parent = <&exti>;
236	interrupts = <68 1>;
237	status = "okay";
238};
239
240&rng1 {
241	status = "okay";
242};
243
244&rtc {
245	status = "okay";
246};
247
248&sdmmc2 {
249	pinctrl-names = "default", "opendrain", "sleep";
250	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_d>;
251	pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_d>;
252	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_d>;
253	non-removable;
254	no-sd;
255	no-sdio;
256	st,neg-edge;
257	bus-width = <8>;
258	vmmc-supply = <&v3v3>;
259	vqmmc-supply = <&vdd>;
260	mmc-ddr-3_3v;
261	status = "okay";
262};
263
264