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