STRUCT TI_SCI_PM_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ti_sci_pm_ops(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” yes that's the whole manual name, we're fancy like that ✨ β€” and today's main character is struct ti_sci_pm_ops, aka the Low Power Mode (LPM) control operations squad. think of it as the friend group that decides when your SoC goes to sleep 😴 and, more importantly, who's allowed to wake it up πŸ’…


🌸 NAME 🌸

struct ti_sci_pm_ops β€” Low Power Mode (LPM) control operations. that's it, that's the vibe 🫢


✨ SYNOPSIS ✨

like, literally the whole struct, no cap:

struct ti_sci_pm_ops {
    int (*lpm_wake_reason)(const struct ti_sci_handle *handle, u32
*source, u64 *timestamp, u8 *pin, u8 *mode);
    int (*set_device_constraint)(const struct ti_sci_handle *handle, u32
id, u8 state);
    int (*set_latency_constraint)(const struct ti_sci_handle *handle,
u16 latency, u8 state);
 };

πŸŽ€ Members πŸŽ€

three function pointers, each one a whole personality:

  • lpm_wake_reason β€” this one's the detective πŸ” it gets you the wake up source that woke the SoC from LPM. like, "who disturbed my nap??" energy fr fr.
    • source: The wake up source that woke soc from LPM.
    • timestamp: Timestamp at which soc woke.
  • set_device_constraint β€” sets an LPM constraint on behalf of a device 🫑 advocating for your device's sleep rights.
    • id: Device Identifier
    • state: The desired state of device constraint: set or clear.
  • set_latency_constraint β€” sets the LPM resume latency constraint ⏱️ i.e. how fast you gotta be able to wake up from low power mode, no exceptions.
    • latency: maximum acceptable latency to wake up from low power mode
    • state: The desired state of latency constraint: set or clear.

πŸ¦‹ SEE ALSO πŸ¦‹

the whole extended friend group lives in the kernel file ./include/linux/soc/ti/ti_sci_protocol.h β€” go say hi πŸ‘‹

  • struct ti_sci_version_info(9)
  • struct ti_sci_core_ops(9)
  • struct ti_sci_dev_ops(9)
  • struct ti_sci_clk_ops(9)
  • struct ti_sci_resource_desc(9)
  • struct ti_sci_rm_core_ops(9)
  • struct ti_sci_rm_irq_ops(9)
  • struct ti_sci_msg_rm_ring_cfg(9)
  • struct ti_sci_rm_ringacc_ops(9)
  • struct ti_sci_rm_psil_ops(9)
  • struct ti_sci_rm_udmap_ops(9)
  • struct ti_sci_proc_ops(9)
  • struct ti_sci_ops(9)
  • struct ti_sci_handle(9)
  • struct ti_sci_resource(9)

aaaaand that's the page!! πŸŽ‰ sourced straight from ./include/linux/soc/ti, dated October 2026 β€” so go forth, constrain those latencies, and remember: waking the SoC is a privilege, not a right πŸ’…πŸ‘‘ mwah 🫢

πŸ“¦ where this page comes from