ti_sci_get_handle(9)
π NAME π
ti_sci_get_handle β get the TI SCI handle for a device. that's the whole mission bestie π
this lil page lives in the Kernel API Manual, and honestly? it's a short read, but it's important.
β¨ SYNOPSIS β¨
const struct ti_sci_handle * ti_sci_get_handle (struct device *dev );
πΈ ARGUMENTS πΈ
devβ pointer to the device for which we want the SCI handle. literally just hand over the device and we're cooking π«Ά
π NOTE π
okay so two things, and you need to hear both:
- this function does not track individual clients of the framework, and it's expected to be maintained by the caller of the TI SCI protocol library. like, the framework isn't keeping receipts on you β that's your job, main character π
ti_sci_put_handlemust be balanced with a successfulti_sci_get_handle. no drive-by grabs. you take it, you put it back. balance. periodt π
ngl the balance thing is the one that gets people. take handle β do the thing β put handle back. every single time. π₯
π₯ RETURN π₯
pointer to handle if successful β¨ else:
-EPROBE_DEFERif the instance is not ready-ENODEVif the required node handler is missing-EINVALif invalid conditions are encountered
so like... three very different sad endings, all clearly labeled. we love a return value that tells you what's wrong π
π¦ SEE ALSO π¦
Kernel file ./drivers/firmware/ti_sci.c β the whole TI SCI situation starts here bestie, this is the source. plus the entire friend group:
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_manage_irq(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_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)
okay that's the whole page π this one's from the Kernel API Manual, sourced out of ./drivers/firmware, dated October 2026, and the page itself is ti_sci_get_handle(9).
now go get that handle and please put it back when you're done πβ¨ mwah, ily, bye π¦
π¦ 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