STRUCT TI_SCI_MSG_RM_RING_CFG_REQ(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… struct ti_sci_msg_rm_ring_cfg_req(9) โ€” Kernel API Manual โœจ

okay bestie, buckle up, because we're diving into the Kernel API Manual and this one's literally a struct that configures a Navigator Subsystem ring ๐Ÿ”ฅ no cap, it's giving "firmware table stakes" and honestly? iconic.


๐ŸŒธ NAME ๐ŸŒธ

struct ti_sci_msg_rm_ring_cfg_req โ€” Configure a Navigator Subsystem ring ๐ŸŽ€


โœจ SYNOPSIS โœจ

struct ti_sci_msg_rm_ring_cfg_req {
    struct ti_sci_msg_hdr hdr;
    u32 valid_params;
    u16 nav_id;
    u16 index;
    u32 addr_lo;
    u32 addr_hi;
    u32 count;
    u8 mode;
    u8 size;
    u8 order_id;
    u16 virtid;
    u8 asel;
};

like, that's the whole shape of it. every field is doing its little job ๐Ÿซถ


๐Ÿฆ‹ Members ๐Ÿฆ‹

  • hdr โ€” the Generic Header, your classic little preamble, the "hey girl hey" of the message ๐Ÿ’–
  • valid_params โ€” a bitfield that says which ring config params are actually valid. Important bestie: if a field's corresponding valid bit is zero, that ring configuration field is not valid and will not be used for ring configuration. fr fr. here's the bit usage, don't lose it:
    • 0 โ€” Valid bit for tisci_msg_rm_ring_cfg_req addr_lo
    • 1 โ€” Valid bit for tisci_msg_rm_ring_cfg_req addr_hi
    • 2 โ€” Valid bit for tisci_msg_rm_ring_cfg_req count
    • 3 โ€” Valid bit for tisci_msg_rm_ring_cfg_req mode
    • 4 โ€” Valid bit for tisci_msg_rm_ring_cfg_req size
    • 5 โ€” Valid bit for tisci_msg_rm_ring_cfg_req order_id
    • 6 โ€” Valid bit for tisci_msg_rm_ring_cfg_req virtid
    • 7 โ€” Valid bit for tisci_msg_rm_ring_cfg_req ASEL
  • nav_id โ€” Device ID of the Navigator Subsystem that this ring was allocated from ๐Ÿ‘‘
  • index โ€” the ring index that's getting configured. that's it. that's the girl.
  • addr_lo โ€” the 32 LSBs of the ring base address, programmed into the ring's RING_BA_LO register โœจ
  • addr_hi โ€” the 16 MSBs of the ring base address, programmed into the ring's RING_BA_HI register ๐ŸŽ€
  • count โ€” number of ring elements. Must be even if mode is CREDENTIALS or QM modes. (yes, that's a requirement, not a suggestion ๐Ÿ’€)
  • mode โ€” specifies the mode the ring is to be configured in ๐ŸŒˆ
  • size โ€” the encoded ring element size. to compute the encoded size, use the formula (log2(size_bytes) - 2), where size_bytes cannot be greater than 256. math girlie moment ๐Ÿงฎ๐Ÿ’…
  • order_id โ€” specifies the ring's bus order ID ๐ŸšŒ
  • virtid โ€” the ring virt ID value โญ
  • asel โ€” the ring ASEL (address select) value, set into the ASEL field of the ring's RING_BA_HI register ๐Ÿฆ‹

๐Ÿ’œ Description ๐Ÿ’œ

Configures the non-real-time registers of a Navigator Subsystem ring. that's the whole vibe, bestie โ€” non-real-time only, we're not out here touching realtime stuff, iykyk ๐Ÿ™ˆ


๐Ÿ“ SEE ALSO ๐Ÿ“

Kernel file ./drivers/firmware/ti_sci.h โ€” and honestly the whole friend group showed up for this one:

  • 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_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_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, the whole squad. read them, love them, cite them ๐Ÿซถ


and that's the page, bestie!! ๐ŸŽ€ this lil gem lives in ./drivers/firmware, stamped October 2026 in the Kernel API Manual, and it's literally the version where struct ti_sci_msg_rm_ring_cfg_req(9) gets to be the main character. slay ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from