STRUCT EXYNOS_PMU_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 an SMC call. 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 standard PSCI calls, 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 from pmu_config are 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 the pmu_config registers 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. when pmu_secure is true πŸ’œ
  • wr_table β€” a table of writable register ranges, also in case a custom regmap is used β€” again, i.e. when pmu_secure is true. she's the twin, she's the moment, she's writable 🧚
fr fr: rd_table and wr_table both only matter when a custom regmap is in play, and that custom regmap happens when pmu_secure is 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