xref: /freebsd/sys/contrib/device-tree/src/arm/st/stm32mp157c-osd32mp1-red.dts (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1*84943d6fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2*84943d6fSEmmanuel Vadot/*
3*84943d6fSEmmanuel Vadot * Copyright (C) Geanix ApS 2023 - All Rights Reserved
4*84943d6fSEmmanuel Vadot * Author: Sean Nyekjaer <sean@geanix.com>
5*84943d6fSEmmanuel Vadot */
6*84943d6fSEmmanuel Vadot
7*84943d6fSEmmanuel Vadot/dts-v1/;
8*84943d6fSEmmanuel Vadot
9*84943d6fSEmmanuel Vadot#include "stm32mp157.dtsi"
10*84943d6fSEmmanuel Vadot#include "stm32mp15xc.dtsi"
11*84943d6fSEmmanuel Vadot#include "stm32mp15xx-osd32.dtsi"
12*84943d6fSEmmanuel Vadot#include "stm32mp15xxac-pinctrl.dtsi"
13*84943d6fSEmmanuel Vadot
14*84943d6fSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
15*84943d6fSEmmanuel Vadot#include <dt-bindings/pinctrl/stm32-pinfunc.h>
16*84943d6fSEmmanuel Vadot
17*84943d6fSEmmanuel Vadot/ {
18*84943d6fSEmmanuel Vadot	model = "Octavo OSD32MP1 RED board";
19*84943d6fSEmmanuel Vadot	compatible = "oct,stm32mp157c-osd32-red", "oct,stm32mp15xx-osd32", "st,stm32mp157";
20*84943d6fSEmmanuel Vadot
21*84943d6fSEmmanuel Vadot	aliases {
22*84943d6fSEmmanuel Vadot		serial0 = &uart4;
23*84943d6fSEmmanuel Vadot	};
24*84943d6fSEmmanuel Vadot
25*84943d6fSEmmanuel Vadot	chosen {
26*84943d6fSEmmanuel Vadot		stdout-path = "serial0:115200n8";
27*84943d6fSEmmanuel Vadot	};
28*84943d6fSEmmanuel Vadot
29*84943d6fSEmmanuel Vadot	led-controller-0 {
30*84943d6fSEmmanuel Vadot		compatible = "gpio-leds";
31*84943d6fSEmmanuel Vadot
32*84943d6fSEmmanuel Vadot		led-0 {
33*84943d6fSEmmanuel Vadot			label = "heartbeat";
34*84943d6fSEmmanuel Vadot			gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
35*84943d6fSEmmanuel Vadot			linux,default-trigger = "heartbeat";
36*84943d6fSEmmanuel Vadot		};
37*84943d6fSEmmanuel Vadot	};
38*84943d6fSEmmanuel Vadot};
39*84943d6fSEmmanuel Vadot
40*84943d6fSEmmanuel Vadot&crc1 {
41*84943d6fSEmmanuel Vadot	status = "okay";
42*84943d6fSEmmanuel Vadot};
43*84943d6fSEmmanuel Vadot
44*84943d6fSEmmanuel Vadot&dts {
45*84943d6fSEmmanuel Vadot	status = "okay";
46*84943d6fSEmmanuel Vadot};
47*84943d6fSEmmanuel Vadot
48*84943d6fSEmmanuel Vadot&ethernet0 {
49*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep";
50*84943d6fSEmmanuel Vadot	pinctrl-0 = <&ethernet0_rgmii_pins_a>;
51*84943d6fSEmmanuel Vadot	pinctrl-1 = <&ethernet0_rgmii_sleep_pins_a>;
52*84943d6fSEmmanuel Vadot	phy-mode = "rgmii-id";
53*84943d6fSEmmanuel Vadot	max-speed = <1000>;
54*84943d6fSEmmanuel Vadot	phy-handle = <&phy0>;
55*84943d6fSEmmanuel Vadot	st,eth-clk-sel;
56*84943d6fSEmmanuel Vadot	status = "okay";
57*84943d6fSEmmanuel Vadot
58*84943d6fSEmmanuel Vadot	mdio {
59*84943d6fSEmmanuel Vadot		compatible = "snps,dwmac-mdio";
60*84943d6fSEmmanuel Vadot		#address-cells = <1>;
61*84943d6fSEmmanuel Vadot		#size-cells = <0>;
62*84943d6fSEmmanuel Vadot
63*84943d6fSEmmanuel Vadot		phy0: ethernet-phy@3 {
64*84943d6fSEmmanuel Vadot			reg = <3>;
65*84943d6fSEmmanuel Vadot		};
66*84943d6fSEmmanuel Vadot	};
67*84943d6fSEmmanuel Vadot};
68*84943d6fSEmmanuel Vadot
69*84943d6fSEmmanuel Vadot&iwdg2 {
70*84943d6fSEmmanuel Vadot	timeout-sec = <32>;
71*84943d6fSEmmanuel Vadot	status = "okay";
72*84943d6fSEmmanuel Vadot};
73*84943d6fSEmmanuel Vadot
74*84943d6fSEmmanuel Vadot&i2c1 {
75*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep";
76*84943d6fSEmmanuel Vadot	pinctrl-0 = <&i2c1_pins_a>;
77*84943d6fSEmmanuel Vadot	pinctrl-1 = <&i2c1_sleep_pins_a>;
78*84943d6fSEmmanuel Vadot	status = "okay";
79*84943d6fSEmmanuel Vadot	i2c-scl-rising-time-ns = <100>;
80*84943d6fSEmmanuel Vadot	i2c-scl-falling-time-ns = <7>;
81*84943d6fSEmmanuel Vadot	/* spare dmas for other usage */
82*84943d6fSEmmanuel Vadot	/delete-property/dmas;
83*84943d6fSEmmanuel Vadot	/delete-property/dma-names;
84*84943d6fSEmmanuel Vadot
85*84943d6fSEmmanuel Vadot	hdmi-transmitter@39 {
86*84943d6fSEmmanuel Vadot		compatible = "sil,sii9022";
87*84943d6fSEmmanuel Vadot		reg = <0x39>;
88*84943d6fSEmmanuel Vadot		reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>;
89*84943d6fSEmmanuel Vadot		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
90*84943d6fSEmmanuel Vadot		interrupt-parent = <&gpiog>;
91*84943d6fSEmmanuel Vadot		pinctrl-names = "default", "sleep";
92*84943d6fSEmmanuel Vadot		pinctrl-0 = <&ltdc_pins_e>;
93*84943d6fSEmmanuel Vadot		pinctrl-1 = <&ltdc_sleep_pins_e>;
94*84943d6fSEmmanuel Vadot
95*84943d6fSEmmanuel Vadot		ports {
96*84943d6fSEmmanuel Vadot			#address-cells = <1>;
97*84943d6fSEmmanuel Vadot			#size-cells = <0>;
98*84943d6fSEmmanuel Vadot
99*84943d6fSEmmanuel Vadot			port@0 {
100*84943d6fSEmmanuel Vadot				reg = <0>;
101*84943d6fSEmmanuel Vadot				sii9022_in: endpoint {
102*84943d6fSEmmanuel Vadot					remote-endpoint = <&ltdc_ep0_out>;
103*84943d6fSEmmanuel Vadot				};
104*84943d6fSEmmanuel Vadot			};
105*84943d6fSEmmanuel Vadot
106*84943d6fSEmmanuel Vadot			port@3 {
107*84943d6fSEmmanuel Vadot				reg = <3>;
108*84943d6fSEmmanuel Vadot				sii9022_tx_endpoint: endpoint {
109*84943d6fSEmmanuel Vadot					remote-endpoint = <&i2s2_endpoint>;
110*84943d6fSEmmanuel Vadot				};
111*84943d6fSEmmanuel Vadot			};
112*84943d6fSEmmanuel Vadot		};
113*84943d6fSEmmanuel Vadot	};
114*84943d6fSEmmanuel Vadot};
115*84943d6fSEmmanuel Vadot
116*84943d6fSEmmanuel Vadot&i2s2 {
117*84943d6fSEmmanuel Vadot	clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc CK_PER>, <&rcc PLL3_R>;
118*84943d6fSEmmanuel Vadot	clock-names = "pclk", "i2sclk", "x8k", "x11k";
119*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep";
120*84943d6fSEmmanuel Vadot	pinctrl-0 = <&i2s2_pins_b>;
121*84943d6fSEmmanuel Vadot	pinctrl-1 = <&i2s2_sleep_pins_b>;
122*84943d6fSEmmanuel Vadot	status = "okay";
123*84943d6fSEmmanuel Vadot
124*84943d6fSEmmanuel Vadot	i2s2_port: port {
125*84943d6fSEmmanuel Vadot		i2s2_endpoint: endpoint {
126*84943d6fSEmmanuel Vadot			remote-endpoint = <&sii9022_tx_endpoint>;
127*84943d6fSEmmanuel Vadot			dai-format = "i2s";
128*84943d6fSEmmanuel Vadot			mclk-fs = <256>;
129*84943d6fSEmmanuel Vadot		};
130*84943d6fSEmmanuel Vadot	};
131*84943d6fSEmmanuel Vadot};
132*84943d6fSEmmanuel Vadot
133*84943d6fSEmmanuel Vadot&ltdc {
134*84943d6fSEmmanuel Vadot	status = "okay";
135*84943d6fSEmmanuel Vadot
136*84943d6fSEmmanuel Vadot	port {
137*84943d6fSEmmanuel Vadot		ltdc_ep0_out: endpoint {
138*84943d6fSEmmanuel Vadot			remote-endpoint = <&sii9022_in>;
139*84943d6fSEmmanuel Vadot		};
140*84943d6fSEmmanuel Vadot	};
141*84943d6fSEmmanuel Vadot};
142*84943d6fSEmmanuel Vadot
143*84943d6fSEmmanuel Vadot&m_can1 {
144*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep";
145*84943d6fSEmmanuel Vadot	pinctrl-0 = <&m_can1_pins_d>;
146*84943d6fSEmmanuel Vadot	pinctrl-1 = <&m_can1_sleep_pins_d>;
147*84943d6fSEmmanuel Vadot	status = "okay";
148*84943d6fSEmmanuel Vadot};
149*84943d6fSEmmanuel Vadot
150*84943d6fSEmmanuel Vadot&pwr_regulators {
151*84943d6fSEmmanuel Vadot	vdd-supply = <&vdd>;
152*84943d6fSEmmanuel Vadot	vdd_3v3_usbfs-supply = <&vdd_usb>;
153*84943d6fSEmmanuel Vadot};
154*84943d6fSEmmanuel Vadot
155*84943d6fSEmmanuel Vadot&rtc {
156*84943d6fSEmmanuel Vadot	status = "okay";
157*84943d6fSEmmanuel Vadot};
158*84943d6fSEmmanuel Vadot
159*84943d6fSEmmanuel Vadot&sdmmc1 {
160*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "opendrain", "sleep";
161*84943d6fSEmmanuel Vadot	pinctrl-0 = <&sdmmc1_b4_pins_a>;
162*84943d6fSEmmanuel Vadot	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
163*84943d6fSEmmanuel Vadot	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
164*84943d6fSEmmanuel Vadot	cd-gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
165*84943d6fSEmmanuel Vadot	disable-wp;
166*84943d6fSEmmanuel Vadot	st,neg-edge;
167*84943d6fSEmmanuel Vadot	bus-width = <4>;
168*84943d6fSEmmanuel Vadot	vmmc-supply = <&v3v3>;
169*84943d6fSEmmanuel Vadot	status = "okay";
170*84943d6fSEmmanuel Vadot};
171*84943d6fSEmmanuel Vadot
172*84943d6fSEmmanuel Vadot&sdmmc2 {
173*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "opendrain", "sleep";
174*84943d6fSEmmanuel Vadot	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_d>;
175*84943d6fSEmmanuel Vadot	pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
176*84943d6fSEmmanuel Vadot	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_d>;
177*84943d6fSEmmanuel Vadot	non-removable;
178*84943d6fSEmmanuel Vadot	no-sd;
179*84943d6fSEmmanuel Vadot	no-sdio;
180*84943d6fSEmmanuel Vadot	st,neg-edge;
181*84943d6fSEmmanuel Vadot	bus-width = <8>;
182*84943d6fSEmmanuel Vadot	vmmc-supply = <&v3v3>;
183*84943d6fSEmmanuel Vadot	vqmmc-supply = <&vdd>;
184*84943d6fSEmmanuel Vadot	mmc-ddr-3_3v;
185*84943d6fSEmmanuel Vadot	status = "okay";
186*84943d6fSEmmanuel Vadot};
187*84943d6fSEmmanuel Vadot
188*84943d6fSEmmanuel Vadot&uart4 {
189*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep", "idle";
190*84943d6fSEmmanuel Vadot	pinctrl-0 = <&uart4_pins_a>;
191*84943d6fSEmmanuel Vadot	pinctrl-1 = <&uart4_sleep_pins_a>;
192*84943d6fSEmmanuel Vadot	pinctrl-2 = <&uart4_idle_pins_a>;
193*84943d6fSEmmanuel Vadot	/* spare dmas for other usage */
194*84943d6fSEmmanuel Vadot	/delete-property/dmas;
195*84943d6fSEmmanuel Vadot	/delete-property/dma-names;
196*84943d6fSEmmanuel Vadot	status = "okay";
197*84943d6fSEmmanuel Vadot};
198*84943d6fSEmmanuel Vadot
199*84943d6fSEmmanuel Vadot&usbh_ehci {
200*84943d6fSEmmanuel Vadot	status = "okay";
201*84943d6fSEmmanuel Vadot};
202*84943d6fSEmmanuel Vadot
203*84943d6fSEmmanuel Vadot&usbh_ohci {
204*84943d6fSEmmanuel Vadot	status = "okay";
205*84943d6fSEmmanuel Vadot};
206*84943d6fSEmmanuel Vadot
207*84943d6fSEmmanuel Vadot&usbotg_hs {
208*84943d6fSEmmanuel Vadot	vbus-supply = <&vbus_otg>;
209*84943d6fSEmmanuel Vadot};
210*84943d6fSEmmanuel Vadot
211*84943d6fSEmmanuel Vadot&usbphyc {
212*84943d6fSEmmanuel Vadot	status = "okay";
213*84943d6fSEmmanuel Vadot};
214*84943d6fSEmmanuel Vadot
215*84943d6fSEmmanuel Vadot&usbphyc_port0 {
216*84943d6fSEmmanuel Vadot	phy-supply = <&vdd_usb>;
217*84943d6fSEmmanuel Vadot};
218*84943d6fSEmmanuel Vadot
219*84943d6fSEmmanuel Vadot&usbphyc_port1 {
220*84943d6fSEmmanuel Vadot	phy-supply = <&vdd_usb>;
221*84943d6fSEmmanuel Vadot};
222