xref: /freebsd-src/sys/contrib/device-tree/src/arm/st/stm32mp157c-osd32mp1-red.dts (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
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&rtc {
151*84943d6fSEmmanuel Vadot	status = "okay";
152*84943d6fSEmmanuel Vadot};
153*84943d6fSEmmanuel Vadot
154*84943d6fSEmmanuel Vadot&sdmmc1 {
155*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "opendrain", "sleep";
156*84943d6fSEmmanuel Vadot	pinctrl-0 = <&sdmmc1_b4_pins_a>;
157*84943d6fSEmmanuel Vadot	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
158*84943d6fSEmmanuel Vadot	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
159*84943d6fSEmmanuel Vadot	cd-gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
160*84943d6fSEmmanuel Vadot	disable-wp;
161*84943d6fSEmmanuel Vadot	st,neg-edge;
162*84943d6fSEmmanuel Vadot	bus-width = <4>;
163*84943d6fSEmmanuel Vadot	vmmc-supply = <&v3v3>;
164*84943d6fSEmmanuel Vadot	status = "okay";
165*84943d6fSEmmanuel Vadot};
166*84943d6fSEmmanuel Vadot
167*84943d6fSEmmanuel Vadot&sdmmc2 {
168*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "opendrain", "sleep";
169*84943d6fSEmmanuel Vadot	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_d>;
170*84943d6fSEmmanuel Vadot	pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
171*84943d6fSEmmanuel Vadot	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_d>;
172*84943d6fSEmmanuel Vadot	non-removable;
173*84943d6fSEmmanuel Vadot	no-sd;
174*84943d6fSEmmanuel Vadot	no-sdio;
175*84943d6fSEmmanuel Vadot	st,neg-edge;
176*84943d6fSEmmanuel Vadot	bus-width = <8>;
177*84943d6fSEmmanuel Vadot	vmmc-supply = <&v3v3>;
178*84943d6fSEmmanuel Vadot	vqmmc-supply = <&vdd>;
179*84943d6fSEmmanuel Vadot	mmc-ddr-3_3v;
180*84943d6fSEmmanuel Vadot	status = "okay";
181*84943d6fSEmmanuel Vadot};
182*84943d6fSEmmanuel Vadot
183*84943d6fSEmmanuel Vadot&uart4 {
184*84943d6fSEmmanuel Vadot	pinctrl-names = "default", "sleep", "idle";
185*84943d6fSEmmanuel Vadot	pinctrl-0 = <&uart4_pins_a>;
186*84943d6fSEmmanuel Vadot	pinctrl-1 = <&uart4_sleep_pins_a>;
187*84943d6fSEmmanuel Vadot	pinctrl-2 = <&uart4_idle_pins_a>;
188*84943d6fSEmmanuel Vadot	/* spare dmas for other usage */
189*84943d6fSEmmanuel Vadot	/delete-property/dmas;
190*84943d6fSEmmanuel Vadot	/delete-property/dma-names;
191*84943d6fSEmmanuel Vadot	status = "okay";
192*84943d6fSEmmanuel Vadot};
193*84943d6fSEmmanuel Vadot
194*84943d6fSEmmanuel Vadot&usbh_ehci {
195*84943d6fSEmmanuel Vadot	status = "okay";
196*84943d6fSEmmanuel Vadot};
197*84943d6fSEmmanuel Vadot
198*84943d6fSEmmanuel Vadot&usbh_ohci {
199*84943d6fSEmmanuel Vadot	status = "okay";
200*84943d6fSEmmanuel Vadot};
201*84943d6fSEmmanuel Vadot
202*84943d6fSEmmanuel Vadot&usbotg_hs {
203*84943d6fSEmmanuel Vadot	vbus-supply = <&vbus_otg>;
204*84943d6fSEmmanuel Vadot};
205*84943d6fSEmmanuel Vadot
206*84943d6fSEmmanuel Vadot&usbphyc {
207*84943d6fSEmmanuel Vadot	status = "okay";
208*84943d6fSEmmanuel Vadot};
209