STRUCT TI_SCI_MSG_RM_RING_CFG_REQ(9)
๐ 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 fortisci_msg_rm_ring_cfg_reqaddr_lo1โ Valid bit fortisci_msg_rm_ring_cfg_reqaddr_hi2โ Valid bit fortisci_msg_rm_ring_cfg_reqcount3โ Valid bit fortisci_msg_rm_ring_cfg_reqmode4โ Valid bit fortisci_msg_rm_ring_cfg_reqsize5โ Valid bit fortisci_msg_rm_ring_cfg_reqorder_id6โ Valid bit fortisci_msg_rm_ring_cfg_reqvirtid7โ Valid bit fortisci_msg_rm_ring_cfg_reqASEL
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'sRING_BA_LOregister โจaddr_hiโ the 16 MSBs of the ring base address, programmed into the ring'sRING_BA_HIregister ๐countโ number of ring elements. Must be even ifmodeisCREDENTIALSorQMmodes. (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), wheresize_bytescannot 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 theASELfield of the ring'sRING_BA_HIregister ๐ฆ
๐ 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
- nixpkgs unstable: linux-manual 7.3.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms