STRUCT TI_SCI_MSG_RM_UDMAP_TX_CH_CFG_REQ(9)
π struct ti_sci_msg_rm_udmap_tx_ch_cfg_req(9) π
okay so bestie, welcome to the Kernel API Manual β this is the page for struct ti_sci_msg_rm_udmap_tx_ch_cfg_req, and yes it's a whole mouthful, but it's literally the blueprint for configuring a Navigator Subsystem UDMAP transmit channel and she is iconic. let's get into it π«Ά
β¨ NAME β¨
struct ti_sci_msg_rm_udmap_tx_ch_cfg_req β the struct that configures a Navigator Subsystem UDMAP transmit channel π
π¦ SYNOPSIS π¦
the way this struct is laid out, no notes:
struct ti_sci_msg_rm_udmap_tx_ch_cfg_req {
struct ti_sci_msg_hdr hdr;
u32 valid_params;
u16 nav_id;
u16 index;
u8 tx_pause_on_err;
u8 tx_filt_einfo;
u8 tx_filt_pswords;
u8 tx_atype;
u8 tx_chan_type;
u8 tx_supr_tdpkt;
u16 tx_fetch_size;
u8 tx_credit_count;
u16 txcq_qnum;
u8 tx_priority;
u8 tx_qos;
u8 tx_orderid;
u16 fdepth;
u8 tx_sched_priority;
u8 tx_burst_size;
u8 tx_tdtype;
u8 extended_ch_type;
};
π Members π
hdrβ the Generic Header. classic, dependable, we love her πvalid_paramsβ okay this is the main character honestly. it's a bitfield that says which of the tx channel config params are actually valid. lowkey crucial: if a field's corresponding valid bit is zero, then that field is not valid and will not be used for ch configuration. no cap. the valid bit usage is:0β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_pause_on_err1β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_atype2β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_chan_type3β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_fetch_size4β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::txcq_qnum5β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_priority6β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_qos7β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_orderid8β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_sched_priority9β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_filt_einfo10β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_filt_pswords11β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_supr_tdpkt12β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_credit_count13β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::fdepth14β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_burst_size15β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::tx_tdtype16β Valid bit for refti_sci_msg_rm_udmap_tx_ch_cfg::extended_ch_type
nav_idβ the SoC device ID of the Navigator Subsystem where the tx channel is located. like, her address basically πindexβ UDMAP transmit channel index. periodt.tx_pause_on_errβ the UDMAP transmit channel pause on error configuration, and it gets programmed into thetx_pause_on_errfield of the channel'sTCHAN_TCFGregister. slay.tx_filt_einfoβ UDMAP transmit channel extended packet information passing configuration, programmed into thetx_filt_einfofield of the channel'sTCHAN_TCFGregister. she's giving details β¨tx_filt_pswordsβ UDMAP transmit channel protocol specific word passing configuration, programmed into thetx_filt_pswordsfield of the channel'sTCHAN_TCFGregister. (say that five times fast, i dare you π)tx_atypeβ UDMAP transmit channel non Ring Accelerator access pointer interpretation configuration, programmed into thetx_atypefield of the channel'sTCHAN_TCFGregister. iconic.tx_chan_typeβ UDMAP transmit channel functional channel type and work passing mechanism configuration, programmed into thetx_chan_typefield of the channel'sTCHAN_TCFGregister. the way she defines the whole vibe of the channel πtx_supr_tdpktβ UDMAP transmit channel teardown packet generation suppression configuration, programmed into thetx_supr_tdpktfield of the channel'sTCHAN_TCFGregister. suppressing the drama, love that for her.tx_fetch_sizeβ UDMAP transmit channel number of 32-bit descriptor words to fetch configuration, programmed into thetx_fetch_sizefield of the channel'sTCHAN_TCFGregister.
β οΈ bestie listen: the user must make sure to set the maximum word count that can pass through the channel for any allowed descriptor type. don't skip this fr fr.
tx_credit_countβ UDMAP transmit channel transfer request credit count configuration, programmed into thecountfield of theTCHAN_TCREDITregister. it specifies how many credits for complete TRs are available. giving budget energy πtxcq_qnumβ UDMAP transmit channel completion queue configuration, programmed into thetxcq_qnumfield of theTCHAN_TCQregister.
π important: the specified completion queue must be assigned to the host β or a subordinate of the host β that's requesting configuration of the transmit channel. no borrowing someone else's queue, that's not the vibe.
tx_priorityβ UDMAP transmit channel transmit priority value, programmed into thepriorityfield of the channel'sTCHAN_TPRI_CTRLregister. main character priority honestly πtx_qosβ UDMAP transmit channel transmit qos value, programmed into theqosfield of the channel'sTCHAN_TPRI_CTRLregister. quality of service queen πΈtx_orderidβ UDMAP transmit channel bus order id value, programmed into theorderidfield of the channel'sTCHAN_TPRI_CTRLregister. in order, always β¨fdepthβ UDMAP transmit channel FIFO depth configuration, programmed into thefdepthfield of theTCHAN_TFIFO_DEPTHregister. it sets the number of Tx FIFO bytes that are allowed to be stored for the channel.
π¦ heads up: check the UDMAP section of the TRM for restrictions regarding this parameter. do your reading bestie, i'm serious.
tx_sched_priorityβ UDMAP transmit channel tx scheduling priority configuration, programmed into thepriorityfield of the channel'sTCHAN_TST_SCHEDregister. slotting her into the schedule πtx_burst_sizeβ UDMAP transmit channel burst size configuration, programmed into thetx_burst_sizefield of theTCHAN_TCFGregister. burst energy only π₯tx_tdtypeβ UDMAP transmit channel teardown type configuration, programmed into thetdtypefield of theTCHAN_TCFGregister. the options are:0β Return immediately1β Wait for completion message from remote peer
extended_ch_typeβ Valid for BCDMA. two moods:0β the channel is split tx channel (tchan)1β the channel is block copy channel (bchan)
π Description π
so what does this whole struct do? it configures the non-real-time registers of a Navigator Subsystem UDMAP transmit channel. simple as that π
π«Ά but bestie, the rule is real: the channel index must be assigned to the host defined in the TISCI header via the RM board configuration resource assignment range list. no assignment, no channel. iykyk.
β SEE ALSO β
the whole friend group, assembled. go say hi:
- Kernel file
./drivers/firmware/ti_sci.h - 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_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_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)
and that's the page bestie!! π before you go, the receipts: this one comes from ./drivers/firmware, dated October 2026 β go off, October 2026, you ate π
β¨π
π¦ 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