linux/arch/arm/boot/dts/st/stm32mp157f-dk2-scmi.dtsi
Amelie Delaunay fadfd41a49 ARM: dts: stm32: add stm32mp157f-dk2 board support
STM32MP157F-DK2 board embeds a STM32MP157F SoC. This SoC contains the same
level of feature than a STM32MP157C SOC but A7 clock frequency can reach
800MHz, hence the inclusion of the newly introduced stm32mp15xf.dtsi.

As for other latest STM32 MPU families, STM32MP157F-DK2 relies on OP-TEE
SCMI services for SoC clock and reset controllers resources, and for PMIC,
now under OP-TEE control. That's why stm32mp157f-dk2-scmi.dtsi is
introduced, to move all clocks, resets and regulators to SCMI-based ones.

To "disable" SCMI, just need to comment stm32mp157f-dk2-scmi.dtsi inclusion
and to replace &scmi_v3v3 with &v3v3, then to disable arm_wdt and to enable
i2c4 and its subnodes for PMIC support by Linux. Reconfigure usbotg for
dual role with type-C support if needed.

Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Link: https://lore.kernel.org/r/20250603-stm32mp157f-dk2-v2-7-5be0854a9299@foss.st.com
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
2025-07-04 11:24:12 +02:00

196 lines
3.5 KiB
Text

// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2025 - All Rights Reserved
* Author: Amelie Delaunay <amelie.delaunay@foss.st.com> for STMicroelectronics.
*/
#include "stm32mp15-scmi.dtsi"
/ {
reserved-memory {
optee@de000000 {
reg = <0xde000000 0x2000000>;
no-map;
};
};
arm_wdt: watchdog {
compatible = "arm,smc-wdt";
arm,smc-id = <0xbc000000>;
status = "disabled";
};
};
&adc {
vdd-supply = <&scmi_vdd>;
vdda-supply = <&scmi_vdd>;
};
&cpu0 {
clocks = <&scmi_clk CK_SCMI_MPU>;
};
&cpu1 {
clocks = <&scmi_clk CK_SCMI_MPU>;
};
&cryp1 {
clocks = <&scmi_clk CK_SCMI_CRYP1>;
resets = <&scmi_reset RST_SCMI_CRYP1>;
};
&cs42l51 {
VL-supply = <&scmi_v3v3>;
VD-supply = <&scmi_v1v8_audio>;
VA-supply = <&scmi_v1v8_audio>;
VAHP-supply = <&scmi_v1v8_audio>;
};
&dsi {
phy-dsi-supply = <&scmi_reg18>;
clocks = <&rcc DSI>, <&scmi_clk CK_SCMI_HSE>, <&rcc DSI_PX>;
};
&gpioz {
clocks = <&scmi_clk CK_SCMI_GPIOZ>;
};
&hash1 {
clocks = <&scmi_clk CK_SCMI_HASH1>;
resets = <&scmi_reset RST_SCMI_HASH1>;
};
&i2c1 {
hdmi-transmitter@39 {
iovcc-supply = <&scmi_v3v3_hdmi>;
cvcc12-supply = <&scmi_v1v2_hdmi>;
};
};
&iwdg2 {
clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>;
status = "disabled";
};
&m4_rproc {
/delete-property/ st,syscfg-holdboot;
resets = <&scmi_reset RST_SCMI_MCU>,
<&scmi_reset RST_SCMI_MCU_HOLD_BOOT>;
reset-names = "mcu_rst", "hold_boot";
};
&mdma1 {
resets = <&scmi_reset RST_SCMI_MDMA>;
};
&optee {
interrupt-parent = <&intc>;
interrupts = <GIC_PPI 15 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
};
&pwr_regulators {
vdd-supply = <&scmi_vdd>;
vdd_3v3_usbfs-supply = <&scmi_vdd_usb>;
status = "disabled";
};
&rcc {
compatible = "st,stm32mp1-rcc-secure", "syscon";
clock-names = "hse", "hsi", "csi", "lse", "lsi";
clocks = <&scmi_clk CK_SCMI_HSE>,
<&scmi_clk CK_SCMI_HSI>,
<&scmi_clk CK_SCMI_CSI>,
<&scmi_clk CK_SCMI_LSE>,
<&scmi_clk CK_SCMI_LSI>;
};
&rng1 {
clocks = <&scmi_clk CK_SCMI_RNG1>;
resets = <&scmi_reset RST_SCMI_RNG1>;
};
&rtc {
clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
};
&scmi_reguls {
scmi_vddcore: regulator@3 {
reg = <VOLTD_SCMI_STPMIC1_BUCK1>;
regulator-name = "vddcore";
};
scmi_vdd: regulator@5 {
reg = <VOLTD_SCMI_STPMIC1_BUCK3>;
regulator-name = "vdd";
};
scmi_v3v3: regulator@6 {
reg = <VOLTD_SCMI_STPMIC1_BUCK4>;
regulator-name = "v3v3";
};
scmi_v1v8_audio: regulator@7 {
reg = <VOLTD_SCMI_STPMIC1_LDO1>;
regulator-name = "v1v8_audio";
};
scmi_v3v3_hdmi: regulator@8 {
reg = <VOLTD_SCMI_STPMIC1_LDO2>;
regulator-name = "v3v3_hdmi";
};
scmi_vdd_usb: regulator@a {
reg = <VOLTD_SCMI_STPMIC1_LDO4>;
regulator-name = "vdd_usb";
};
scmi_vdda: regulator@b {
reg = <VOLTD_SCMI_STPMIC1_LDO5>;
regulator-name = "vdda";
};
scmi_v1v2_hdmi: regulator@c {
reg = <VOLTD_SCMI_STPMIC1_LDO6>;
regulator-name = "v1v2_hdmi";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
};
scmi_vbus_otg: regulator@f {
reg = <VOLTD_SCMI_STPMIC1_PWR_SW1>;
regulator-name = "vbus_otg";
};
scmi_vbus_sw: regulator@10 {
reg = <VOLTD_SCMI_STPMIC1_PWR_SW2>;
regulator-name = "vbus_sw";
};
};
&sdmmc1 {
vmmc-supply = <&scmi_v3v3>;
};
&sdmmc3 {
vmmc-supply = <&scmi_v3v3>;
};
&usbh_ehci {
hub@1 {
vdd-supply = <&scmi_v3v3>;
};
};
&usbphyc_port0 {
phy-supply = <&scmi_vdd_usb>;
};
&usbphyc_port1 {
phy-supply = <&scmi_vdd_usb>;
};
&vrefbuf {
vdda-supply = <&scmi_vdd>;
};