ti_sci_manage_irq(9)
π ti_sci_manage_irq(9) β the Kernel API Manual glow-up π
okay bestie, so this one lives in the Kernel API Manual (yes, the Kernel API Manual, we're fancy now β¨) and it's literally the helper api that configures or releases the irq route between whatever source and destination you asked for. iykyk π
πΈ NAME πΈ
ti_sci_manage_irq β the helper api to configure/release the irq route between the requested source and destination. that's it, that's the vibe π¦
β¨ SYNOPSIS β¨
int ti_sci_manage_irq (const struct ti_sci_handle *handle , u32
valid_params , u16 src_id , u16 src_index , u16 dst_id , u16
dst_host_irq , u16 ia_id , u16 vint , u16 global_event , u8
vint_status_bit , u8 s_host , u16 type );
like, look at all those params. twelve of them. twelve!! main character energy fr fr π and every single one is typed exactly like that, do not come for me π
π ARGUMENTS π
handleβ pointer to the TISCI handle. your entry ticket to the whole thing π«Άvalid_paramsβ bit fields that define the validity of certain params. yes bestie, it's certain params, not all of them, that's the whole point πsrc_idβ device ID of the IRQ source. where the irq is coming from πsrc_indexβ IRQ source index within the source device. which one inside that device, if you will πΈdst_idβ device ID of the IRQ destination. where it's headed π¦dst_host_irqβ IRQ number of the destination device. the actual number, no cap π₯ia_idβ device ID of the IA, if the IRQ flows through this IA. conditional queen πvintβ virtual interrupt to be used within the IA. virtual, as the name suggests, we stay on theme β¨global_eventβ global event number to be used for the requesting event πvint_status_bitβ virtual interrupt status bit to be used for the event βs_hostβ secondary host ID to which the irq/event is being requested for. look at that trailing full stop in the original, we respect it πtypeβ request type: irq set or release. two moods, pick one π§
π RETURN π
0 if all went fine, else return appropriate error. that's the whole contract bestie, no cap β zero means slay, anything else means go read your error codes π
π SEE ALSO π
okay this list is long long, so buckle up π β the kernel file ./drivers/firmware/ti_sci.c plus honestly the entire ti_sci cinematic universe:
struct ti_sci_xfer(9), struct ti_sci_xfers_info(9), struct ti_sci_desc(9), struct ti_sci_irq(9), struct ti_sci_info(9), ti_sci_debug_show(9), ti_sci_debugfs_create(9), ti_sci_dump_header_dbg(9), ti_sci_rx_callback(9), ti_sci_get_one_xfer(9), ti_sci_put_one_xfer(9), ti_sci_do_xfer(9), ti_sci_cmd_get_revision(9), ti_sci_is_response_ack(9), ti_sci_set_device_state(9), ti_sci_get_device_state(9), ti_sci_cmd_get_device(9), ti_sci_cmd_get_device_exclusive(9), ti_sci_cmd_idle_device(9), ti_sci_cmd_idle_device_exclusive(9), ti_sci_cmd_put_device(9), ti_sci_cmd_dev_is_valid(9), ti_sci_cmd_dev_get_clcnt(9), ti_sci_cmd_dev_is_idle(9), ti_sci_cmd_dev_is_stop(9), ti_sci_cmd_dev_is_on(9), ti_sci_cmd_dev_is_trans(9), ti_sci_cmd_set_device_resets(9), ti_sci_cmd_get_device_resets(9), ti_sci_set_clock_state(9), ti_sci_cmd_get_clock_state(9), ti_sci_cmd_get_clock(9), ti_sci_cmd_idle_clock(9), ti_sci_cmd_put_clock(9), ti_sci_cmd_clk_is_auto(9), ti_sci_cmd_clk_is_on(9), ti_sci_cmd_clk_is_off(9), ti_sci_cmd_clk_set_parent(9), ti_sci_cmd_clk_get_parent(9), ti_sci_cmd_clk_get_num_parents(9), ti_sci_cmd_clk_get_match_freq(9), ti_sci_cmd_clk_set_freq(9), ti_sci_cmd_clk_get_freq(9), ti_sci_cmd_prepare_sleep(9), ti_sci_msg_cmd_query_fw_caps(9), ti_sci_cmd_set_io_isolation(9), ti_sci_msg_cmd_lpm_wake_reason(9), ti_sci_cmd_set_device_constraint(9), ti_sci_cmd_set_latency_constraint(9), ti_sci_cmd_lpm_abort(9), ti_sci_get_resource_range(9), ti_sci_cmd_get_resource_range(9), ti_sci_cmd_get_resource_range_from_shost(9), ti_sci_irq_hash(9), ti_sci_irq_equal(9), ti_sci_set_irq(9), ti_sci_free_irq(9), ti_sci_cmd_set_irq(9), ti_sci_cmd_set_event_map(9), ti_sci_cmd_free_irq(9), ti_sci_cmd_free_event_map(9), ti_sci_cmd_rm_ring_cfg(9), ti_sci_cmd_rm_psil_pair(9), ti_sci_cmd_rm_psil_unpair(9), ti_sci_cmd_rm_udmap_tx_ch_cfg(9), ti_sci_cmd_rm_udmap_rx_ch_cfg(9), ti_sci_cmd_rm_udmap_rx_flow_cfg(9), ti_sci_cmd_proc_request(9), ti_sci_cmd_proc_release(9), ti_sci_cmd_proc_handover(9), ti_sci_cmd_proc_set_config(9), ti_sci_cmd_proc_set_control(9), ti_sci_cmd_proc_get_status(9), ti_sci_get_handle(9), ti_sci_put_handle(9), devm_ti_sci_get_handle(9), ti_sci_get_by_phandle(9), devm_ti_sci_get_by_phandle(9), ti_sci_get_free_resource(9), ti_sci_release_resource(9), ti_sci_get_num_resources(9), devm_ti_sci_get_resource_sets(9), devm_ti_sci_get_of_resource(9), devm_ti_sci_get_resource(9)
lowkey reminder bestie: go actually read those other pages before you start poking at irq routes, mwah π«Ά
and that's the page!! π this whole thing is served fresh from ./drivers/firmware, October 2026 edition β periodt, go configure some irqs responsibly πβ¨π¦
π¦ 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