/openbmc/linux/Documentation/devicetree/bindings/power/ |
H A D | power_domain.txt | 1 * Generic PM domains 3 System on chip designs are often divided into multiple PM domains that can be 7 This device tree binding can be used to bind PM domain consumer devices with 8 their PM domains provided by PM domain providers. A PM domain provider can be 9 represented by any node in the device tree and can provide one or more PM 10 domains. A consumer node can refer to the provider by a phandle and a set of 11 phandle arguments (so called PM domain specifiers) of length specified by the 12 #power-domain-cells property in the PM domain provider node. 14 ==PM domain providers== 16 See power-domain.yaml. [all …]
|
H A D | power-domain.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/power/power-domain.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Generic PM domains 10 - Rafael J. Wysocki <rjw@rjwysocki.net> 11 - Kevin Hilman <khilman@kernel.org> 12 - Ulf Hansson <ulf.hansson@linaro.org> 15 System on chip designs are often divided into multiple PM domains that can be 19 This device tree binding can be used to bind PM domain consumer devices with [all …]
|
H A D | renesas,sysc-rmobile.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/power/renesas,sysc-rmobile.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Renesas R-Mobile System Controller 10 - Geert Uytterhoeven <geert+renesas@glider.be> 11 - Magnus Damm <magnus.damm@gmail.com> 14 The R-Mobile System Controller provides the following functions: 15 - Boot mode management, 16 - Reset generation, [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/arm/ux500/ |
H A D | power_domain.txt | 1 * ST-Ericsson UX500 PM Domains 3 UX500 supports multiple PM domains which are used to gate power to one or 6 The implementation of PM domains for UX500 are based upon the generic PM domain 9 ==PM domain providers== 12 - compatible: Must be "stericsson,ux500-pm-domains". 13 - #power-domain-cells : Number of cells in a power domain specifier, must be 1. 17 compatible = "stericsson,ux500-pm-domains"; 18 #power-domain-cells = <1>; 21 ==PM domain consumers== 24 - power-domains: A phandle and PM domain specifier. Below are the list of [all …]
|
/openbmc/linux/drivers/pmdomain/xilinx/ |
H A D | zynqmp-pm-domains.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * ZynqMP Generic PM domain support 5 * Copyright (C) 2015-2019 Xilinx, Inc. 20 #include <linux/firmware/xlnx-zynqmp.h> 27 * struct zynqmp_pm_domain - Wrapper around struct generic_pm_domain 29 * @node_id: PM node ID corresponding to device inside PM domain 30 * @requested: The PM node mapped to the PM domain has been requested 42 * zynqmp_gpd_is_active_wakeup_path() - Check if device is in wakeup source 65 * zynqmp_gpd_power_on() - Power on PM domain 66 * @domain: Generic PM domain [all …]
|
/openbmc/linux/drivers/soc/amlogic/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 30 tristate "Amlogic Meson GX Power Domains driver" 32 depends on PM && OF 37 Say yes to expose Amlogic Meson GX Power Domains as 38 Generic Power Domains. 41 tristate "Amlogic Meson Everything-Else Power Domains driver" 43 depends on PM && OF 48 Say yes to expose Amlogic Meson Everything-Else Power Domains as 49 Generic Power Domains. 52 tristate "Amlogic Meson Secure Power Domains driver" [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/bus/ |
H A D | simple-pm-bus.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/bus/simple-pm-bus.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Simple Power-Managed Bus 10 - Geert Uytterhoeven <geert+renesas@glider.be> 13 A Simple Power-Managed Bus is a transparent bus that doesn't need a real 16 However, its bus controller is part of a PM domain, or under the control 17 of a functional clock. Hence, the bus controller's PM domain and/or 19 on-SoC or externally) to function. [all …]
|
H A D | fsl,imx8qxp-pixel-link-msi-bus.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/bus/fsl,imx8qxp-pixel-link-msi-bus.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Liu Ying <victor.liu@nxp.com> 18 i.MX8qxp pixel link MSI bus is a simple memory-mapped bus. Two input clocks, 35 - $ref: simple-pm-bus.yaml# 37 # We need a select here so we don't match all nodes with 'simple-pm-bus'. 43 - fsl,imx8qxp-display-pixel-link-msi-bus 44 - fsl,imx8qm-display-pixel-link-msi-bus [all …]
|
/openbmc/linux/drivers/base/power/ |
H A D | common.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * drivers/base/power/common.c - Common device power management code. 18 * dev_pm_get_subsys_data - Create or refcount power.subsys_data for device. 31 return -ENOMEM; in dev_pm_get_subsys_data() 33 spin_lock_irq(&dev->power.lock); in dev_pm_get_subsys_data() 35 if (dev->power.subsys_data) { in dev_pm_get_subsys_data() 36 dev->power.subsys_data->refcount++; in dev_pm_get_subsys_data() 38 spin_lock_init(&psd->lock); in dev_pm_get_subsys_data() 39 psd->refcount = 1; in dev_pm_get_subsys_data() 40 dev->power.subsys_data = psd; in dev_pm_get_subsys_data() [all …]
|
H A D | domain.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * drivers/base/power/domain.c - Common code related to device power domains. 7 #define pr_fmt(fmt) "PM: " fmt 35 __routine = genpd->dev_ops.callback; \ 54 mutex_lock(&genpd->mlock); in genpd_lock_mtx() 60 mutex_lock_nested(&genpd->mlock, depth); in genpd_lock_nested_mtx() 65 return mutex_lock_interruptible(&genpd->mlock); in genpd_lock_interruptible_mtx() 70 return mutex_unlock(&genpd->mlock); in genpd_unlock_mtx() 81 __acquires(&genpd->slock) in genpd_lock_spin() 85 spin_lock_irqsave(&genpd->slock, flags); in genpd_lock_spin() [all …]
|
/openbmc/linux/drivers/pmdomain/renesas/ |
H A D | rmobile-sysc.c | 1 // SPDX-License-Identifier: GPL-2.0 9 * based on pm-sh7372.c 19 #include <linux/pm.h> 49 unsigned int mask = BIT(rmobile_pd->bit_shift); in rmobile_pd_power_down() 52 if (rmobile_pd->suspend) { in rmobile_pd_power_down() 53 int ret = rmobile_pd->suspend(); in rmobile_pd_power_down() 59 if (readl(rmobile_pd->base + PSTR) & mask) { in rmobile_pd_power_down() 60 writel(mask, rmobile_pd->base + SPDCR); in rmobile_pd_power_down() 62 readl_poll_timeout_atomic(rmobile_pd->base + SPDCR, val, in rmobile_pd_power_down() 66 pr_debug("%s: Power off, 0x%08x -> PSTR = 0x%08x\n", genpd->name, mask, in rmobile_pd_power_down() [all …]
|
H A D | rcar-gen4-sysc.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * R-Car Gen4 SYSC Power management support 22 #include "rcar-gen4-sysc.h" 26 #define SYSCPONSR(x) (0x800 + ((x) * 0x4)) /* Power-ON Status Register 0 */ 27 #define SYSCPOFFSR(x) (0x808 + ((x) * 0x4)) /* Power-OFF Status Register */ 39 #define PWRON_PWROFF BIT(0) /* Power-ON/OFF request */ 45 #define PDRSR_OFF BIT(0) /* Power-OFF state */ 46 #define PDRSR_ON BIT(4) /* Power-ON state */ 47 #define PDRSR_OFF_STATE BIT(8) /* Processing Power-OFF sequence */ 48 #define PDRSR_ON_STATE BIT(12) /* Processing Power-ON sequence */ [all …]
|
H A D | rcar-sysc.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * R-Car SYSC Power management support 6 * Copyright (C) 2015-2017 Glider bvba 19 #include <linux/soc/renesas/rcar-sysc.h> 21 #include "rcar-sysc.h" 37 * Use WFI to power off, CPG/APMU to resume ARM cores on R-Car Gen2 38 * Use PSCI on R-Car Gen3 57 #define RCAR_PD_ALWAYS_ON 32 /* Always-on power area */ 88 return -EAGAIN; in rcar_sysc_pwr_on_off() 91 iowrite32(BIT(sysc_ch->chan_bit), in rcar_sysc_pwr_on_off() [all …]
|
/openbmc/u-boot/doc/device-tree-bindings/power/ |
H A D | ti,sci-pm-domain.txt | 11 PM Domain Node 13 The PM domain node represents the global PM domain managed by the SYSFW. Because 18 -------------------- 19 - compatible: Must be "ti,sci-pm-domain" 20 - #power-domain-cells: Must be 1 so that an id can be provided in each 24 ---------------- 26 compatible = "ti,am654-system-controller"; 28 k3_pds: power-controller { 29 compatible = "ti,sci-pm-domain"; 30 #power-domain-cells = <1>; [all …]
|
/openbmc/linux/drivers/soc/bcm/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 8 select PM_GENERIC_DOMAINS if PM 11 This enables support for the BCM2835 power domains and reset 12 controller. Any usage of power domains by the Raspberry Pi 20 select PM_GENERIC_DOMAINS if PM 22 This enables support for the RPi power domains which can be enabled 39 Enables drivers for the Broadcom Set-Top Box (STB) series of chips. 49 select PM_GENERIC_DOMAINS if PM 59 select PM_GENERIC_DOMAINS if PM 61 This enables support for the BCM63xx power domains controller on
|
/openbmc/linux/drivers/pmdomain/st/ |
H A D | ste-ux500-pm-domain.c | 1 // SPDX-License-Identifier: GPL-2.0-only 7 * Implements PM domains using the generic PM domain for ux500. 18 #include <dt-bindings/arm/ux500_pm_domains.h> 23 * Handle the gating of the PM domain regulator here. in pd_power_off() 25 * Drivers/subsystems handling devices in the PM domain needs to perform in pd_power_off() 26 * register context save/restore from their respective runtime PM in pd_power_off() 27 * callbacks, to be able to enable PM domain gating/ungating. in pd_power_off() 35 * Handle the ungating of the PM domain regulator here. in pd_power_on() 37 * Drivers/subsystems handling devices in the PM domain needs to perform in pd_power_on() 38 * register context save/restore from their respective runtime PM in pd_power_on() [all …]
|
/openbmc/linux/drivers/pmdomain/bcm/ |
H A D | bcm2835-power.c | 1 // SPDX-License-Identifier: GPL-2.0+ 8 #include <dt-bindings/soc/bcm2835-pm.h> 12 #include <linux/mfd/bcm2835-pm.h> 16 #include <linux/reset-controller.h> 109 #define PM_READ(reg) readl(power->base + (reg)) 110 #define PM_WRITE(reg, val) writel(PM_PASSWORD | (val), power->base + (reg)) 140 /* PM registers. */ 148 struct bcm2835_power_domain domains[BCM2835_POWER_DOMAIN_COUNT]; member 154 void __iomem *base = power->asb; in bcm2835_asb_control() 163 if (power->rpivid_asb) in bcm2835_asb_control() [all …]
|
/openbmc/linux/drivers/pmdomain/mediatek/ |
H A D | mtk-pm-domains.c | 1 // SPDX-License-Identifier: GPL-2.0-only 6 #include <linux/clk-provider.h> 19 #include "mt6795-pm-domains.h" 20 #include "mt8167-pm-domains.h" 21 #include "mt8173-pm-domains.h" 22 #include "mt8183-pm-domains.h" 23 #include "mt8186-pm-domains.h" 24 #include "mt8188-pm-domains.h" 25 #include "mt8192-pm-domains.h" 26 #include "mt8195-pm-domains.h" [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/soc/bcm/ |
H A D | brcm,bcm2835-pm.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/soc/bcm/brcm,bcm2835-pm.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: BCM2835 PM (Power domains, watchdog) 10 The PM block controls power domains and some reset lines, and includes a 14 - Nicolas Saenz Julienne <nsaenz@kernel.org> 17 - $ref: /schemas/watchdog/watchdog.yaml# 22 - enum: 23 - brcm,bcm2835-pm [all …]
|
/openbmc/linux/drivers/soc/xilinx/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0 6 depends on PM && ZYNQMP_FIRMWARE 20 bool "Enable Zynq MPSoC generic PM domains" 22 depends on PM && ZYNQMP_FIRMWARE 25 Say yes to enable device power management through PM domains
|
/openbmc/linux/drivers/cpuidle/ |
H A D | cpuidle-psci-domain.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * PM domains for CPUs via genpd - managed by cpuidle-psci. 22 #include "cpuidle-psci.h" 34 struct genpd_power_state *state = &pd->states[pd->state_idx]; in psci_pd_power_off() 37 if (!state->data) in psci_pd_power_off() 41 return -EBUSY; in psci_pd_power_off() 44 pd_state = state->data; in psci_pd_power_off() 55 int ret = -ENOMEM; in psci_pd_init() 65 pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; in psci_pd_init() 72 pd->power_off = psci_pd_power_off; in psci_pd_init() [all …]
|
/openbmc/linux/Documentation/driver-api/pm/ |
H A D | devices.rst | 1 .. SPDX-License-Identifier: GPL-2.0 10 :Copyright: |copy| 2010-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. 18 management (PM) code is also driver-specific. Most drivers will do very 22 This writeup gives an overview of how drivers interact with system-wide 25 background for the domain-specific work you'd do with any specific driver. 31 Drivers will use one or both of these models to put devices into low-power 36 Drivers can enter low-power states as part of entering system-wide 37 low-power states like "suspend" (also known as "suspend-to-RAM"), or 39 "suspend-to-disk"). 42 by implementing various role-specific suspend and resume methods to [all …]
|
/openbmc/linux/Documentation/trace/ |
H A D | events-power.rst | 8 - Power state switch which reports events related to suspend (S-states), 9 cpuidle (C-states) and cpufreq (P-states) 10 - System clock related changes 11 - Power domains related changes and transitions 22 ----------------- 24 A 'cpu' event class gathers the CPU-related events: cpuidle and 39 Note: the value of '-1' or '4294967295' for state means an exit from the current state, 62 3. Power domains events 64 The power domain events are used for power domains transitions 72 4. PM QoS events [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/usb/ |
H A D | ti,am62-usb.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/usb/ti,am62-usb.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: TI's AM62 wrapper module for the Synopsys USBSS-DRD controller 10 - Aswath Govindraju <a-govindraju@ti.com> 14 const: ti,am62-usb 21 power-domains: 23 PM domain provider node and an args specifier containing 25 Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml [all …]
|
/openbmc/linux/drivers/gpu/drm/nouveau/nvkm/engine/pm/ |
H A D | base.c | 36 nvkm_pm_count_perfdom(struct nvkm_pm *pm) in nvkm_pm_count_perfdom() argument 41 list_for_each_entry(dom, &pm->domains, head) in nvkm_pm_count_perfdom() 53 for (i = 0; i < dom->signal_nr; i++) { in nvkm_perfdom_count_perfsig() 54 if (dom->signal[i].name) in nvkm_perfdom_count_perfsig() 62 nvkm_perfdom_find(struct nvkm_pm *pm, int di) in nvkm_perfdom_find() argument 67 list_for_each_entry(dom, &pm->domains, head) { in nvkm_perfdom_find() 75 nvkm_perfsig_find(struct nvkm_pm *pm, u8 di, u8 si, struct nvkm_perfdom **pdom) in nvkm_perfsig_find() argument 80 dom = nvkm_perfdom_find(pm, di); in nvkm_perfsig_find() 86 if (!dom->signal[si].name) in nvkm_perfsig_find() 88 return &dom->signal[si]; in nvkm_perfsig_find() [all …]
|