[Linux-stm32] [PATCH 6/7] arm64: dts: st: add D1 domain for STM32MP23 family
Patrick Delaunay
patrick.delaunay at foss.st.com
Wed Nov 4 14:55:09 CET 2026
Add the D1 power domain for devices that require the Cortex-A35
cluster to remain in Run1. Keep S2Idle wake-up handling on the
EXTI1/ret_pd path.
Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp231.dtsi | 54 ++++++++++++++++++--------
arch/arm64/boot/dts/st/stm32mp233.dtsi | 1 +
arch/arm64/boot/dts/st/stm32mp235.dtsi | 2 +-
3 files changed, 40 insertions(+), 17 deletions(-)
diff --git a/arch/arm64/boot/dts/st/stm32mp231.dtsi b/arch/arm64/boot/dts/st/stm32mp231.dtsi
index 27231e140fbb..4075a9cf1d36 100644
--- a/arch/arm64/boot/dts/st/stm32mp231.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp231.dtsi
@@ -130,6 +130,12 @@ scmi_vdda18adc: regulator at 7 {
};
};
+ d1_pd: power-domain-d1 {
+ compatible = "st,stm32mp-pm-domain";
+ #power-domain-cells = <0>;
+ power-domains = <&cluster_pd>;
+ };
+
psci {
compatible = "arm,psci-1.0";
method = "smc";
@@ -187,6 +193,7 @@ hpdma: dma-controller at 40400000 {
<GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk CK_SCMI_HPDMA1>;
+ power-domains = <&ret_pd>;
#dma-cells = <3>;
};
@@ -210,6 +217,7 @@ hpdma2: dma-controller at 40410000 {
<GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk CK_SCMI_HPDMA2>;
+ power-domains = <&ret_pd>;
#dma-cells = <3>;
};
@@ -233,6 +241,7 @@ hpdma3: dma-controller at 40420000 {
<GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk CK_SCMI_HPDMA3>;
+ power-domains = <&ret_pd>;
#dma-cells = <3>;
};
@@ -251,7 +260,7 @@ ommanager: ommanager at 40500000 {
<&scmi_reset RST_SCMI_OSPI2>;
reset-names = "omm", "ospi1", "ospi2";
access-controllers = <&rifsc 111>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
#address-cells = <2>;
#size-cells = <1>;
st,syscfg-amcr = <&syscfg 0x2c00 0x7>;
@@ -268,7 +277,7 @@ ospi1: spi at 0 {
resets = <&scmi_reset RST_SCMI_OSPI1>,
<&scmi_reset RST_SCMI_OSPI1DLL>;
access-controllers = <&rifsc 74>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
st,syscfg-dlyb = <&syscfg 0x1000>;
status = "disabled";
};
@@ -284,7 +293,7 @@ ospi2: spi at 1 {
resets = <&scmi_reset RST_SCMI_OSPI2>,
<&scmi_reset RST_SCMI_OSPI2DLL>;
access-controllers = <&rifsc 75>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
st,syscfg-dlyb = <&syscfg 0x1400>;
status = "disabled";
};
@@ -325,7 +334,7 @@ spi2: spi at 400b0000 {
<&hpdma 52 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 23>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -356,7 +365,7 @@ spi3: spi at 400c0000 {
<&hpdma 54 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 24>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -383,6 +392,7 @@ usart2: serial at 400e0000 {
<&hpdma 12 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 32>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -395,6 +405,7 @@ usart3: serial at 400f0000 {
<&hpdma 14 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 33>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -407,6 +418,7 @@ uart4: serial at 40100000 {
<&hpdma 16 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 34>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -419,6 +431,7 @@ uart5: serial at 40110000 {
<&hpdma 18 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 35>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -435,7 +448,7 @@ i2c1: i2c at 40120000 {
<&hpdma 28 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 41>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
i2c-analog-filter;
wakeup-source;
status = "disabled";
@@ -454,7 +467,7 @@ i2c2: i2c at 40130000 {
<&hpdma 31 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 42>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
i2c-analog-filter;
wakeup-source;
status = "disabled";
@@ -473,7 +486,7 @@ i2c7: i2c at 40180000 {
<&hpdma 46 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 47>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
i2c-analog-filter;
wakeup-source;
status = "disabled";
@@ -488,6 +501,7 @@ usart6: serial at 40220000 {
<&hpdma 20 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 36>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -518,7 +532,7 @@ spi1: spi at 40230000 {
<&hpdma 50 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 22>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -534,7 +548,7 @@ spi4: spi at 40240000 {
<&hpdma 56 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 25>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -550,7 +564,7 @@ spi5: spi at 40280000 {
<&hpdma 58 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 26>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -665,6 +679,7 @@ usart1: serial at 40330000 {
<&hpdma 10 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 31>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -711,6 +726,7 @@ uart7: serial at 40370000 {
<&hpdma 22 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 37>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -724,7 +740,7 @@ dcmi: dcmi at 404a0000 {
dmas = <&hpdma 137 0x60 0x00003012>;
dma-names = "tx";
access-controllers = <&rifsc 88>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -750,6 +766,7 @@ spi8: spi at 46020000 {
<&hpdma 172 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 29>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -766,7 +783,7 @@ i2c8: i2c at 46040000 {
<&hpdma 169 0x20 0x3021>;
dma-names = "rx", "tx";
access-controllers = <&rifsc 48>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
i2c-analog-filter;
wakeup-source;
status = "disabled";
@@ -781,7 +798,7 @@ csi: csi at 48020000 {
<&rcc CK_KER_CSIPHY>;
clock-names = "pclk", "txesc", "csi2phy";
access-controllers = <&rifsc 86>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -793,7 +810,7 @@ dcmipp: dcmipp at 48030000 {
clocks = <&rcc CK_BUS_DCMIPP>, <&rcc CK_KER_CSI>;
clock-names = "kclk", "mclk";
access-controllers = <&rifsc 87>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -809,7 +826,7 @@ sdmmc1: mmc at 48220000 {
cap-mmc-highspeed;
max-frequency = <120000000>;
access-controllers = <&rifsc 76>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -825,6 +842,7 @@ sdmmc2: mmc at 48230000 {
cap-mmc-highspeed;
max-frequency = <166000000>;
access-controllers = <&rifsc 77>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -840,6 +858,7 @@ sdmmc3: mmc at 48240000 {
cap-mmc-highspeed;
max-frequency = <166000000>;
access-controllers = <&rifsc 78>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
@@ -869,6 +888,7 @@ ethernet1: ethernet at 482c0000 {
snps,tso;
st,syscon = <&syscfg 0x3000>;
access-controllers = <&rifsc 60>;
+ power-domains = <&d1_pd>;
status = "disabled";
mtl_rx_setup_1: rx-queues-config {
@@ -900,6 +920,7 @@ usbh_ohci: usb at 482e0000 {
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usb2_phy1>;
phy-names = "usb";
+ power-domains = <&d1_pd>;
resets = <&rcc USBH_R>;
status = "disabled";
};
@@ -913,6 +934,7 @@ usbh_ehci: usb at 482f0000 {
interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usb2_phy1>;
phy-names = "usb";
+ power-domains = <&d1_pd>;
resets = <&rcc USBH_R>;
status = "disabled";
};
diff --git a/arch/arm64/boot/dts/st/stm32mp233.dtsi b/arch/arm64/boot/dts/st/stm32mp233.dtsi
index cebefd99906f..3fa91f7f2762 100644
--- a/arch/arm64/boot/dts/st/stm32mp233.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp233.dtsi
@@ -70,6 +70,7 @@ ethernet2: ethernet at 482d0000 {
snps,tso;
st,syscon = <&syscfg 0x3400>;
access-controllers = <&rifsc 61>;
+ power-domains = <&d1_pd>;
status = "disabled";
mtl_rx_setup_2: rx-queues-config {
diff --git a/arch/arm64/boot/dts/st/stm32mp235.dtsi b/arch/arm64/boot/dts/st/stm32mp235.dtsi
index 7a87c344a4fe..561b12ba74eb 100644
--- a/arch/arm64/boot/dts/st/stm32mp235.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp235.dtsi
@@ -20,7 +20,7 @@ lvds: lvds at 48060000 {
clock-names = "pclk", "ref";
resets = <&rcc LVDS_R>;
access-controllers = <&rifsc 84>;
- power-domains = <&cluster_pd>;
+ power-domains = <&d1_pd>;
status = "disabled";
};
--
2.43.0
More information about the Linux-stm32
mailing list