ti_sci_msg_c..._wake_reason(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ti_sci_msg_cmd_lpm_wake_reason(9) β€” the Kernel API Manual moment πŸŽ€

okay so bestie, this is a page from the Kernel API Manual (yes, that manual, the ti_sci_msg_c..._wake_reason(9) one β€” the title got a lil truncated on the header, she's mysterious like that ✨). Lowkey she's the one who tells you what woke the SoC up after a nap in Low Power Mode. Main character energy fr fr.


✨ NAME ✨

ti_sci_msg_cmd_lpm_wake_reason β€” literally just: Get the wakeup source from LPM. That's the whole vibe. The SoC was asleep, something poked it, and this function is the nosy bestie who finds out who. πŸ™ˆ


🌸 SYNOPSIS 🌸

int ti_sci_msg_cmd_lpm_wake_reason(const struct ti_sci_handle *handle,
                                   u32 *source,
                                   u64 *timestamp,
                                   u8 *pin,
                                   u8 *mode);

it's giving "five params, one tiny little int return" 🫢 ngl the signature ate.


πŸ¦‹ ARGUMENTS πŸ¦‹

okay so let's meet the cast πŸ’–

  • handle β€” Pointer to TI SCI handle. this is your VIP pass to the whole TI SCI situation, you literally cannot do anything without her.
  • source β€” The wakeup source that woke the SoC from LPM. like, what woke her up. the culprit. the main character of the wake event πŸ‘‘
  • timestamp β€” Timestamp of the wakeup event. for the receipts 🧾 so you know exactly when the drama went down.
  • pin β€” The pin that has triggered wake up. which lil pin did the poking πŸ”Œ iconic behaviour honestly.
  • mode β€” The last entered low power mode. so you know how deep of a nap she was in before getting rudely awoken 😴
⚠️ heads up bestie: those are all pointers, so the function writes back into them. don't be passing no NULL nonsense and then acting surprised, iykyk πŸ’€

⭐ RETURN ⭐

0 if all went well ✨ (slay, no notes), else it returns the appropriate error value 😭 β€” so like, do check it. fr fr. she's not gonna sugarcoat it for you.


🌈 SEE ALSO 🌈

okay this is the part where the whole friend group shows up πŸ’œ and no I'm not skipping a single one, every name stays:

Kernel file ./drivers/firmware/ti_sci.c, 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_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_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)

like... that's the whole roster. every single one. no cap. πŸ’…


and that's the page bestie 🫢 go read the source, it's all in ./drivers/firmware β€” this lil drop is from October 2026, so mark your calendar πŸ“… mwah πŸ’‹

πŸ“¦ where this page comes from