[PATCH 05/11] ARM: dts: ux500: Add power domains
Linus Walleij
linusw at kernel.org
Wed Jun 17 22:00:51 PDT 2026
Add the actual power domains to all the SoC peripherals.
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
arch/arm/boot/dts/st/ste-dbx5x0.dtsi | 58 ++++++++++++++++++++++++++++++------
1 file changed, 49 insertions(+), 9 deletions(-)
diff --git a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
index d76a65da7011..a6fef302c994 100644
--- a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
@@ -154,6 +154,7 @@ sram at 40020000 {
reg = <0x40020000 0x40000>;
#address-cells = <1>;
#size-cells = <1>;
+ power-domains = <&pm_domains DOMAIN_ESRAM_12>;
ranges = <0 0x40020000 0x40000>;
};
sram at 40060000 {
@@ -162,6 +163,7 @@ sram at 40060000 {
reg = <0x40060000 0x40000>;
#address-cells = <1>;
#size-cells = <1>;
+ power-domains = <&pm_domains DOMAIN_ESRAM_34>;
ranges = <0 0x40060000 0x40000>;
lcla: sram at 20000 {
@@ -181,7 +183,7 @@ lcla: sram at 20000 {
ptm at 801ae000 {
compatible = "arm,coresight-etm3x", "arm,primecell";
reg = <0x801ae000 0x1000>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&prcmu_clk PRCMU_APETRACECLK>, <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "apb_pclk", "atclk";
cpu = <&CPU0>;
@@ -197,7 +199,7 @@ ptm0_out_port: endpoint {
ptm at 801af000 {
compatible = "arm,coresight-etm3x", "arm,primecell";
reg = <0x801af000 0x1000>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&prcmu_clk PRCMU_APETRACECLK>, <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "apb_pclk", "atclk";
cpu = <&CPU1>;
@@ -213,7 +215,7 @@ ptm1_out_port: endpoint {
funnel at 801a6000 {
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
reg = <0x801a6000 0x1000>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&prcmu_clk PRCMU_APETRACECLK>, <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "apb_pclk", "atclk";
out-ports {
@@ -249,6 +251,7 @@ replicator {
compatible = "arm,coresight-static-replicator";
clocks = <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "atclk";
+ power-domains = <&pm_domains DOMAIN_VARM>;
out-ports {
#address-cells = <1>;
@@ -280,7 +283,7 @@ replicator_in_port0: endpoint {
tpiu at 80190000 {
compatible = "arm,coresight-tpiu", "arm,primecell";
reg = <0x80190000 0x1000>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&prcmu_clk PRCMU_APETRACECLK>, <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "apb_pclk", "atclk";
in-ports {
@@ -295,7 +298,7 @@ tpiu_in_port: endpoint {
etb at 801a4000 {
compatible = "arm,coresight-etb10", "arm,primecell";
reg = <0x801a4000 0x1000>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&prcmu_clk PRCMU_APETRACECLK>, <&prcmu_clk PRCMU_APEATCLK>;
clock-names = "apb_pclk", "atclk";
in-ports {
@@ -314,11 +317,13 @@ intc: interrupt-controller at a0411000 {
interrupt-controller;
reg = <0xa0411000 0x1000>,
<0xa0410100 0x100>;
+ power-domains = <&pm_domains DOMAIN_VARM>;
};
scu at a0410000 {
compatible = "arm,cortex-a9-scu";
reg = <0xa0410000 0x100>;
+ power-domains = <&pm_domains DOMAIN_VARM>;
};
/*
@@ -326,6 +331,7 @@ scu at a0410000 {
* and various things like spin tables
*/
backupram at 80150000 {
+ /* This memory is in the VSAFE (always on) power domain */
compatible = "ste,dbx500-backupram";
reg = <0x80150000 0x2000>;
};
@@ -334,6 +340,7 @@ L2: cache-controller {
compatible = "arm,pl310-cache";
reg = <0xa0412000 0x1000>;
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&pm_domains DOMAIN_VARM>;
cache-unified;
cache-level = <2>;
};
@@ -341,6 +348,7 @@ L2: cache-controller {
pmu {
compatible = "arm,cortex-a9-pmu";
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&pm_domains DOMAIN_VARM>;
};
pm_domains: power-controller {
@@ -357,6 +365,7 @@ clocks {
reg = <0x8012f000 0x1000>, <0x8011f000 0x1000>,
<0x8000f000 0x1000>, <0xa03ff000 0x1000>,
<0xa03cf000 0x1000>;
+ power-domains = <&pm_domains DOMAIN_VPLL>; /* CHECKME: correct domain? */
prcmu_clk: prcmu-clock {
#clock-cells = <1>;
@@ -393,7 +402,7 @@ mtu at a03c6000 {
compatible = "st,nomadik-mtu";
reg = <0xa03c6000 0x1000>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-
+ power-domains = <&pm_domains DOMAIN_VAPE>;
clocks = <&prcmu_clk PRCMU_TIMCLK>, <&prcc_pclk 6 6>;
clock-names = "timclk", "apb_pclk";
};
@@ -402,7 +411,7 @@ timer at a0410600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xa0410600 0x20>;
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_HIGH)>;
-
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&smp_twd_clk>;
};
@@ -410,14 +419,15 @@ watchdog at a0410620 {
compatible = "arm,cortex-a9-twd-wdt";
reg = <0xa0410620 0x20>;
interrupts = <GIC_PPI 14 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_HIGH)>;
+ power-domains = <&pm_domains DOMAIN_VARM>;
clocks = <&smp_twd_clk>;
};
rtc at 80154000 {
+ /* This peripheral is in the VSAFE (always on) power domain */
compatible = "arm,pl031", "arm,primecell";
reg = <0x80154000 0x1000>;
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
-
clocks = <&rtc_clk>;
clock-names = "apb_pclk";
};
@@ -435,6 +445,7 @@ gpio0: gpio at 8012e000 {
gpio-bank = <0>;
gpio-ranges = <&pinctrl 0 0 32>;
clocks = <&prcc_pclk 1 9>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio1: gpio at 8012e080 {
@@ -450,6 +461,7 @@ gpio1: gpio at 8012e080 {
gpio-bank = <1>;
gpio-ranges = <&pinctrl 0 32 5>;
clocks = <&prcc_pclk 1 9>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio2: gpio at 8000e000 {
@@ -465,6 +477,7 @@ gpio2: gpio at 8000e000 {
gpio-bank = <2>;
gpio-ranges = <&pinctrl 0 64 32>;
clocks = <&prcc_pclk 3 8>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio3: gpio at 8000e080 {
@@ -480,6 +493,7 @@ gpio3: gpio at 8000e080 {
gpio-bank = <3>;
gpio-ranges = <&pinctrl 0 96 2>;
clocks = <&prcc_pclk 3 8>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio4: gpio at 8000e100 {
@@ -495,6 +509,7 @@ gpio4: gpio at 8000e100 {
gpio-bank = <4>;
gpio-ranges = <&pinctrl 0 128 32>;
clocks = <&prcc_pclk 3 8>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio5: gpio at 8000e180 {
@@ -510,6 +525,7 @@ gpio5: gpio at 8000e180 {
gpio-bank = <5>;
gpio-ranges = <&pinctrl 0 160 12>;
clocks = <&prcc_pclk 3 8>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio6: gpio at 8011e000 {
@@ -525,6 +541,7 @@ gpio6: gpio at 8011e000 {
gpio-bank = <6>;
gpio-ranges = <&pinctrl 0 192 32>;
clocks = <&prcc_pclk 2 11>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio7: gpio at 8011e080 {
@@ -540,6 +557,7 @@ gpio7: gpio at 8011e080 {
gpio-bank = <7>;
gpio-ranges = <&pinctrl 0 224 7>;
clocks = <&prcc_pclk 2 11>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
gpio8: gpio at a03fe000 {
@@ -555,6 +573,7 @@ gpio8: gpio at a03fe000 {
gpio-bank = <8>;
gpio-ranges = <&pinctrl 0 256 12>;
clocks = <&prcc_pclk 5 1>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
pinctrl: pinctrl {
@@ -570,6 +589,7 @@ usb_per5 at a03e0000 {
reg = <0xa03e0000 0x10000>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "mc";
+ power-domains = <&pm_domains DOMAIN_VAPE>;
dr_mode = "otg";
@@ -613,9 +633,11 @@ dma: dma-controller at 801C0000 {
memcpy-channels = <56 57 58 59 60>;
clocks = <&prcmu_clk PRCMU_DMACLK>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
};
prcmu: prcmu at 80157000 {
+ /* This peripheral is in the VSAFE (always on) power domain */
compatible = "stericsson,db8500-prcmu", "syscon";
reg = <0x80157000 0x2000>, <0x801b0000 0x8000>, <0x801b8000 0x1000>;
reg-names = "prcmu", "prcmu-tcpm", "prcmu-tcdm";
@@ -641,6 +663,10 @@ thermal: thermal at 801573c0 {
#thermal-sensor-cells = <0>;
};
+ /*
+ * TODO: Delete these bogus regulators and replace with power
+ * domains.
+ */
db8500-prcmu-regulators {
compatible = "stericsson,db8500-prcmu-regulator";
@@ -932,6 +958,7 @@ serial0: serial at 80120000 {
clocks = <&prcc_kclk 1 0>, <&prcc_pclk 1 0>;
clock-names = "uart", "apb_pclk";
+ power-domains = <&pm_domains DOMAIN_VAPE>;
resets = <&prcc_reset DB8500_PRCC_1 DB8500_PRCC_1_RESET_UART0>;
status = "disabled";
@@ -948,6 +975,7 @@ serial1: serial at 80121000 {
clocks = <&prcc_kclk 1 1>, <&prcc_pclk 1 1>;
clock-names = "uart", "apb_pclk";
+ power-domains = <&pm_domains DOMAIN_VAPE>;
resets = <&prcc_reset DB8500_PRCC_1 DB8500_PRCC_1_RESET_UART1>;
status = "disabled";
@@ -964,6 +992,7 @@ serial2: serial at 80007000 {
clocks = <&prcc_kclk 3 6>, <&prcc_pclk 3 6>;
clock-names = "uart", "apb_pclk";
+ power-domains = <&pm_domains DOMAIN_VAPE>;
resets = <&prcc_reset DB8500_PRCC_3 DB8500_PRCC_3_RESET_UART2>;
status = "disabled";
@@ -1080,7 +1109,9 @@ msp0: msp at 80123000 {
compatible = "stericsson,ux500-msp-i2s";
reg = <0x80123000 0x1000>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ /* TODO: delete and replace with power-domain handling */
v-ape-supply = <&db8500_vape_reg>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
dmas = <&dma 31 0 0x12>, /* Logical - DevToMem - HighPrio */
<&dma 31 0 0x10>; /* Logical - MemToDev - HighPrio */
@@ -1097,7 +1128,9 @@ msp1: msp at 80124000 {
compatible = "stericsson,ux500-msp-i2s";
reg = <0x80124000 0x1000>;
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+ /* TODO: delete and replace with power-domain handling */
v-ape-supply = <&db8500_vape_reg>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
/* This DMA channel only exist on DB8500 v1 */
dmas = <&dma 30 0 0x10>; /* Logical - MemToDev - HighPrio */
@@ -1115,7 +1148,9 @@ msp2: msp at 80117000 {
compatible = "stericsson,ux500-msp-i2s";
reg = <0x80117000 0x1000>;
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+ /* TODO: delete and replace with power-domain handling */
v-ape-supply = <&db8500_vape_reg>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
dmas = <&dma 14 0 0x12>, /* Logical - DevToMem - HighPrio */
<&dma 14 1 0x19>; /* Physical Chan 1 - MemToDev
@@ -1133,7 +1168,9 @@ msp3: msp at 80125000 {
compatible = "stericsson,ux500-msp-i2s";
reg = <0x80125000 0x1000>;
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+ /* TODO: delete and replace with power-domain handling */
v-ape-supply = <&db8500_vape_reg>;
+ power-domains = <&pm_domains DOMAIN_VAPE>;
/* This DMA channel only exist on DB8500 v2 */
dmas = <&dma 30 0 0x12>; /* Logical - DevToMem - HighPrio */
@@ -1175,14 +1212,17 @@ gpu at a0300000 {
"combined";
clocks = <&prcmu_clk PRCMU_ACLK>, <&prcmu_clk PRCMU_SGACLK>;
clock-names = "bus", "core";
+ power-domains = <&pm_domains DOMAIN_SGA>;
+ /* TODO: delete and replace with power-domain handling */
mali-supply = <&db8500_sga_reg>;
- power-domains = <&pm_domains DOMAIN_VAPE>;
};
mcde at a0350000 {
compatible = "ste,mcde";
reg = <0xa0350000 0x1000>;
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&pm_domains DOMAIN_B2R2_MCDE>;
+ /* TODO: delete and replace with power-domain handling */
epod-supply = <&db8500_b2r2_mcde_reg>;
clocks = <&prcmu_clk PRCMU_MCDECLK>, /* Main MCDE clock */
<&prcmu_clk PRCMU_LCDCLK>, /* LCD clock */
--
2.54.0
More information about the linux-arm-kernel
mailing list