Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'genpd-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm

Pull ARM SoC generic power domain driver updates from Ulf Hansson:
"This adds a new subsystem for generic power domain providers in
drivers/genpd and starts moving some of the corresponding code in
there.

We have currently ~60 users of the genpd provider interface, which are
sprinkled across various subsystems. To release some burden from the
soc maintainers (Arnd Bergmann, etc) in particular, but also to gain a
better overall view of what goes on in the area, I will help out with
maintenance"

[ I find the "genpd" name singularly uninformative, so we'll probably
end up moving this driver subsystem somewhere else, but that's still
being discussed - Linus ]

* tag 'genpd-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm: (30 commits)
genpd: ti: Use for_each_node_with_property() simplify code logic
genpd: Explicitly include correct DT includes
genpd: imx: scu-pd: initialize is_off according to HW state
genpd: imx: scu-pd: Suppress bind attrs
genpd: imx: scu-pd: do not power off console if no_console_suspend
genpd: imx: scu-pd: add more PDs
genpd: imx: scu-pd: enlarge PD range
genpd: imx: relocate scu-pd under genpd
MAINTAINERS: adjust file entry in STARFIVE JH71XX PMU CONTROLLER DRIVER
genpd: Makefile: build imx
genpd: move owl-sps-helper.c from drivers/soc
soc: starfive: remove stale Makefile entry
ARM: ux500: Move power-domain driver to the genpd dir
ARM: ux500: Convert power-domain code into a regular platform driver
soc: xilinx: Move power-domain driver to the genpd dir
soc: ti: Mover power-domain drivers to the genpd dir
soc: tegra: Move powergate-bpmp driver to the genpd dir
soc: sunxi: Move power-domain driver to the genpd dir
soc: starfive: Move the power-domain driver to the genpd dir
soc: samsung: Move power-domain driver to the genpd dir
...

