STRUCT EXYNOS_PMU_DATA(9)
π struct exynos_pmu_data(9) β no like literally the of_device_id (match) data
okay so bestie, welcome to the Kernel API Manual β¨ and buckle up, because today we're meeting struct exynos_pmu_data, aka the little squad of fields that gets handed over as of_device_id (match) data. it's giving "the personality of a device, but for power management" and honestly? obsessed. π
β¨ SYNOPSIS β¨
struct exynos_pmu_data {
const struct exynos_pmu_conf *pmu_config;
const struct exynos_pmu_conf *pmu_config_extra;
bool pmu_secure;
bool pmu_cpuhp;
void (*pmu_init)(void);
void (*powerdown_conf)(enum sys_powerdown);
void (*powerdown_conf_extra)(enum sys_powerdown);
const struct regmap_access_table *rd_table;
const struct regmap_access_table *wr_table;
};
like, that's the whole glow-up. every single member, character for character, no cap. π
π¦ MEMBERS π¦
pmu_configβ an Optional table that details the register writes for the target system states:SYS_AFTR,SYS_LPA,SYS_SLEEP. it's the main character of the register-writing world tbh πpmu_config_extraβ an Optional secondary table, and it details additional register writes for the target system states:SYS_AFTR,SYS_LPA,SYS_SLEEP. so yeah, it's the sequel. the encore. the "and another thing" energy πpmu_secureβ tells you whether or not PMU register writes need to be done via anSMCcall. lowkey important, highkey the vibe check for how you're allowed to touch registers π₯pmu_cpuhpβ whether or not extra handling is required for CPU hotplug and CPUidle outside of standardPSCIcalls, and the reason is firmware that is non-compliant π. not the firmware being messy, not meβpmu_initβ an Optional init function. that's it. that's the whole thing. she's simple, she's elegant, she slays πpowerdown_confβ an Optional callback that runs before entering the target system states:SYS_AFTR,SYS_LPA,SYS_SLEEP. the way this gets invoked before the registers frompmu_configare written? that's the ordering, bestie, respect the ordering π«Άpowerdown_conf_extraβ an Optional secondary callback before entering the target system states:SYS_AFTR,SYS_LPA,SYS_SLEEP. and this one gets invoked after thepmu_configregisters have been written. yes, after. yes, that's different from the other one. iykyk βrd_tableβ a table of readable register ranges, and it's there in case a custom regmap is used β like, i.e. whenpmu_secureis true πwr_tableβ a table of writable register ranges, also in case a custom regmap is used β again, i.e. whenpmu_secureis true. she's the twin, she's the moment, she's writable π§
fr fr:rd_tableandwr_tableboth only matter when a custom regmap is in play, and that custom regmap happens whenpmu_secureis true. don't forget the parenthetical, it's doing heavy lifting π
πΈ SEE ALSO πΈ
- Kernel file
./drivers/soc/samsung/exynos-pmu.hβ go read the header, bestie, it's right there π
and that's the whole page!! π written from ./drivers/soc/samsung in October 2026, and this has been your girl signing off β stay secure, stay hotpluggable, and may your firmware always be compliant πβ¨π
π¦ 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