| /linux/Documentation/admin-guide/pm/ |
| H A D | suspend-flows.rst | 1 .. SPDX-License-Identifier: GPL-2.0 5 System Suspend Code Flows 12 At least one global system-wide transition needs to be carried out for the 13 system to get from the working state into one of the supported 14 :doc:`sleep states <sleep-states>`. Hibernation requires more than one 15 transition to occur for this purpose, but the other sleep states, commonly 16 referred to as *system-wide suspend* (or simply *system suspend*) states, need 20 the target sleep state is referred to as *system suspend* too (in the majority 23 working state is referred to as *system resume*. 25 The kernel code flows associated with the suspend and resume transitions for [all …]
|
| H A D | sleep-states.rst | 1 .. SPDX-License-Identifier: GPL-2.0 13 Sleep states are global low-power states of the entire system in which user 22 the Linux kernel can support up to four system sleep states, including 23 hibernation and up to three variants of system suspend. The sleep states that 28 Suspend-to-Idle section in Sleep States That Can Be Supported 29 --------------- 31 This is a generic, pure software, light-weight variant of system suspend (also 32 referred to as S2I or S2Idle). It allows more energy to be saved relative to 33 runtime idle by freezing user space, suspending the timekeeping and putting all 34 I/O devices into low-power states (possibly lower-power than available in the [all …]
|
| /linux/Documentation/devicetree/bindings/cpu/ |
| H A D | idle-states.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/cpu/idle-states.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Idle states 10 - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 11 - Anup Patel <anup@brainfault.org> 15 1 - Introduction 18 ARM and RISC-V systems contain HW capable of managing power consumption 19 dynamically, where cores can be put in different low-power states (ranging [all …]
|
| /linux/Documentation/driver-api/usb/ |
| H A D | power-management.rst | 1 .. _usb-power-management: 7 :Date: Last-updated: February 2014 11 --------- 14 * When is a USB device idle? 17 * Changing the default idle-delay time 31 ------------------------- 35 component is ``suspended`` it is in a nonfunctional low-power state; it 37 ``resumed`` (returned to a functional full-power state) when the kernel 38 needs to use it. (There also are forms of PM in which components are 44 the system, we speak of it as a "system suspend". When a particular [all …]
|
| /linux/Documentation/devicetree/bindings/arm/ |
| H A D | psci.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 15 processors") can be used by Linux to initiate various CPU-centric power 18 Issue A of the specification describes functions for CPU suspend, hotplug 21 Functions are invoked by trapping to the privilege level of the PSCI 23 in a manner similar to that specified by AAPCS: 25 r0 => 32-bit Function ID / return value 26 {r1 - r3} => Parameters [all …]
|
| /linux/kernel/power/ |
| H A D | suspend.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * kernel/power/suspend.c - Suspend to RAM and standby functionality. 26 #include <linux/suspend.h> 66 * pm_suspend_default_s2idle - Check if suspend-to-idle is the default suspend. 68 * Return 'true' if suspend-to-idle has been selected as the default system 69 * suspend method. 100 * The s2idle_lock must be acquired before the pending wakeup check to in s2idle_enter() 112 /* Push all the CPUs into the idle loop. */ in s2idle_enter() 114 /* Make the current CPU wait so it can enter the idle loop too. */ in s2idle_enter() 119 * Kick all CPUs to ensure that they resume their timers and restore in s2idle_enter() [all …]
|
| /linux/Documentation/power/ |
| H A D | suspend-and-interrupts.rst | 2 System Suspend and Device Interrupts 10 ----------------------------------- 13 suspend after the "late" phase of suspending devices (that is, after all of the 14 ->prepare, ->suspend and ->suspend_late callbacks have been executed for all 17 The rationale for doing so is that after the "late" phase of device suspend 19 trigger and if any devices have not been suspended properly yet, it is better to 23 In some cases they would attempt to access, for example, memory address spaces 24 of suspended devices and cause unpredictable behavior to ensue as a result. 25 Unfortunately, such problems are very difficult to debug and the introduction 26 of suspend_device_irqs(), along with the "noirq" phase of device suspend and [all …]
|
| H A D | runtime_pm.rst | 5 (C) 2009-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. 18 put their PM-related work items. It is strongly recommended that pm_wq be 19 used for queuing all work items related to runtime PM, because this allows 20 them to be synchronized with system-wide power transitions (suspend to RAM, 34 device drivers are encouraged to use these functions. 53 The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks 57 1. PM domain of the device, if the device's PM domain object, dev->pm_domain, 60 2. Device type of the device, if both dev->type and dev->type->pm are present. 62 3. Device class of the device, if both dev->class and dev->class->pm are 65 4. Bus type of the device, if both dev->bus and dev->bus->pm are present. [all …]
|
| /linux/Documentation/devicetree/bindings/mmc/ |
| H A D | ti-omap-hsmmc.txt | 10 -------------------- 11 - compatible: 12 Should be "ti,omap2-hsmmc", for OMAP2 controllers 13 Should be "ti,omap3-hsmmc", for OMAP3 controllers 14 Should be "ti,omap3-pre-es3-hsmmc" for OMAP3 controllers pre ES3.0 15 Should be "ti,omap4-hsmmc", for OMAP4 controllers 16 Should be "ti,am33xx-hsmmc", for AM335x controllers 17 Should be "ti,k2g-hsmmc", "ti,omap4-hsmmc" for 66AK2G controllers. 20 --------------------------------- 22 - ti,hwmods: Must be "mmc<n>", n is controller instance starting 1. [all …]
|
| /linux/drivers/cpuidle/ |
| H A D | cpuidle-psci.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * PSCI CPU idle driver. 30 #include "cpuidle-psci.h" 54 ds->pd = pd; in psci_set_domain_state() 55 ds->state_idx = state_idx; in psci_set_domain_state() 56 ds->state = state; in psci_set_domain_state() 69 u32 *states = data->psci_states; in __psci_enter_domain_idle_state() 70 struct device *pd_dev = data->dev; in __psci_enter_domain_idle_state() 77 return -1; in __psci_enter_domain_idle_state() 79 /* Do runtime PM to manage a hierarchical CPU toplogy. */ in __psci_enter_domain_idle_state() [all …]
|
| H A D | cpuidle-riscv-sbi.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * RISC-V SBI CPU idle driver. 9 #define pr_fmt(fmt) "cpuidle-riscv-sbi: " fmt 27 #include <asm/suspend.h> 52 data->available = true; in sbi_set_domain_state() 53 data->state = state; in sbi_set_domain_state() 60 return data->state; in sbi_get_domain_state() 67 data->available = false; in sbi_clear_domain_state() 74 return data->available; in sbi_is_domain_state_available() 95 u32 *states = data->states; in __sbi_enter_domain_idle_state() [all …]
|
| H A D | Kconfig.arm | 1 # SPDX-License-Identifier: GPL-2.0-only 3 # ARM CPU Idle drivers 6 bool "Generic ARM CPU idle Driver" 11 Select this to enable generic cpuidle driver for ARM. 12 It provides a generic idle driver whose idle states are configured 13 at run-time through DT nodes. The CPUidle suspend backend is 14 initialized by calling the CPU operations init idle hook 18 bool "PSCI CPU idle Driver" 23 Select this to enable PSCI firmware based CPUidle driver for ARM. 24 It provides an idle driver that is capable of detecting and [all …]
|
| /linux/arch/x86/kernel/ |
| H A D | apm_32.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* -*- linux-c -*- 4 * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au) 10 * Minor enhancements and updates (to the patch set) for 1.3.x 13 * Make /proc/apm easy to format (bump driver version) 16 * (Thanks to Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de>) 43 * 1.1: support user-space standby and suspend, power off after system 46 * is only incorrect by 30-60mS (vs. 1S previously) (Gabor J. Toth 48 * screen-blanking and gpm (Stephen Rothwell); Linux 1.99.4 49 * 1.2a:Simple change to stop mysterious bug reports with SMP also added [all …]
|
| /linux/arch/powerpc/platforms/44x/ |
| H A D | cpm.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 8 * Based on arch/powerpc/platforms/44x/idle.c: 16 * See file CREDITS for list of people who contributed to this 24 #include <linux/suspend.h> 26 #include <asm/dcr-native.h> 43 unsigned int suspend; member 64 * unconditionally put to sleep when the corresponding CPM bit is in cpm_set() 66 * put to sleep, they will. Here we do not verify, we just in cpm_set() 67 * set them and expect them to eventually go off when they can. in cpm_set() 72 /* return old state, to restore later if needed */ in cpm_set() [all …]
|
| /linux/kernel/sched/ |
| H A D | idle.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Generic entry points for the idle threads and 4 * implementation of the idle task scheduling class. 6 * (NOTE: these are not related to SCHED_IDLE batch scheduled 10 #include <linux/suspend.h> 19 * sched_idle_set_state - Record idle state for the current CPU. 20 * @idle_state: State to record. 34 cpu_idle_force_poll--; in cpu_idle_poll_ctrl() 109 * default_idle_call - Default CPU idle routine. 111 * To use when the cpuidle framework cannot be used. [all …]
|
| /linux/Documentation/devicetree/bindings/powerpc/4xx/ |
| H A D | cpm.txt | 4 - compatible : compatible list, currently only "ibm,cpm" 5 - dcr-access-method : "native" 6 - dcr-reg : < DCR register range > 9 - er-offset : All 4xx SoCs with a CPM controller have 15 er-offset = <1>. 16 - unused-units : specifier consist of one cell. For each 18 in CPM will be set to turn off unused 20 - idle-doze : specifier consist of one cell. For each 22 in CPM will be set to turn off unused 24 - standby : specifier consist of one cell. For each [all …]
|
| /linux/Documentation/devicetree/bindings/regulator/ |
| H A D | rohm,bd71828-regulator.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/regulator/rohm,bd71828-regulator.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Matti Vaittinen <mazziesaccount@gmail.com> 14 see Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml. 16 The regulator controller is represented as a sub-node of the PMIC node 19 Regulator nodes should be named to BUCK_<number> and LDO_<number>. 25 "^LDO[1-7]$": 32 regulator-name: [all …]
|
| /linux/include/linux/mfd/ |
| H A D | rohm-generic.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 40 * struct rohm_dvs_config - dynamic voltage scaling register descriptions 42 * @level_map: bitmap representing supported run-levels for this 47 * @idle_reg: register address for regulator config at 'idle' state 48 * @idle_mask: value mask for regulator voltages at 'idle' state 49 * @idle_on_mask: enable mask for regulator at 'idle' state 50 * @suspend_reg: register address for regulator config at 'suspend' state 51 * @suspend_mask: value mask for regulator voltages at 'suspend' state 52 * @suspend_on_mask: enable mask for regulator at 'suspend' state 58 * system states. This is used to correctly configure the PMIC at startup
|
| /linux/include/linux/ |
| H A D | pm_runtime.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 3 * pm_runtime.h - Device run-time power management helper functions. 27 * Use this for defining a set of PM operations to be used in all situations 28 * (system suspend, hibernation or runtime PM). 35 * If the underlying dev_pm_ops struct symbol has to be exported, use 103 * pm_suspend_ignore_children - Set runtime PM behavior regarding children. 105 * @enable: Whether or not to ignore possible dependencies on children. 113 dev->power.ignore_children = enable; in pm_suspend_ignore_children() 117 * pm_runtime_get_noresume - Bump up runtime PM usage counter of a device. 122 atomic_inc(&dev->power.usage_count); in pm_runtime_get_noresume() [all …]
|
| /linux/drivers/firmware/psci/ |
| H A D | psci_checker.c | 1 // SPDX-License-Identifier: GPL-2.0-only 31 static int tos_resident_cpu = -1; 42 * "enable-method" property of each CPU in the DT, but given that there is no 43 * arch-specific way to check this, we assume that the DT is sensible. 47 int migrate_type = -1; in psci_ops_check() 52 return -EOPNOTSUPP; in psci_ops_check() 66 if (tos_resident_cpu == -1) in psci_ops_check() 85 /* Try to power down all CPUs in the mask. */ in down_and_up_cpus() 94 if (ret != -EBUSY) { in down_and_up_cpus() 96 "to power down last online CPU %d\n", in down_and_up_cpus() [all …]
|
| /linux/drivers/base/power/ |
| H A D | runtime.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * drivers/base/power/runtime.c - Helper functions for device runtime PM 30 if (dev->driver && dev->driver->pm) in __rpm_get_driver_callback() 31 return get_callback_ptr(dev->driver->pm, cb_offset); in __rpm_get_driver_callback() 41 if (dev->pm_domain) in __rpm_get_callback() 42 ops = &dev->pm_domain->ops; in __rpm_get_callback() 43 else if (dev->type && dev->type->pm) in __rpm_get_callback() 44 ops = dev->type->pm; in __rpm_get_callback() 45 else if (dev->class && dev->class->pm) in __rpm_get_callback() 46 ops = dev->class->pm; in __rpm_get_callback() [all …]
|
| /linux/arch/arm/include/asm/ |
| H A D | firmware.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 16 * A structure to specify available firmware operations. 22 * Inform the firmware we intend to enter CPU idle mode 26 * Enters CPU idle mode 46 * Enter system-wide suspend. 48 int (*suspend)(void); member 50 * Restore state of privileged hardware after system-wide suspend. 62 * otherwise returns -ENOSYS 65 ((firmware_ops->op) ? firmware_ops->op(__VA_ARGS__) : (-ENOSYS)) 70 * A function to register platform firmware_ops struct.
|
| /linux/drivers/pmdomain/ |
| H A D | governor.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * drivers/base/power/domain_governor.c - Governors for device PM domains. 21 if (dev->power.subsys_data && dev->power.subsys_data->domain_data) { in dev_update_qos_constraint() 22 struct gpd_timing_data *td = dev_gpd_data(dev)->td; in dev_update_qos_constraint() 25 * Only take suspend-time QoS constraints of devices into in dev_update_qos_constraint() 27 * been suspended are not guaranteed to be taken into account in dev_update_qos_constraint() 28 * anyway. In order for them to take effect, the device has to in dev_update_qos_constraint() 31 constraint_ns = td ? td->effective_constraint_ns : in dev_update_qos_constraint() 36 * suspend/resume latencies, so assume them to be negligible and in dev_update_qos_constraint() 51 * default_suspend_ok - Default PM domain governor routine to suspend devices. [all …]
|
| /linux/arch/arm/kernel/ |
| H A D | cpuidle.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 18 * arm_cpuidle_simple_enter() - a wrapper to cpu_do_idle() 23 * A trivial wrapper to allow the cpu_do_idle function to be assigned as a 37 * arm_cpuidle_suspend() - function to enter low power idle states 43 * Returns the result of the suspend callback. 49 return cpuidle_ops[cpu].suspend(index); in arm_cpuidle_suspend() 53 * arm_cpuidle_get_ops() - find a registered cpuidle_ops by name 65 for (; m->method; m++) in arm_cpuidle_get_ops() 66 if (!strcmp(m->method, method)) in arm_cpuidle_get_ops() 67 return m->ops; in arm_cpuidle_get_ops() [all …]
|
| /linux/arch/arm/mach-pxa/ |
| H A D | pxa27x.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 5 #include <linux/suspend.h> 6 #include "addr-map.h" 7 #include "pxa2xx-regs.h" 8 #include "mfp-pxa27x.h" 13 #define ARB_DMA_SLV_PARK (1<<31) /* Be parked with DMA slave when idle */ 14 #define ARB_CI_PARK (1<<30) /* Be parked with Camera Interface when idle */ 15 #define ARB_EX_MEM_PARK (1<<29) /* Be parked with external MEMC when idle */ 16 #define ARB_INT_MEM_PARK (1<<28) /* Be parked with internal MEMC when idle */ 17 #define ARB_USB_PARK (1<<27) /* Be parked with USB when idle */ [all …]
|