Enable PM and PM_GENERIC_DOMAINS for SoCs with PM Domains
Subsystems (5)
Geert Uytterhoeven
maintainercover Enable PM and PM_GENERIC_DOMAINS for SoCs with PM Domains
Hi Simon, Magnus,
All supported Renesas ARM SoCs (except for Emma Mobile EV2) have clock domains. Some SoCs also have power domains. To ensure proper operation of on-SoC modules, module clocks must be ungated, and power domains must be powered up when needed.
Currently the user can choose to build a kernel with power management enabled or disabled:
- If CONFIG_PM=y, power domains and/or module clocks are handled dynamically by Runtime PM and the generic power domain.
- If CONFIG_PM=n, power domains are assumed to be powered up by reset state or by the boot loader, and module clocks are handled by the legacy clock domain on driver (un)bind.
The latter is implemented using a platform bus notifier, which applies not only to all on-SoC devices, but to all platform devices present in the system.
To remove the dependency on implicit assumptions, and to get rid of the peculiarities of the legacy clock domain, enable CONFIG_PM and CONFIG_PM_GENERIC_DOMAINS unconditionally, for all Renesas ARM SoCs with clock and/or power domains.
Patches:
- Patches 1 and 2 enable PM and PM_GENERIC_DOMAINS,
- Patch 3 removes the now unused legacy clock domain code for Renesas ARM SoCs,
- Patch 4 relieves you from maintaining drivers/sh/, which is no longer used on Renesas ARM SoCs, and returns it to the SuperH people.
Notes:
- This does cause an increase in kernel size. Given bloat-o-meter reports a modest increase of 26 KiB for an RZ/A1H kernel, this should not be a problem, even when used on RZ/A1H with XIP and internal RAM only.
- Patch 3 does break booting R-Car Gen2 boards using pre-v4.3 DTSes that don't have power-domains properties,
- Patch 3 may unbreak SuperH-based ARCH_SHMOBILE platforms, which were probably broken since v4.4 by commit 0ba58de231066e47 ("drivers: sh:
Get rid of CONFIG_ARCH_SHMOBILE_MULTI"),
- Currently CONFIG_PM=n doesn't work anyway on r8a7795 as "drivers:
sh: Handle PM_GENERIC_DOMAINS_OF=n with new r8a7795 CPG/MSSR driver" isn't upstream.
For your convenience, I've also pushed this series togit://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git#topic/mandatory-pm-v1
Thanks for your comments!
Geert Uytterhoeven (4):
ARM: shmobile: Enable PM and PM_GENERIC_DOMAINS for SoCs with PM
Domains
arm64: renesas: Enable PM and PM_GENERIC_DOMAINS for SoCs with PM
Domains
drivers: sh: Stop using the legacy clock domain on ARM
MAINTAINERS: Drop drivers/sh/ for Renesas ARM
MAINTAINERS | 1 - arch/arm/mach-shmobile/Kconfig | 13 ++++++++----- arch/arm64/Kconfig.platforms | 3 ++- drivers/Makefile | 1 - drivers/sh/pm_runtime.c | 9 --------- 5 files changed, 10 insertions(+), 17 deletions(-)
Signature · 12 lines
1.9.1
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 1/4 ARM: shmobile: Enable PM and PM_GENERIC_DOMAINS for SoCs with PM Domains
All supported Renesas ARM SoCs (except for Emma Mobile EV2) have clock domains. Some SoCs also have power domains. To ensure proper operation of on-SoC modules, module clocks must be ungated, and power domains must be powered up when needed.
Currently the user can choose to build a kernel with power management enabled or disabled:
- If CONFIG_PM=y, power domains and/or module clocks are handled dynamically by Runtime PM and the generic power domain.
- If CONFIG_PM=n, power domains are assumed to be powered up by reset state or by the boot loader, and module clocks are handled by the legacy clock domain on driver (un)bind.
The latter is implemented using a platform bus notifier, which applies not only to all on-SoC devices, but to all platform devices present in the system.
To remove the dependency on implicit assumptions, and to get rid of the peculiarities of the legacy clock domain, enable CONFIG_PM and CONFIG_PM_GENERIC_DOMAINS unconditionally, for all Renesas ARM SoCs with clock and/or power domains.
This does cause an increase in kernel size. Given bloat-o-meter reports a modest increase of 26 KiB for an RZ/A1H kernel, this should not be a problem, even when used on RZ/A1H with XIP and internal RAM only.
--- arch/arm/mach-shmobile/Kconfig | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
arch/arm/mach-shmobile/Kconfig +8 -5
@@ -6,28 +6,30 @@ config ARCH_SHMOBILE_MULTI config PM_RCAR bool - select PM_GENERIC_DOMAINS if PM + select PM + select PM_GENERIC_DOMAINS config PM_RMOBILE bool + select PM select PM_GENERIC_DOMAINS config ARCH_RCAR_GEN1 bool - select PM_RCAR if PM || SMP + select PM_RCAR select RENESAS_INTC_IRQPIN select SYS_SUPPORTS_SH_TMU config ARCH_RCAR_GEN2 bool - select PM_RCAR if PM || SMP + select PM_RCAR select RENESAS_IRQC select SYS_SUPPORTS_SH_CMT select PCI_DOMAINS if PCI config ARCH_RMOBILE bool - select PM_RMOBILE if PM + select PM_RMOBILE select SYS_SUPPORTS_SH_CMT select SYS_SUPPORTS_SH_TMU
@@ -55,7 +57,8 @@ config ARCH_EMEV2 config ARCH_R7S72100 bool "RZ/A1H (R7S72100)" - select PM_GENERIC_DOMAINS if PM + select PM + select PM_GENERIC_DOMAINS select SYS_SUPPORTS_SH_MTU2 config ARCH_R8A73A4
Signature · 1 line
1.9.1
Geert Uytterhoeven
maintainerPATCH 2/4 arm64: renesas: Enable PM and PM_GENERIC_DOMAINS for SoCs with PM Domains
In reply to Geert UytterhoevenAll supported Renesas ARM64 SoCs have clock and power domains. To ensure proper operation of on-SoC modules, module clocks must be ungated, and power domains must be powered up when needed.
Currently the user can choose to build a kernel with power management enabled or disabled:
- If CONFIG_PM=y, power domains and/or module clocks are handled dynamically by Runtime PM and the generic power domain.
- If CONFIG_PM=n, power domains are assumed to be powered up by reset state or by the boot loader, and module clocks are handled by the legacy clock domain on driver (un)bind.
The latter is implemented using a platform bus notifier, which applies not only to all on-SoC devices, but to all platform devices present in the system.
To remove the dependency on implicit assumptions, and to get rid of the peculiarities of the legacy clock domain, enable CONFIG_PM and CONFIG_PM_GENERIC_DOMAINS unconditionally.
--- arch/arm64/Kconfig.platforms | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm64/Kconfig.platforms +2 -1
@@ -76,7 +76,8 @@ config ARCH_RENESAS bool "Renesas SoC Platforms" select ARCH_SHMOBILE select PINCTRL - select PM_GENERIC_DOMAINS if PM + select PM + select PM_GENERIC_DOMAINS help This enables support for the ARMv8 based Renesas SoCs.
Signature · 1 line
1.9.1
Geert Uytterhoeven
maintainerPATCH 3/4 drivers: sh: Stop using the legacy clock domain on ARM
In reply to Geert UytterhoevenNow CONFIG_PM and CONFIG_PM_GENERIC_DOMAINS are enabled unconditionally for Renesas ARM-based SoCs, the legacy clock domain is no longer used on these SoCs.
Remove the related support code, and stop entering drivers/sh/ on ARM.
---
Notes:
- This does break booting R-Car Gen2 boards using pre-v4.3 DTSes that don't have power-domains properties,
- This may unbreak SuperH-based ARCH_SHMOBILE platforms, which were probably broken since v4.4 by commit 0ba58de231066e47 ("drivers: sh:
Get rid of CONFIG_ARCH_SHMOBILE_MULTI").
--- drivers/Makefile | 1 - drivers/sh/pm_runtime.c | 9 --------- 2 files changed, 10 deletions(-)
drivers/Makefile +0 -1
@@ -127,7 +127,6 @@ obj-$(CONFIG_SGI_SN) += sn/ obj-y += firmware/ obj-$(CONFIG_CRYPTO) += crypto/ obj-$(CONFIG_SUPERH) += sh/ -obj-$(CONFIG_ARCH_SHMOBILE) += sh/ ifndef CONFIG_ARCH_USES_GETTIMEOFFSET obj-y += clocksource/ endif
drivers/sh/pm_runtime.c +0 -9
@@ -34,15 +34,6 @@ static struct pm_clk_notifier_block platform_bus_notifier = {static int __init sh_pm_runtime_init (void ) { -if (IS_ENABLED (CONFIG_ARCH_SHMOBILE )) { -if (!of_find_compatible_node (NULL ,NULL , -"renesas,cpg-mstp-clocks" )) -return 0 ; -if (IS_ENABLED (CONFIG_PM_GENERIC_DOMAINS_OF ) && -of_find_node_with_property (NULL ,"#power-domain-cells" )) -return 0 ; - } -pm_clk_add_notifier (&platform_bus_type, &platform_bus_notifier);return 0 ; }
Signature · 1 line
1.9.1
Geert Uytterhoeven
maintainerPATCH 4/4 MAINTAINERS: Drop drivers/sh/ for Renesas ARM
In reply to Geert UytterhoevenNone of the code under drivers/sh/ is used anymore on Renesas ARM.
--- MAINTAINERS | 1 - 1 file changed, 1 deletion(-)
MAINTAINERS +0 -1
@@ -1558,7 +1558,6 @@ F: arch/arm/boot/dts/sh* F: arch/arm/configs/shmobile_defconfig F: arch/arm/include/debug/renesas-scif.S F: arch/arm/mach-shmobile/ -F: drivers/sh/ ARM/SOCFPGA ARCHITECTURE M: Dinh Nguyen <[email protected]>
Signature · 1 line
1.9.1
cover Enable PM and PM_GENERIC_DOMAINS for SoCs with PM Domains
In reply to Geert UytterhoevenQuoted 48 lines · Geert Uytterhoeven
Hi Simon, Magnus,
All supported Renesas ARM SoCs (except for Emma Mobile EV2) have clock domains. Some SoCs also have power domains. To ensure proper operation of on-SoC modules, module clocks must be ungated, and power domains must be powered up when needed.
Currently the user can choose to build a kernel with power management enabled or disabled:
- IfCONFIG_PM=y, power domains and/or module clocks are handled dynamically by Runtime PM and the generic power domain.
- IfCONFIG_PM=n, power domains are assumed to be powered up by reset state or by the boot loader, and module clocks are handled by the legacy clock domain on driver (un)bind.
The latter is implemented using a platform bus notifier, which applies not only to all on-SoC devices, but to all platform devices present in the system.To remove the dependency on implicit assumptions, and to get rid of the peculiarities of the legacy clock domain, enable
CONFIG_PMandCONFIG_PM_GENERIC_DOMAINSunconditionally, for all Renesas ARM SoCs with clock and/or power domains.Patches:
- Patches 1 and 2 enable PM andPM_GENERIC_DOMAINS,
- Patch 3 removes the now unused legacy clock domain code for Renesas ARM SoCs,
- Patch 4 relieves you from maintainingdrivers/sh/, which is no longer used on Renesas ARM SoCs, and returns it to the SuperH people.Notes:
- This does cause an increase in kernel size. Given bloat-o-meter reports a modest increase of 26 KiB for an RZ/A1H kernel, this should not be a problem, even when used on RZ/A1H with XIP and internal RAM only.
- Patch 3 does break booting R-Car Gen2 boards using pre-v4.3 DTSes that don't have power-domains properties,
- Patch 3 may unbreak SuperH-basedARCH_SHMOBILEplatforms, which were probably broken since v4.4 by commit0ba58de231066e47("drivers: sh:
Get rid ofCONFIG_ARCH_SHMOBILE_MULTI"),
- CurrentlyCONFIG_PM=ndoesn't work anyway on r8a7795 as "drivers:
sh: Handle PM_GENERIC_DOMAINS_OF=n with new r8a7795 CPG/MSSR driver" isn't upstream.For your convenience, I've also pushed this series to
git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git#topic/mandatory-pm-v1
Quoted 7 lines
Thanks for your comments!
Geert Uytterhoeven (4):
ARM: shmobile: Enable PM andPM_GENERIC_DOMAINSfor SoCs with PM
Domains
arm64: renesas: Enable PM andPM_GENERIC_DOMAINSfor SoCs with PM
Domains
Thanks, I have tentatively queued up the above two patches for v4.6.
With regards to the remaining two patches, I propose deferring them for a few releases so that we can shake out any regressions that may occur before making a compatibility change.
Quoted 9 lines
drivers: sh: Stop using the legacy clock domain on ARM
MAINTAINERS: Dropdrivers/sh/for Renesas ARMMAINTAINERS | 1 - arch/arm/mach-shmobile/Kconfig | 13 ++++++++----- arch/arm64/Kconfig.platforms | 3 ++- drivers/Makefile | 1 - drivers/sh/pm_runtime.c | 9 --------- 5 files changed, 10 insertions(+), 17 deletions(-)