+288 -138
+17 -5
MAINTAINERS
··· 1855 1855 F: arch/arm/boot/dts/amlogic/ 1856 1856 F: arch/arm/mach-meson/ 1857 1857 F: arch/arm64/boot/dts/amlogic/ 1858 + F: drivers/genpd/amlogic/ 1858 1859 F: drivers/mmc/host/meson* 1859 1860 F: drivers/phy/amlogic/ 1860 1861 F: drivers/pinctrl/meson/ ··· 1918 1917 F: drivers/clk/clk-apple-nco.c 1919 1918 F: drivers/cpufreq/apple-soc-cpufreq.c 1920 1919 F: drivers/dma/apple-admac.c 1920 + F: drivers/genpd/apple/ 1921 1921 F: drivers/i2c/busses/i2c-pasemi-core.c 1922 1922 F: drivers/i2c/busses/i2c-pasemi-platform.c 1923 1923 F: drivers/iommu/apple-dart.c ··· 2435 2433 F: drivers/clk/clk-nomadik.c 2436 2434 F: drivers/clocksource/clksrc-dbx500-prcmu.c 2437 2435 F: drivers/dma/ste_dma40* 2436 + F: drivers/genpd/st/ste-ux500-pm-domain.c 2438 2437 F: drivers/hwspinlock/u8500_hsem.c 2439 2438 F: drivers/i2c/busses/i2c-nomadik.c 2440 2439 F: drivers/iio/adc/ab8500-gpadc.c ··· 2608 2605 F: arch/arm/mach-shmobile/ 2609 2606 F: arch/arm64/boot/dts/renesas/ 2610 2607 F: arch/riscv/boot/dts/renesas/ 2608 + F: drivers/genpd/renesas/ 2611 2609 F: drivers/soc/renesas/ 2612 2610 F: include/linux/soc/renesas/ 2613 2611 K: \brenesas, ··· 4036 4032 F: drivers/irqchip/irq-bcm63* 4037 4033 F: drivers/irqchip/irq-bcm7* 4038 4034 F: drivers/irqchip/irq-brcmstb* 4039 - F: drivers/soc/bcm/bcm63xx 4035 + F: drivers/genpd/bcm/bcm63xx-power.c 4040 4036 F: include/linux/bcm963xx_nvram.h 4041 4037 F: include/linux/bcm963xx_tag.h 4042 4038 ··· 4258 4254 L: linux-pm@vger.kernel.org 4259 4255 S: Maintained 4260 4256 T: git https://github.com/broadcom/stblinux.git 4261 - F: drivers/soc/bcm/bcm63xx/bcm-pmb.c 4257 + F: drivers/genpd/bcm/bcm-pmb.c 4262 4258 F: include/dt-bindings/soc/bcm-pmb.h 4263 4259 4264 4260 BROADCOM SPECIFIC AMBA DRIVER (BCMA) ··· 8715 8711 F: Documentation/devicetree/bindings/power/power?domain* 8716 8712 F: drivers/base/power/domain*.c 8717 8713 F: include/linux/pm_domain.h 8714 + 8715 + GENERIC PM DOMAIN PROVIDERS 8716 + M: Ulf Hansson <ulf.hansson@linaro.org> 8717 + L: linux-pm@vger.kernel.org 8718 + S: Supported 8719 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm.git 8720 + F: drivers/genpd/ 8718 8721 8719 8722 GENERIC RESISTIVE TOUCHSCREEN ADC DRIVER 8720 8723 M: Eugen Hristev <eugen.hristev@microchip.com> ··· 17622 17611 L: linux-arm-msm@vger.kernel.org 17623 17612 S: Maintained 17624 17613 F: Documentation/devicetree/bindings/power/avs/qcom,cpr.yaml 17625 - F: drivers/soc/qcom/cpr.c 17614 + F: drivers/genpd/qcom/cpr.c 17626 17615 17627 17616 QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096 17628 17617 M: Ilia Lin <ilia.lin@kernel.org> ··· 20405 20394 M: Walker Chen <walker.chen@starfivetech.com> 20406 20395 S: Supported 20407 20396 F: Documentation/devicetree/bindings/power/starfive* 20408 - F: drivers/soc/starfive/jh71xx_pmu.c 20397 + F: drivers/genpd/starfive/jh71xx-pmu.c 20409 20398 F: include/dt-bindings/power/starfive,jh7110-pmu.h 20410 20399 20411 20400 STARFIVE SOC DRIVERS ··· 21221 21210 F: drivers/irqchip/irq-ti-sci-intr.c 21222 21211 F: drivers/reset/reset-ti-sci.c 21223 21212 F: drivers/soc/ti/ti_sci_inta_msi.c 21224 - F: drivers/soc/ti/ti_sci_pm_domains.c 21213 + F: drivers/genpd/ti/ti_sci_pm_domains.c 21225 21214 F: include/dt-bindings/soc/ti,sci_pm_domain.h 21226 21215 F: include/linux/soc/ti/ti_sci_inta_msi.h 21227 21216 F: include/linux/soc/ti/ti_sci_protocol.h ··· 21455 21444 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 21456 21445 S: Maintained 21457 21446 T: git git://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git 21447 + F: drivers/genpd/ti/omap_prm.c 21458 21448 F: drivers/soc/ti/* 21459 21449 21460 21450 TI LM49xxx FAMILY ASoC CODEC DRIVERS
-1
arch/arm/mach-ux500/Makefile
··· 6 6 obj-y := pm.o 7 7 obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o 8 8 obj-$(CONFIG_SMP) += platsmp.o 9 - obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
-5
arch/arm/mach-ux500/cpu-db8500.c
··· 26 26 #include <asm/mach/map.h> 27 27 #include <asm/mach/arch.h> 28 28 29 - #include "pm_domains.h" 30 - 31 29 static int __init ux500_l2x0_unlock(void) 32 30 { 33 31 int i; ··· 113 115 114 116 static void __init u8500_init_machine(void) 115 117 { 116 - /* Initialize ux500 power domains */ 117 - ux500_pm_domains_init(); 118 - 119 118 of_platform_populate(NULL, u8500_local_bus_nodes, 120 119 NULL, NULL); 121 120 }
+20 -5
arch/arm/mach-ux500/pm_domains.c drivers/genpd/st/ste-ux500-pm-domain.c
··· 6 6 * 7 7 * Implements PM domains using the generic PM domain for ux500. 8 8 */ 9 + #include <linux/device.h> 10 + #include <linux/kernel.h> 11 + #include <linux/platform_device.h> 9 12 #include <linux/printk.h> 10 13 #include <linux/slab.h> 11 14 #include <linux/err.h> ··· 16 13 #include <linux/pm_domain.h> 17 14 18 15 #include <dt-bindings/arm/ux500_pm_domains.h> 19 - #include "pm_domains.h" 20 16 21 17 static int pd_power_off(struct generic_pm_domain *domain) 22 18 { ··· 51 49 [DOMAIN_VAPE] = &ux500_pm_domain_vape, 52 50 }; 53 51 54 - static const struct of_device_id ux500_pm_domain_matches[] __initconst = { 52 + static const struct of_device_id ux500_pm_domain_matches[] = { 55 53 { .compatible = "stericsson,ux500-pm-domains", }, 56 54 { }, 57 55 }; 58 56 59 - int __init ux500_pm_domains_init(void) 57 + static int ux500_pm_domains_probe(struct platform_device *pdev) 60 58 { 61 - struct device_node *np; 59 + struct device_node *np = pdev->dev.of_node; 62 60 struct genpd_onecell_data *genpd_data; 63 61 int i; 64 62 65 - np = of_find_matching_node(NULL, ux500_pm_domain_matches); 66 63 if (!np) 67 64 return -ENODEV; 68 65 ··· 78 77 of_genpd_add_provider_onecell(np, genpd_data); 79 78 return 0; 80 79 } 80 + 81 + static struct platform_driver ux500_pm_domains_driver = { 82 + .probe = ux500_pm_domains_probe, 83 + .driver = { 84 + .name = "ux500_pm_domains", 85 + .of_match_table = ux500_pm_domain_matches, 86 + }, 87 + }; 88 + 89 + static int __init ux500_pm_domains_init(void) 90 + { 91 + return platform_driver_register(&ux500_pm_domains_driver); 92 + } 93 + arch_initcall(ux500_pm_domains_init);
-17
arch/arm/mach-ux500/pm_domains.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0-only */ 2 - /* 3 - * Copyright (C) 2014 Linaro Ltd. 4 - * 5 - * Author: Ulf Hansson <ulf.hansson@linaro.org> 6 - */ 7 - 8 - #ifndef __MACH_UX500_PM_DOMAINS_H 9 - #define __MACH_UX500_PM_DOMAINS_H 10 - 11 - #ifdef CONFIG_PM_GENERIC_DOMAINS 12 - extern int __init ux500_pm_domains_init(void); 13 - #else 14 - static inline int ux500_pm_domains_init(void) { return 0; } 15 - #endif 16 - 17 - #endif
+1
drivers/Makefile
··· 45 45 46 46 # SOC specific infrastructure drivers. 47 47 obj-y += soc/ 48 + obj-$(CONFIG_PM_GENERIC_DOMAINS) += genpd/ 48 49 49 50 obj-y += virtio/ 50 51 obj-$(CONFIG_VDPA) += vdpa/
-1
drivers/firmware/imx/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 obj-$(CONFIG_IMX_DSP) += imx-dsp.o 3 3 obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o 4 - obj-$(CONFIG_IMX_SCU_PD) += scu-pd.o
+130 -8
drivers/firmware/imx/scu-pd.c drivers/genpd/imx/scu-pd.c
··· 52 52 */ 53 53 54 54 #include <dt-bindings/firmware/imx/rsrc.h> 55 + #include <linux/console.h> 55 56 #include <linux/firmware/imx/sci.h> 56 57 #include <linux/firmware/imx/svc/rm.h> 57 58 #include <linux/io.h> ··· 70 69 struct imx_sc_rpc_msg hdr; 71 70 u16 resource; 72 71 u8 mode; 72 + } __packed __aligned(4); 73 + 74 + struct req_get_resource_mode { 75 + u16 resource; 76 + }; 77 + 78 + struct resp_get_resource_mode { 79 + u8 mode; 80 + }; 81 + 82 + struct imx_sc_msg_req_get_resource_power_mode { 83 + struct imx_sc_rpc_msg hdr; 84 + union { 85 + struct req_get_resource_mode req; 86 + struct resp_get_resource_mode resp; 87 + } data; 73 88 } __packed __aligned(4); 74 89 75 90 #define IMX_SCU_PD_NAME_SIZE 20 ··· 111 94 }; 112 95 113 96 static int imx_con_rsrc; 97 + 98 + /* Align with the IMX_SC_PM_PW_MODE_[OFF,STBY,LP,ON] macros */ 99 + static const char * const imx_sc_pm_mode[] = { 100 + "IMX_SC_PM_PW_MODE_OFF", 101 + "IMX_SC_PM_PW_MODE_STBY", 102 + "IMX_SC_PM_PW_MODE_LP", 103 + "IMX_SC_PM_PW_MODE_ON" 104 + }; 114 105 115 106 static const struct imx_sc_pd_range imx8qxp_scu_pd_ranges[] = { 116 107 /* LSIO SS */ ··· 146 121 { "audio-pll1", IMX_SC_R_AUDIO_PLL_1, 1, false, 0 }, 147 122 { "audio-clk-0", IMX_SC_R_AUDIO_CLK_0, 1, false, 0 }, 148 123 { "audio-clk-1", IMX_SC_R_AUDIO_CLK_1, 1, false, 0 }, 149 - { "dma0-ch", IMX_SC_R_DMA_0_CH0, 16, true, 0 }, 124 + { "mclk-out-0", IMX_SC_R_MCLK_OUT_0, 1, false, 0 }, 125 + { "mclk-out-1", IMX_SC_R_MCLK_OUT_1, 1, false, 0 }, 126 + { "dma0-ch", IMX_SC_R_DMA_0_CH0, 32, true, 0 }, 150 127 { "dma1-ch", IMX_SC_R_DMA_1_CH0, 16, true, 0 }, 151 - { "dma2-ch", IMX_SC_R_DMA_2_CH0, 5, true, 0 }, 128 + { "dma2-ch", IMX_SC_R_DMA_2_CH0, 32, true, 0 }, 129 + { "dma3-ch", IMX_SC_R_DMA_3_CH0, 32, true, 0 }, 152 130 { "asrc0", IMX_SC_R_ASRC_0, 1, false, 0 }, 153 131 { "asrc1", IMX_SC_R_ASRC_1, 1, false, 0 }, 154 132 { "esai0", IMX_SC_R_ESAI_0, 1, false, 0 }, 133 + { "esai1", IMX_SC_R_ESAI_1, 1, false, 0 }, 155 134 { "spdif0", IMX_SC_R_SPDIF_0, 1, false, 0 }, 156 135 { "spdif1", IMX_SC_R_SPDIF_1, 1, false, 0 }, 157 136 { "sai", IMX_SC_R_SAI_0, 3, true, 0 }, ··· 172 143 /* DMA SS */ 173 144 { "can", IMX_SC_R_CAN_0, 3, true, 0 }, 174 145 { "ftm", IMX_SC_R_FTM_0, 2, true, 0 }, 175 - { "lpi2c", IMX_SC_R_I2C_0, 4, true, 0 }, 146 + { "lpi2c", IMX_SC_R_I2C_0, 5, true, 0 }, 176 147 { "adc", IMX_SC_R_ADC_0, 2, true, 0 }, 177 148 { "lcd", IMX_SC_R_LCD_0, 1, true, 0 }, 149 + { "lcd-pll", IMX_SC_R_ELCDIF_PLL, 1, true, 0 }, 178 150 { "lcd0-pwm", IMX_SC_R_LCD_0_PWM_0, 1, true, 0 }, 179 - { "lpuart", IMX_SC_R_UART_0, 4, true, 0 }, 151 + { "lpuart", IMX_SC_R_UART_0, 5, true, 0 }, 152 + { "sim", IMX_SC_R_EMVSIM_0, 2, true, 0 }, 180 153 { "lpspi", IMX_SC_R_SPI_0, 4, true, 0 }, 181 154 { "irqstr_dsp", IMX_SC_R_IRQSTR_DSP, 1, false, 0 }, 182 155 ··· 194 163 195 164 /* GPU SS */ 196 165 { "gpu0-pid", IMX_SC_R_GPU_0_PID0, 4, true, 0 }, 166 + { "gpu1-pid", IMX_SC_R_GPU_1_PID0, 4, true, 0 }, 167 + 197 168 198 169 /* HSIO SS */ 170 + { "pcie-a", IMX_SC_R_PCIE_A, 1, false, 0 }, 171 + { "serdes-0", IMX_SC_R_SERDES_0, 1, false, 0 }, 199 172 { "pcie-b", IMX_SC_R_PCIE_B, 1, false, 0 }, 200 173 { "serdes-1", IMX_SC_R_SERDES_1, 1, false, 0 }, 174 + { "sata-0", IMX_SC_R_SATA_0, 1, false, 0 }, 201 175 { "hsio-gpio", IMX_SC_R_HSIO_GPIO, 1, false, 0 }, 202 176 203 177 /* MIPI SS */ ··· 222 186 { "lvds1-pwm", IMX_SC_R_LVDS_1_PWM_0, 1, false, 0 }, 223 187 { "lvds1-lpi2c", IMX_SC_R_LVDS_1_I2C_0, 2, true, 0 }, 224 188 189 + { "mipi1", IMX_SC_R_MIPI_1, 1, 0 }, 190 + { "mipi1-pwm0", IMX_SC_R_MIPI_1_PWM_0, 1, 0 }, 191 + { "mipi1-i2c", IMX_SC_R_MIPI_1_I2C_0, 2, 1 }, 192 + { "lvds1", IMX_SC_R_LVDS_1, 1, 0 }, 193 + 225 194 /* DC SS */ 226 195 { "dc0", IMX_SC_R_DC_0, 1, false, 0 }, 227 196 { "dc0-pll", IMX_SC_R_DC_0_PLL_0, 2, true, 0 }, 228 197 { "dc0-video", IMX_SC_R_DC_0_VIDEO0, 2, true, 0 }, 198 + 199 + { "dc1", IMX_SC_R_DC_1, 1, false, 0 }, 200 + { "dc1-pll", IMX_SC_R_DC_1_PLL_0, 2, true, 0 }, 201 + { "dc1-video", IMX_SC_R_DC_1_VIDEO0, 2, true, 0 }, 229 202 230 203 /* CM40 SS */ 231 204 { "cm40-i2c", IMX_SC_R_M4_0_I2C, 1, false, 0 }, ··· 250 205 { "cm41-mu-a1", IMX_SC_R_M4_1_MU_1A, 1, false, 0}, 251 206 { "cm41-lpuart", IMX_SC_R_M4_1_UART, 1, false, 0}, 252 207 208 + /* CM41 SS */ 209 + { "cm41_i2c", IMX_SC_R_M4_1_I2C, 1, false, 0 }, 210 + { "cm41_intmux", IMX_SC_R_M4_1_INTMUX, 1, false, 0 }, 211 + 212 + /* DB SS */ 213 + { "perf", IMX_SC_R_PERF, 1, false, 0}, 214 + 253 215 /* IMAGE SS */ 254 216 { "img-jpegdec-mp", IMX_SC_R_MJPEG_DEC_MP, 1, false, 0 }, 255 217 { "img-jpegdec-s0", IMX_SC_R_MJPEG_DEC_S0, 4, true, 0 }, 256 218 { "img-jpegenc-mp", IMX_SC_R_MJPEG_ENC_MP, 1, false, 0 }, 257 219 { "img-jpegenc-s0", IMX_SC_R_MJPEG_ENC_S0, 4, true, 0 }, 220 + 221 + /* SECO SS */ 222 + { "seco_mu", IMX_SC_R_SECO_MU_2, 3, true, 2}, 223 + 224 + /* V2X SS */ 225 + { "v2x_mu", IMX_SC_R_V2X_MU_0, 2, true, 0}, 226 + { "v2x_mu", IMX_SC_R_V2X_MU_2, 1, true, 2}, 227 + { "v2x_mu", IMX_SC_R_V2X_MU_3, 2, true, 3}, 228 + { "img-pdma", IMX_SC_R_ISI_CH0, 8, true, 0 }, 229 + { "img-csi0", IMX_SC_R_CSI_0, 1, false, 0 }, 230 + { "img-csi0-i2c0", IMX_SC_R_CSI_0_I2C_0, 1, false, 0 }, 231 + { "img-csi0-pwm0", IMX_SC_R_CSI_0_PWM_0, 1, false, 0 }, 232 + { "img-csi1", IMX_SC_R_CSI_1, 1, false, 0 }, 233 + { "img-csi1-i2c0", IMX_SC_R_CSI_1_I2C_0, 1, false, 0 }, 234 + { "img-csi1-pwm0", IMX_SC_R_CSI_1_PWM_0, 1, false, 0 }, 235 + { "img-parallel", IMX_SC_R_PI_0, 1, false, 0 }, 236 + { "img-parallel-i2c0", IMX_SC_R_PI_0_I2C_0, 1, false, 0 }, 237 + { "img-parallel-pwm0", IMX_SC_R_PI_0_PWM_0, 2, true, 0 }, 238 + { "img-parallel-pll", IMX_SC_R_PI_0_PLL, 1, false, 0 }, 239 + 240 + /* HDMI TX SS */ 241 + { "hdmi-tx", IMX_SC_R_HDMI, 1, false, 0}, 242 + { "hdmi-tx-i2s", IMX_SC_R_HDMI_I2S, 1, false, 0}, 243 + { "hdmi-tx-i2c0", IMX_SC_R_HDMI_I2C_0, 1, false, 0}, 244 + { "hdmi-tx-pll0", IMX_SC_R_HDMI_PLL_0, 1, false, 0}, 245 + { "hdmi-tx-pll1", IMX_SC_R_HDMI_PLL_1, 1, false, 0}, 246 + 247 + /* HDMI RX SS */ 248 + { "hdmi-rx", IMX_SC_R_HDMI_RX, 1, false, 0}, 249 + { "hdmi-rx-pwm", IMX_SC_R_HDMI_RX_PWM_0, 1, false, 0}, 250 + { "hdmi-rx-i2c0", IMX_SC_R_HDMI_RX_I2C_0, 1, false, 0}, 251 + { "hdmi-rx-bypass", IMX_SC_R_HDMI_RX_BYPASS, 1, false, 0}, 252 + 253 + /* SECURITY SS */ 254 + { "sec-jr", IMX_SC_R_CAAM_JR2, 2, true, 2}, 255 + 256 + /* BOARD SS */ 257 + { "board", IMX_SC_R_BOARD_R0, 8, true, 0}, 258 258 }; 259 259 260 260 static const struct imx_sc_pd_soc imx8qxp_scu_pd = { ··· 332 242 imx_con_rsrc = specs.args[0]; 333 243 } 334 244 245 + static int imx_sc_get_pd_power(struct device *dev, u32 rsrc) 246 + { 247 + struct imx_sc_msg_req_get_resource_power_mode msg; 248 + struct imx_sc_rpc_msg *hdr = &msg.hdr; 249 + int ret; 250 + 251 + hdr->ver = IMX_SC_RPC_VERSION; 252 + hdr->svc = IMX_SC_RPC_SVC_PM; 253 + hdr->func = IMX_SC_PM_FUNC_GET_RESOURCE_POWER_MODE; 254 + hdr->size = 2; 255 + 256 + msg.data.req.resource = rsrc; 257 + 258 + ret = imx_scu_call_rpc(pm_ipc_handle, &msg, true); 259 + if (ret) 260 + dev_err(dev, "failed to get power resource %d mode, ret %d\n", 261 + rsrc, ret); 262 + 263 + return msg.data.resp.mode; 264 + } 265 + 335 266 static int imx_sc_pd_power(struct generic_pm_domain *domain, bool power_on) 336 267 { 337 268 struct imx_sc_msg_req_set_resource_power_mode msg; ··· 369 258 370 259 msg.resource = pd->rsrc; 371 260 msg.mode = power_on ? IMX_SC_PM_PW_MODE_ON : IMX_SC_PM_PW_MODE_LP; 261 + 262 + /* keep uart console power on for no_console_suspend */ 263 + if (imx_con_rsrc == pd->rsrc && !console_suspend_enabled && !power_on) 264 + return -EBUSY; 372 265 373 266 ret = imx_scu_call_rpc(pm_ipc_handle, &msg, true); 374 267 if (ret) ··· 417 302 const struct imx_sc_pd_range *pd_ranges) 418 303 { 419 304 struct imx_sc_pm_domain *sc_pd; 420 - bool is_off = true; 421 - int ret; 305 + bool is_off; 306 + int mode, ret; 422 307 423 308 if (!imx_sc_rm_is_resource_owned(pm_ipc_handle, pd_ranges->rsrc + idx)) 424 309 return NULL; ··· 439 324 "%s", pd_ranges->name); 440 325 441 326 sc_pd->pd.name = sc_pd->name; 442 - if (imx_con_rsrc == sc_pd->rsrc) { 327 + if (imx_con_rsrc == sc_pd->rsrc) 443 328 sc_pd->pd.flags = GENPD_FLAG_RPM_ALWAYS_ON; 329 + 330 + mode = imx_sc_get_pd_power(dev, pd_ranges->rsrc + idx); 331 + if (mode == IMX_SC_PM_PW_MODE_ON) 444 332 is_off = false; 445 - } 333 + else 334 + is_off = true; 335 + 336 + dev_dbg(dev, "%s : %s\n", sc_pd->name, imx_sc_pm_mode[mode]); 446 337 447 338 if (sc_pd->rsrc >= IMX_SC_R_LAST) { 448 339 dev_warn(dev, "invalid pd %s rsrc id %d found", ··· 539 418 .driver = { 540 419 .name = "imx-scu-pd", 541 420 .of_match_table = imx_sc_pd_match, 421 + .suppress_bind_attrs = true, 542 422 }, 543 423 .probe = imx_sc_pd_probe, 544 424 };
+17
drivers/genpd/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-y += actions/ 3 + obj-y += amlogic/ 4 + obj-y += apple/ 5 + obj-y += bcm/ 6 + obj-y += imx/ 7 + obj-y += mediatek/ 8 + obj-y += qcom/ 9 + obj-y += renesas/ 10 + obj-y += rockchip/ 11 + obj-y += samsung/ 12 + obj-y += st/ 13 + obj-y += starfive/ 14 + obj-y += sunxi/ 15 + obj-y += tegra/ 16 + obj-y += ti/ 17 + obj-y += xilinx/
+3
drivers/genpd/actions/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0+ 2 + obj-$(CONFIG_OWL_PM_DOMAINS_HELPER) += owl-sps-helper.o 3 + obj-$(CONFIG_OWL_PM_DOMAINS) += owl-sps.o
+4
drivers/genpd/amlogic/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_MESON_GX_PM_DOMAINS) += meson-gx-pwrc-vpu.o 3 + obj-$(CONFIG_MESON_EE_PM_DOMAINS) += meson-ee-pwrc.o 4 + obj-$(CONFIG_MESON_SECURE_PM_DOMAINS) += meson-secure-pwrc.o
+2
drivers/genpd/apple/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_APPLE_PMGR_PWRSTATE) += pmgr-pwrstate.o
+5
drivers/genpd/bcm/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_BCM_PMB) += bcm-pmb.o 3 + obj-$(CONFIG_BCM2835_POWER) += bcm2835-power.o 4 + obj-$(CONFIG_BCM63XX_POWER) += bcm63xx-power.o 5 + obj-$(CONFIG_RASPBERRYPI_POWER) += raspberrypi-power.o
+8
drivers/genpd/imx/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o 3 + obj-$(CONFIG_IMX_GPCV2_PM_DOMAINS) += gpcv2.o 4 + obj-$(CONFIG_IMX_SCU_PD) += scu-pd.o 5 + obj-$(CONFIG_IMX8M_BLK_CTRL) += imx8m-blk-ctrl.o 6 + obj-$(CONFIG_IMX8M_BLK_CTRL) += imx8mp-blk-ctrl.o 7 + obj-$(CONFIG_SOC_IMX9) += imx93-pd.o 8 + obj-$(CONFIG_IMX9_BLK_CTRL) += imx93-blk-ctrl.o
+3
drivers/genpd/mediatek/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o 3 + obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o
+4
drivers/genpd/qcom/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + obj-$(CONFIG_QCOM_CPR) += cpr.o 3 + obj-$(CONFIG_QCOM_RPMPD) += rpmpd.o 4 + obj-$(CONFIG_QCOM_RPMHPD) += rpmhpd.o
+30
drivers/genpd/renesas/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + # SoC 3 + obj-$(CONFIG_SYSC_R8A7742) += r8a7742-sysc.o 4 + obj-$(CONFIG_SYSC_R8A7743) += r8a7743-sysc.o 5 + obj-$(CONFIG_SYSC_R8A7745) += r8a7745-sysc.o 6 + obj-$(CONFIG_SYSC_R8A77470) += r8a77470-sysc.o 7 + obj-$(CONFIG_SYSC_R8A774A1) += r8a774a1-sysc.o 8 + obj-$(CONFIG_SYSC_R8A774B1) += r8a774b1-sysc.o 9 + obj-$(CONFIG_SYSC_R8A774C0) += r8a774c0-sysc.o 10 + obj-$(CONFIG_SYSC_R8A774E1) += r8a774e1-sysc.o 11 + obj-$(CONFIG_SYSC_R8A7779) += r8a7779-sysc.o 12 + obj-$(CONFIG_SYSC_R8A7790) += r8a7790-sysc.o 13 + obj-$(CONFIG_SYSC_R8A7791) += r8a7791-sysc.o 14 + obj-$(CONFIG_SYSC_R8A7792) += r8a7792-sysc.o 15 + obj-$(CONFIG_SYSC_R8A7794) += r8a7794-sysc.o 16 + obj-$(CONFIG_SYSC_R8A7795) += r8a7795-sysc.o 17 + obj-$(CONFIG_SYSC_R8A77960) += r8a7796-sysc.o 18 + obj-$(CONFIG_SYSC_R8A77961) += r8a7796-sysc.o 19 + obj-$(CONFIG_SYSC_R8A77965) += r8a77965-sysc.o 20 + obj-$(CONFIG_SYSC_R8A77970) += r8a77970-sysc.o 21 + obj-$(CONFIG_SYSC_R8A77980) += r8a77980-sysc.o 22 + obj-$(CONFIG_SYSC_R8A77990) += r8a77990-sysc.o 23 + obj-$(CONFIG_SYSC_R8A77995) += r8a77995-sysc.o 24 + obj-$(CONFIG_SYSC_R8A779A0) += r8a779a0-sysc.o 25 + obj-$(CONFIG_SYSC_R8A779F0) += r8a779f0-sysc.o 26 + obj-$(CONFIG_SYSC_R8A779G0) += r8a779g0-sysc.o 27 + # Family 28 + obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o 29 + obj-$(CONFIG_SYSC_RCAR_GEN4) += rcar-gen4-sysc.o 30 + obj-$(CONFIG_SYSC_RMOBILE) += rmobile-sysc.o
+2
drivers/genpd/rockchip/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_ROCKCHIP_PM_DOMAINS) += pm-domains.o
+2
drivers/genpd/samsung/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_EXYNOS_PM_DOMAINS) += exynos-pm-domains.o
+2
drivers/genpd/st/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_ARCH_U8500) += ste-ux500-pm-domain.o
+2
drivers/genpd/starfive/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + obj-$(CONFIG_JH71XX_PMU) += jh71xx-pmu.o
+2
drivers/genpd/sunxi/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + obj-$(CONFIG_SUN20I_PPU) += sun20i-ppu.o
+2
drivers/genpd/tegra/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + obj-$(CONFIG_SOC_TEGRA_POWERGATE_BPMP) += powergate-bpmp.o
+3
drivers/genpd/ti/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + obj-$(CONFIG_ARCH_OMAP2PLUS) += omap_prm.o 3 + obj-$(CONFIG_TI_SCI_PM_DOMAINS) += ti_sci_pm_domains.o
+2
drivers/genpd/xilinx/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + obj-$(CONFIG_ZYNQMP_PM_DOMAINS) += zynqmp-pm-domains.o
-2
drivers/soc/Makefile
··· 3 3 # Makefile for the Linux Kernel SOC specific device drivers. 4 4 # 5 5 6 - obj-$(CONFIG_ARCH_ACTIONS) += actions/ 7 6 obj-y += apple/ 8 7 obj-y += aspeed/ 9 8 obj-$(CONFIG_ARCH_AT91) += atmel/ ··· 28 29 obj-y += rockchip/ 29 30 obj-$(CONFIG_SOC_SAMSUNG) += samsung/ 30 31 obj-y += sifive/ 31 - obj-$(CONFIG_SOC_STARFIVE) += starfive/ 32 32 obj-y += sunxi/ 33 33 obj-$(CONFIG_ARCH_TEGRA) += tegra/ 34 34 obj-y += ti/
-4
drivers/soc/actions/Makefile
··· 1 - # SPDX-License-Identifier: GPL-2.0+ 2 - 3 - obj-$(CONFIG_OWL_PM_DOMAINS_HELPER) += owl-sps-helper.o 4 - obj-$(CONFIG_OWL_PM_DOMAINS) += owl-sps.o
drivers/soc/actions/owl-sps-helper.c drivers/genpd/actions/owl-sps-helper.c
drivers/soc/actions/owl-sps.c drivers/genpd/actions/owl-sps.c
-3
drivers/soc/amlogic/Makefile
··· 2 2 obj-$(CONFIG_MESON_CANVAS) += meson-canvas.o 3 3 obj-$(CONFIG_MESON_CLK_MEASURE) += meson-clk-measure.o 4 4 obj-$(CONFIG_MESON_GX_SOCINFO) += meson-gx-socinfo.o 5 - obj-$(CONFIG_MESON_GX_PM_DOMAINS) += meson-gx-pwrc-vpu.o 6 5 obj-$(CONFIG_MESON_MX_SOCINFO) += meson-mx-socinfo.o 7 - obj-$(CONFIG_MESON_EE_PM_DOMAINS) += meson-ee-pwrc.o 8 - obj-$(CONFIG_MESON_SECURE_PM_DOMAINS) += meson-secure-pwrc.o
drivers/soc/amlogic/meson-ee-pwrc.c drivers/genpd/amlogic/meson-ee-pwrc.c
drivers/soc/amlogic/meson-gx-pwrc-vpu.c drivers/genpd/amlogic/meson-gx-pwrc-vpu.c
drivers/soc/amlogic/meson-secure-pwrc.c drivers/genpd/amlogic/meson-secure-pwrc.c
-2
drivers/soc/apple/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 - obj-$(CONFIG_APPLE_PMGR_PWRSTATE) += apple-pmgr-pwrstate.o 3 - 4 2 obj-$(CONFIG_APPLE_RTKIT) += apple-rtkit.o 5 3 apple-rtkit-y = rtkit.o rtkit-crashlog.o 6 4
drivers/soc/apple/apple-pmgr-pwrstate.c drivers/genpd/apple/pmgr-pwrstate.c
+21 -1
drivers/soc/bcm/Kconfig
··· 42 42 43 43 If unsure, say N. 44 44 45 - source "drivers/soc/bcm/bcm63xx/Kconfig" 45 + config BCM_PMB 46 + bool "Broadcom PMB (Power Management Bus) driver" 47 + depends on ARCH_BCMBCA || (COMPILE_TEST && OF) 48 + default ARCH_BCMBCA 49 + select PM_GENERIC_DOMAINS if PM 50 + help 51 + This enables support for the Broadcom's PMB (Power Management Bus) that 52 + is used for disabling and enabling SoC devices. 53 + 54 + if SOC_BCM63XX 55 + 56 + config BCM63XX_POWER 57 + bool "BCM63xx power domain driver" 58 + depends on BMIPS_GENERIC || (COMPILE_TEST && OF) 59 + select PM_GENERIC_DOMAINS if PM 60 + help 61 + This enables support for the BCM63xx power domains controller on 62 + BCM6318, BCM6328, BCM6362 and BCM63268 SoCs. 63 + 64 + endif # SOC_BCM63XX 65 + 46 66 source "drivers/soc/bcm/brcmstb/Kconfig" 47 67 48 68 endmenu
-3
drivers/soc/bcm/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 - obj-$(CONFIG_BCM2835_POWER) += bcm2835-power.o 3 - obj-$(CONFIG_RASPBERRYPI_POWER) += raspberrypi-power.o 4 - obj-y += bcm63xx/ 5 2 obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/
drivers/soc/bcm/bcm2835-power.c drivers/genpd/bcm/bcm2835-power.c
-21
drivers/soc/bcm/bcm63xx/Kconfig
··· 1 - # SPDX-License-Identifier: GPL-2.0-only 2 - if SOC_BCM63XX 3 - 4 - config BCM63XX_POWER 5 - bool "BCM63xx power domain driver" 6 - depends on BMIPS_GENERIC || (COMPILE_TEST && OF) 7 - select PM_GENERIC_DOMAINS if PM 8 - help 9 - This enables support for the BCM63xx power domains controller on 10 - BCM6318, BCM6328, BCM6362 and BCM63268 SoCs. 11 - 12 - endif # SOC_BCM63XX 13 - 14 - config BCM_PMB 15 - bool "Broadcom PMB (Power Management Bus) driver" 16 - depends on ARCH_BCMBCA || (COMPILE_TEST && OF) 17 - default ARCH_BCMBCA 18 - select PM_GENERIC_DOMAINS if PM 19 - help 20 - This enables support for the Broadcom's PMB (Power Management Bus) that 21 - is used for disabling and enabling SoC devices.
-3
drivers/soc/bcm/bcm63xx/Makefile
··· 1 - # SPDX-License-Identifier: GPL-2.0-only 2 - obj-$(CONFIG_BCM63XX_POWER) += bcm63xx-power.o 3 - obj-$(CONFIG_BCM_PMB) += bcm-pmb.o
drivers/soc/bcm/bcm63xx/bcm-pmb.c drivers/genpd/bcm/bcm-pmb.c
drivers/soc/bcm/bcm63xx/bcm63xx-power.c drivers/genpd/bcm/bcm63xx-power.c
drivers/soc/bcm/raspberrypi-power.c drivers/genpd/bcm/raspberrypi-power.c
+1 -6
drivers/soc/imx/Makefile
··· 2 2 ifeq ($(CONFIG_ARM),y) 3 3 obj-$(CONFIG_ARCH_MXC) += soc-imx.o 4 4 endif 5 - obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o 6 - obj-$(CONFIG_IMX_GPCV2_PM_DOMAINS) += gpcv2.o 7 5 obj-$(CONFIG_SOC_IMX8M) += soc-imx8m.o 8 - obj-$(CONFIG_IMX8M_BLK_CTRL) += imx8m-blk-ctrl.o 9 - obj-$(CONFIG_IMX8M_BLK_CTRL) += imx8mp-blk-ctrl.o 10 - obj-$(CONFIG_SOC_IMX9) += imx93-src.o imx93-pd.o 11 - obj-$(CONFIG_IMX9_BLK_CTRL) += imx93-blk-ctrl.o 6 + obj-$(CONFIG_SOC_IMX9) += imx93-src.o
drivers/soc/imx/gpc.c drivers/genpd/imx/gpc.c
drivers/soc/imx/gpcv2.c drivers/genpd/imx/gpcv2.c
drivers/soc/imx/imx8m-blk-ctrl.c drivers/genpd/imx/imx8m-blk-ctrl.c
drivers/soc/imx/imx8mp-blk-ctrl.c drivers/genpd/imx/imx8mp-blk-ctrl.c
drivers/soc/imx/imx93-blk-ctrl.c drivers/genpd/imx/imx93-blk-ctrl.c
drivers/soc/imx/imx93-pd.c drivers/genpd/imx/imx93-pd.c
-2
drivers/soc/mediatek/Makefile
··· 4 4 obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o 5 5 obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o 6 6 obj-$(CONFIG_MTK_REGULATOR_COUPLER) += mtk-regulator-coupler.o 7 - obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o 8 - obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o 9 7 obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o 10 8 obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o 11 9 obj-$(CONFIG_MTK_SVS) += mtk-svs.o
drivers/soc/mediatek/mt6795-pm-domains.h drivers/genpd/mediatek/mt6795-pm-domains.h
drivers/soc/mediatek/mt8167-pm-domains.h drivers/genpd/mediatek/mt8167-pm-domains.h
drivers/soc/mediatek/mt8173-pm-domains.h drivers/genpd/mediatek/mt8173-pm-domains.h
drivers/soc/mediatek/mt8183-pm-domains.h drivers/genpd/mediatek/mt8183-pm-domains.h
drivers/soc/mediatek/mt8186-pm-domains.h drivers/genpd/mediatek/mt8186-pm-domains.h
drivers/soc/mediatek/mt8188-pm-domains.h drivers/genpd/mediatek/mt8188-pm-domains.h
drivers/soc/mediatek/mt8192-pm-domains.h drivers/genpd/mediatek/mt8192-pm-domains.h
drivers/soc/mediatek/mt8195-pm-domains.h drivers/genpd/mediatek/mt8195-pm-domains.h
+1 -1
drivers/soc/mediatek/mtk-pm-domains.c drivers/genpd/mediatek/mtk-pm-domains.c
··· 8 8 #include <linux/io.h> 9 9 #include <linux/iopoll.h> 10 10 #include <linux/mfd/syscon.h> 11 + #include <linux/of.h> 11 12 #include <linux/of_clk.h> 12 - #include <linux/of_device.h> 13 13 #include <linux/platform_device.h> 14 14 #include <linux/pm_domain.h> 15 15 #include <linux/regmap.h>
drivers/soc/mediatek/mtk-pm-domains.h drivers/genpd/mediatek/mtk-pm-domains.h
+1 -1
drivers/soc/mediatek/mtk-scpsys.c drivers/genpd/mediatek/mtk-scpsys.c
··· 7 7 #include <linux/io.h> 8 8 #include <linux/iopoll.h> 9 9 #include <linux/mfd/syscon.h> 10 - #include <linux/of_device.h> 10 + #include <linux/of.h> 11 11 #include <linux/platform_device.h> 12 12 #include <linux/pm_domain.h> 13 13 #include <linux/regulator/consumer.h>
-3
drivers/soc/qcom/Makefile
··· 3 3 obj-$(CONFIG_QCOM_AOSS_QMP) += qcom_aoss.o 4 4 obj-$(CONFIG_QCOM_GENI_SE) += qcom-geni-se.o 5 5 obj-$(CONFIG_QCOM_COMMAND_DB) += cmd-db.o 6 - obj-$(CONFIG_QCOM_CPR) += cpr.o 7 6 obj-$(CONFIG_QCOM_GSBI) += qcom_gsbi.o 8 7 obj-$(CONFIG_QCOM_MDT_LOADER) += mdt_loader.o 9 8 obj-$(CONFIG_QCOM_OCMEM) += ocmem.o ··· 28 29 obj-$(CONFIG_QCOM_WCNSS_CTRL) += wcnss_ctrl.o 29 30 obj-$(CONFIG_QCOM_APR) += apr.o 30 31 obj-$(CONFIG_QCOM_LLCC) += llcc-qcom.o 31 - obj-$(CONFIG_QCOM_RPMHPD) += rpmhpd.o 32 - obj-$(CONFIG_QCOM_RPMPD) += rpmpd.o 33 32 obj-$(CONFIG_QCOM_KRYO_L2_ACCESSORS) += kryo-l2-accessors.o 34 33 obj-$(CONFIG_QCOM_ICC_BWMON) += icc-bwmon.o 35 34 qcom_ice-objs += ice.o
drivers/soc/qcom/cpr.c drivers/genpd/qcom/cpr.c
drivers/soc/qcom/rpmhpd.c drivers/genpd/qcom/rpmhpd.c
drivers/soc/qcom/rpmpd.c drivers/genpd/qcom/rpmpd.c
-27
drivers/soc/renesas/Makefile
··· 3 3 obj-$(CONFIG_SOC_RENESAS) += renesas-soc.o 4 4 5 5 # SoC 6 - obj-$(CONFIG_SYSC_R8A7742) += r8a7742-sysc.o 7 - obj-$(CONFIG_SYSC_R8A7743) += r8a7743-sysc.o 8 - obj-$(CONFIG_SYSC_R8A7745) += r8a7745-sysc.o 9 - obj-$(CONFIG_SYSC_R8A77470) += r8a77470-sysc.o 10 - obj-$(CONFIG_SYSC_R8A774A1) += r8a774a1-sysc.o 11 - obj-$(CONFIG_SYSC_R8A774B1) += r8a774b1-sysc.o 12 - obj-$(CONFIG_SYSC_R8A774C0) += r8a774c0-sysc.o 13 - obj-$(CONFIG_SYSC_R8A774E1) += r8a774e1-sysc.o 14 - obj-$(CONFIG_SYSC_R8A7779) += r8a7779-sysc.o 15 - obj-$(CONFIG_SYSC_R8A7790) += r8a7790-sysc.o 16 - obj-$(CONFIG_SYSC_R8A7791) += r8a7791-sysc.o 17 - obj-$(CONFIG_SYSC_R8A7792) += r8a7792-sysc.o 18 - obj-$(CONFIG_SYSC_R8A7794) += r8a7794-sysc.o 19 - obj-$(CONFIG_SYSC_R8A7795) += r8a7795-sysc.o 20 - obj-$(CONFIG_SYSC_R8A77960) += r8a7796-sysc.o 21 - obj-$(CONFIG_SYSC_R8A77961) += r8a7796-sysc.o 22 - obj-$(CONFIG_SYSC_R8A77965) += r8a77965-sysc.o 23 - obj-$(CONFIG_SYSC_R8A77970) += r8a77970-sysc.o 24 - obj-$(CONFIG_SYSC_R8A77980) += r8a77980-sysc.o 25 - obj-$(CONFIG_SYSC_R8A77990) += r8a77990-sysc.o 26 - obj-$(CONFIG_SYSC_R8A77995) += r8a77995-sysc.o 27 - obj-$(CONFIG_SYSC_R8A779A0) += r8a779a0-sysc.o 28 - obj-$(CONFIG_SYSC_R8A779F0) += r8a779f0-sysc.o 29 - obj-$(CONFIG_SYSC_R8A779G0) += r8a779g0-sysc.o 30 6 ifdef CONFIG_SMP 31 7 obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o 32 8 endif ··· 10 34 # Family 11 35 obj-$(CONFIG_PWC_RZV2M) += pwc-rzv2m.o 12 36 obj-$(CONFIG_RST_RCAR) += rcar-rst.o 13 - obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o 14 - obj-$(CONFIG_SYSC_RCAR_GEN4) += rcar-gen4-sysc.o 15 - obj-$(CONFIG_SYSC_RMOBILE) += rmobile-sysc.o
drivers/soc/renesas/r8a7742-sysc.c drivers/genpd/renesas/r8a7742-sysc.c
drivers/soc/renesas/r8a7743-sysc.c drivers/genpd/renesas/r8a7743-sysc.c
drivers/soc/renesas/r8a7745-sysc.c drivers/genpd/renesas/r8a7745-sysc.c
drivers/soc/renesas/r8a77470-sysc.c drivers/genpd/renesas/r8a77470-sysc.c
drivers/soc/renesas/r8a774a1-sysc.c drivers/genpd/renesas/r8a774a1-sysc.c
drivers/soc/renesas/r8a774b1-sysc.c drivers/genpd/renesas/r8a774b1-sysc.c
drivers/soc/renesas/r8a774c0-sysc.c drivers/genpd/renesas/r8a774c0-sysc.c
drivers/soc/renesas/r8a774e1-sysc.c drivers/genpd/renesas/r8a774e1-sysc.c
drivers/soc/renesas/r8a7779-sysc.c drivers/genpd/renesas/r8a7779-sysc.c
drivers/soc/renesas/r8a7790-sysc.c drivers/genpd/renesas/r8a7790-sysc.c
drivers/soc/renesas/r8a7791-sysc.c drivers/genpd/renesas/r8a7791-sysc.c
drivers/soc/renesas/r8a7792-sysc.c drivers/genpd/renesas/r8a7792-sysc.c
drivers/soc/renesas/r8a7794-sysc.c drivers/genpd/renesas/r8a7794-sysc.c
drivers/soc/renesas/r8a7795-sysc.c drivers/genpd/renesas/r8a7795-sysc.c
drivers/soc/renesas/r8a7796-sysc.c drivers/genpd/renesas/r8a7796-sysc.c
drivers/soc/renesas/r8a77965-sysc.c drivers/genpd/renesas/r8a77965-sysc.c
drivers/soc/renesas/r8a77970-sysc.c drivers/genpd/renesas/r8a77970-sysc.c
drivers/soc/renesas/r8a77980-sysc.c drivers/genpd/renesas/r8a77980-sysc.c
drivers/soc/renesas/r8a77990-sysc.c drivers/genpd/renesas/r8a77990-sysc.c
drivers/soc/renesas/r8a77995-sysc.c drivers/genpd/renesas/r8a77995-sysc.c
drivers/soc/renesas/r8a779a0-sysc.c drivers/genpd/renesas/r8a779a0-sysc.c
drivers/soc/renesas/r8a779f0-sysc.c drivers/genpd/renesas/r8a779f0-sysc.c
drivers/soc/renesas/r8a779g0-sysc.c drivers/genpd/renesas/r8a779g0-sysc.c
drivers/soc/renesas/rcar-gen4-sysc.c drivers/genpd/renesas/rcar-gen4-sysc.c
drivers/soc/renesas/rcar-gen4-sysc.h drivers/genpd/renesas/rcar-gen4-sysc.h
drivers/soc/renesas/rcar-sysc.c drivers/genpd/renesas/rcar-sysc.c
drivers/soc/renesas/rcar-sysc.h drivers/genpd/renesas/rcar-sysc.h
drivers/soc/renesas/rmobile-sysc.c drivers/genpd/renesas/rmobile-sysc.c
-1
drivers/soc/rockchip/Makefile
··· 4 4 # 5 5 obj-$(CONFIG_ROCKCHIP_GRF) += grf.o 6 6 obj-$(CONFIG_ROCKCHIP_IODOMAIN) += io-domain.o 7 - obj-$(CONFIG_ROCKCHIP_PM_DOMAINS) += pm_domains.o 8 7 obj-$(CONFIG_ROCKCHIP_DTPM) += dtpm.o
drivers/soc/rockchip/pm_domains.c drivers/genpd/rockchip/pm-domains.c
-1
drivers/soc/samsung/Makefile
··· 10 10 11 11 obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) += exynos3250-pmu.o exynos4-pmu.o \ 12 12 exynos5250-pmu.o exynos5420-pmu.o 13 - obj-$(CONFIG_EXYNOS_PM_DOMAINS) += pm_domains.o 14 13 obj-$(CONFIG_EXYNOS_REGULATOR_COUPLER) += exynos-regulator-coupler.o 15 14 16 15 obj-$(CONFIG_SAMSUNG_PM_CHECK) += s3c-pm-check.o
drivers/soc/samsung/pm_domains.c drivers/genpd/samsung/exynos-pm-domains.c
-3
drivers/soc/starfive/Makefile
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - 3 - obj-$(CONFIG_JH71XX_PMU) += jh71xx_pmu.o
drivers/soc/starfive/jh71xx_pmu.c drivers/genpd/starfive/jh71xx-pmu.c
-1
drivers/soc/sunxi/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 2 obj-$(CONFIG_SUNXI_MBUS) += sunxi_mbus.o 3 3 obj-$(CONFIG_SUNXI_SRAM) += sunxi_sram.o 4 - obj-$(CONFIG_SUN20I_PPU) += sun20i-ppu.o
+1 -1
drivers/soc/sunxi/sun20i-ppu.c drivers/genpd/sunxi/sun20i-ppu.c
··· 5 5 #include <linux/io.h> 6 6 #include <linux/iopoll.h> 7 7 #include <linux/module.h> 8 - #include <linux/of_device.h> 8 + #include <linux/of.h> 9 9 #include <linux/platform_device.h> 10 10 #include <linux/pm_domain.h> 11 11 #include <linux/reset.h>
-1
drivers/soc/tegra/Makefile
··· 5 5 obj-y += common.o 6 6 obj-$(CONFIG_SOC_TEGRA_FLOWCTRL) += flowctrl.o 7 7 obj-$(CONFIG_SOC_TEGRA_PMC) += pmc.o 8 - obj-$(CONFIG_SOC_TEGRA_POWERGATE_BPMP) += powergate-bpmp.o 9 8 obj-$(CONFIG_SOC_TEGRA20_VOLTAGE_COUPLER) += regulators-tegra20.o 10 9 obj-$(CONFIG_SOC_TEGRA30_VOLTAGE_COUPLER) += regulators-tegra30.o 11 10 obj-$(CONFIG_ARCH_TEGRA_186_SOC) += ari-tegra186.o
drivers/soc/tegra/powergate-bpmp.c drivers/genpd/tegra/powergate-bpmp.c
-2
drivers/soc/ti/Makefile
··· 6 6 knav_qmss-y := knav_qmss_queue.o knav_qmss_acc.o 7 7 obj-$(CONFIG_KEYSTONE_NAVIGATOR_DMA) += knav_dma.o 8 8 obj-$(CONFIG_AMX3_PM) += pm33xx.o 9 - obj-$(CONFIG_ARCH_OMAP2PLUS) += omap_prm.o 10 9 obj-$(CONFIG_WKUP_M3_IPC) += wkup_m3_ipc.o 11 - obj-$(CONFIG_TI_SCI_PM_DOMAINS) += ti_sci_pm_domains.o 12 10 obj-$(CONFIG_TI_SCI_INTA_MSI_DOMAIN) += ti_sci_inta_msi.o 13 11 obj-$(CONFIG_TI_K3_RINGACC) += k3-ringacc.o 14 12 obj-$(CONFIG_TI_K3_SOCINFO) += k3-socinfo.o
drivers/soc/ti/omap_prm.c drivers/genpd/ti/omap_prm.c
+2 -6
drivers/soc/ti/ti_sci_pm_domains.c drivers/genpd/ti/ti_sci_pm_domains.c
··· 119 119 struct device *dev = &pdev->dev; 120 120 struct ti_sci_genpd_provider *pd_provider; 121 121 struct ti_sci_pm_domain *pd; 122 - struct device_node *np = NULL; 122 + struct device_node *np; 123 123 struct of_phandle_args args; 124 124 int ret; 125 125 u32 max_id = 0; ··· 138 138 INIT_LIST_HEAD(&pd_provider->pd_list); 139 139 140 140 /* Find highest device ID used for power domains */ 141 - while (1) { 142 - np = of_find_node_with_property(np, "power-domains"); 143 - if (!np) 144 - break; 145 - 141 + for_each_node_with_property(np, "power-domains") { 146 142 index = 0; 147 143 148 144 while (1) {
-1
drivers/soc/xilinx/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 obj-$(CONFIG_ZYNQMP_POWER) += zynqmp_power.o 3 - obj-$(CONFIG_ZYNQMP_PM_DOMAINS) += zynqmp_pm_domains.o 4 3 obj-$(CONFIG_XLNX_EVENT_MANAGER) += xlnx_event_manager.o
drivers/soc/xilinx/zynqmp_pm_domains.c drivers/genpd/xilinx/zynqmp-pm-domains.c