STRUCT TI_SCI_MSG_REQ_PREPARE_SLEEP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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

okay so bestie, welcome to the Kernel API Manual β€” yes we're reading kernel API docs together, this is our bonding activity now, don't fight it 🫢


✨ NAME ✨

struct ti_sci_msg_req_prepare_sleep β€” the Request for TISCI_MSG_PREPARE_SLEEP. that's it, that's the whole name, she's literally just a request struct and she's slaying πŸ’…


🌸 SYNOPSIS 🌸

struct ti_sci_msg_req_prepare_sleep {
    struct ti_sci_msg_hdr   hdr;
  #define TISCI_MSG_VALUE_SLEEP_MODE_PARTIAL_IO
0x03;
  #define TISCI_MSG_VALUE_SLEEP_MODE_DM_MANAGED
0xfd;
    u8 mode;
    u32 ctx_lo;
    u32 ctx_hi;
    u32 debug_flags;
};

no cap, those #defines are living rent-free right in the middle of the struct body and honestly? iconic. we don't question it, we just vibe check it and move on πŸ¦‹


πŸŽ€ Members πŸŽ€

  • hdr β€” the TISCI header, and its whole job is to provide the ACK/NAK flags to the host. she's the group chat read receipt of the kernel, fr fr πŸ’Œ
  • mode β€” the Low power mode to enter. this is the main character of the whole struct ngl πŸ‘‘
  • ctx_lo β€” the Low 32-bits of the physical pointer to the address to use for context save. yes low, like, half of it, the little spoon πŸ₯„
  • ctx_hi β€” the High 32-bits of the physical pointer to the address to use for context save. the big spoon. together they are one (1) full address 🫢
  • debug_flags β€” Flags that can be set to halt the sequence during suspend or resume to allow JTAG connection and debug. like a little pause button for debugging, we love a flexible queen ⭐

πŸ’œ Description πŸ’œ

so this message is used as the first step of entering a low power mode β€” think of it as the "hey bestie we're about to nap" text before the actual nap 😴

it allows configurable information, including which state to enter, to be easily shared from the application. and here's the part that's lowkey important: this is a non-secure message, and therefore it can be sent by anyone πŸ”₯

not me pointing out that anyone can send it 😭 like yes it's by design, that's literally the point, but bestie please know what you're sending πŸ™ˆ

🌈 SEE ALSO 🌈

Kernel file ./drivers/firmware/ti_sci.h, and literally the entire extended friend group:

  • struct ti_sci_msg_hdr(9)
  • struct ti_sci_msg_resp_version(9)
  • struct ti_sci_msg_req_reboot(9)
  • struct ti_sci_msg_resp_query_fw_caps(9)
  • struct ti_sci_msg_req_set_device_state(9)
  • struct ti_sci_msg_req_get_device_state(9)
  • struct ti_sci_msg_resp_get_device_state(9)
  • struct ti_sci_msg_req_set_device_resets(9)
  • struct ti_sci_msg_req_set_clock_state(9)
  • struct ti_sci_msg_req_get_clock_state(9)
  • struct ti_sci_msg_resp_get_clock_state(9)
  • struct ti_sci_msg_req_set_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_parent(9)
  • struct ti_sci_msg_resp_get_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_num_parents(9)
  • struct ti_sci_msg_resp_get_clock_num_parents(9)
  • struct ti_sci_msg_req_query_clock_freq(9)
  • struct ti_sci_msg_resp_query_clock_freq(9)
  • struct ti_sci_msg_req_set_clock_freq(9)
  • struct ti_sci_msg_req_get_clock_freq(9)
  • struct ti_sci_msg_resp_get_clock_freq(9)
  • struct ti_sci_msg_req_set_io_isolation(9)
  • struct ti_sci_msg_resp_lpm_wake_reason(9)
  • struct ti_sci_msg_req_lpm_set_device_constraint(9)
  • struct ti_sci_msg_req_lpm_set_latency_constraint(9)
  • struct ti_sci_msg_req_get_resource_range(9)
  • struct ti_sci_msg_resp_get_resource_range(9)
  • struct ti_sci_msg_req_manage_irq(9)
  • struct ti_sci_msg_rm_ring_cfg_req(9)
  • struct ti_sci_msg_psil_pair(9)
  • struct ti_sci_msg_psil_unpair(9)
  • struct ti_sci_msg_udmap_rx_flow_cfg(9)
  • struct rm_ti_sci_msg_udmap_rx_flow_opt_cfg(9)
  • struct ti_sci_msg_rm_udmap_tx_ch_cfg_req(9)
  • struct ti_sci_msg_rm_udmap_rx_ch_cfg_req(9)
  • struct ti_sci_msg_rm_udmap_flow_cfg_req(9)
  • struct ti_sci_msg_req_proc_request(9)
  • struct ti_sci_msg_req_proc_release(9)
  • struct ti_sci_msg_req_proc_handover(9)
  • struct ti_sci_msg_req_set_config(9)
  • struct ti_sci_msg_req_set_ctrl(9)
  • struct ti_sci_msg_req_get_status(9)
  • struct ti_sci_msg_resp_get_status(9)

like ma'am that is a whole contact list, she knows everyone at the function πŸ’€βœ¨


and that's the whole page bestie, mwah πŸ’‹ this little gem lives in ./drivers/firmware, dated October 2026, and it's filed under struct ti_sci_msg_req_prepare_sleep(9) β€” go take a nap, you earned it πŸ˜΄πŸŽ€

πŸ“¦ where this page comes from