STRUCT TI_SCI_MSG_HDR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ struct_ti_sci_msg_hdr β€” the Kernel API Manual moment πŸ’…

okay so bestie, welcome to struct ti_sci_msg_hdr(9), aka the Generic Message Header for All messages and responses. every single message and every single response in this whole TI SCI situation rocks this exact same header. it's giving main character energy but for data structures. ✨


🌸 SYNOPSIS 🌸

here's the whole thing, copied exactly, no cap:

struct ti_sci_msg_hdr {
    u16 type;
    u8 host;
    u8 seq;
  #define TI_SCI_MSG_FLAG(val)                    (1 << (val));
  #define TI_SCI_FLAG_REQ_GENERIC_NORESPONSE      0x0;
  #define TI_SCI_FLAG_REQ_ACK_ON_RECEIVED         TI_SCI_MSG_FLAG(0);
  #define TI_SCI_FLAG_REQ_ACK_ON_PROCESSED        TI_SCI_MSG_FLAG(1);
  #define TI_SCI_FLAG_RESP_GENERIC_NACK           0x0;
  #define TI_SCI_FLAG_RESP_GENERIC_ACK            TI_SCI_MSG_FLAG(1);
    u32 flags;
 };

like?? look at her. four fields and six #defines. iconic. πŸŽ€


πŸ’– MEMBERS πŸ’–

  • type β€” the type of the message, and it has to be one of the TI_SCI_MSG* values. pick wisely bestie, this is literally the whole identity of the message πŸ¦‹
  • host β€” the host of the message. who's speaking? this field knows. ✨
  • seq β€” the message identifier, and it's the thing that indicates a transfer sequence. so it's like the message's little "part 3 of 5" tag, iykyk πŸ”₯
  • flags β€” the flag for the message. yes it's plural, yes it's one field, we don't make the rules πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

okay this list is LONG and she ate, honestly. first up, the kernel file itself: ./drivers/firmware/ti_sci.h

then the whole friend group, in order, no one gets left out 🫢

  • 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_prepare_sleep(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 forty-plus cross-references?? she's connected. she knows everyone. 🐝


and that's the whole page bestie, mwah πŸ’‹

this cutie lives in ./drivers/firmware, the docs are dated October 2026, and it's filed under struct ti_sci_msg_hdr(9) in the Kernel API Manual. go read the actual structs now, i'm obsessed with your brain πŸ§šπŸ’œ

πŸ“¦ where this page comes from