STRUCT PWRDM_OPS(9)
π¦ NAME π¦
okay bestie, welcome to the Kernel API Manual β¨ this page is literally all about struct pwrdm_ops β the βArch specific function implementationsβ situation π
. Itβs giving architecture-specific function pointers, and weβre gonna go through every single one, no skipping π«Ά.
β¨ SYNOPSIS β¨
Hereβs the whole struct, bestie β look at all these function pointers being iconic π
struct pwrdm_ops {
int (*pwrdm_set_next_pwrst)(struct powerdomain *pwrdm, u8 pwrst);
int (*pwrdm_read_next_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_read_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_read_prev_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_set_logic_retst)(struct powerdomain *pwrdm, u8 pwrst);
int (*pwrdm_set_mem_onst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
int (*pwrdm_set_mem_retst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
int (*pwrdm_read_logic_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_read_prev_logic_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_read_logic_retst)(struct powerdomain *pwrdm);
int (*pwrdm_read_mem_pwrst)(struct powerdomain *pwrdm, u8 bank);
int (*pwrdm_read_prev_mem_pwrst)(struct powerdomain *pwrdm, u8 bank);
int (*pwrdm_read_mem_retst)(struct powerdomain *pwrdm, u8 bank);
int (*pwrdm_clear_all_prev_pwrst)(struct powerdomain *pwrdm);
int (*pwrdm_enable_hdwr_sar)(struct powerdomain *pwrdm);
int (*pwrdm_disable_hdwr_sar)(struct powerdomain *pwrdm);
int (*pwrdm_set_lowpwrstchange)(struct powerdomain *pwrdm);
int (*pwrdm_wait_transition)(struct powerdomain *pwrdm);
int (*pwrdm_has_voltdm)(void);
void (*pwrdm_save_context)(struct powerdomain *pwrdm);
void (*pwrdm_restore_context)(struct powerdomain *pwrdm);
};
πΈ Members πΈ
Each of these is a function pointer member, and hereβs what the page says about it π:
pwrdm_set_next_pwrstβ set the target power state for a pd π―pwrdm_read_next_pwrstβ read the target power state set for a pd πpwrdm_read_pwrstβ read the current power state of a pd β¨pwrdm_read_prev_pwrstβ read the prev power state entered by the pd π°οΈpwrdm_set_logic_retstβ set the logic state in RET for a pd π§pwrdm_set_mem_onstβ set the Memory state in ON for a pd πpwrdm_set_mem_retstβ set the Memory state in RET for a pd πΎpwrdm_read_logic_pwrstβ read the current logic state of a pd π§pwrdm_read_prev_logic_pwrstβ read the previous logic state entered by a pd πpwrdm_read_logic_retstβ read the logic state in RET for a pd πpwrdm_read_mem_pwrstβ read the current memory state of a pd πpwrdm_read_prev_mem_pwrstβ read the previous memory state entered by a pd βͺpwrdm_read_mem_retstβ read the memory state in RET for a pd π€pwrdm_clear_all_prev_pwrstβ clear all previous power states logged for a pd π§Ήpwrdm_enable_hdwr_sarβ enable Hardware Save-Restore feature for the pd π₯pwrdm_disable_hdwr_sarβ disable Hardware Save-Restore feature for a pd πpwrdm_set_lowpwrstchangeβ enable pd transitions from a shallow to deep sleep πpwrdm_wait_transitionβ wait for a pd state transition to complete β³pwrdm_has_voltdmβ check if a voltdm association is needed π
π₯ Description π₯
Okay so hereβs the tea about pwrdm_set_lowpwrstchange β: on the OMAP2 and 3-family chips, a powerdomainβs power state is not allowed to directly transition from one low-power state (e.g., CSWR) to another low-power state (e.g., OFF) without first waking up the powerdomain π. That literally wastes energy. So OMAP4 chips support the ability to transition a powerdomain power state directly from one low-power state to another β¨. The function pointed to by pwrdm_set_lowpwrstchange is intended to configure the OMAP4 hardware powerdomain state machine to enable this feature. Periodt π
.
π SEE ALSO π
check out the kernel file ./arch/arm/mach-omap2/powerdomain.h and struct powerdomain(9) π«Ά.
okay thatβs the whole page, bestie π this cutie comes from ./arch/arm/mach-omap2, and itβs the October 2026 edition of struct pwrdm_ops(9). go off, kernel queen πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms