i3c_master_h...enabled_devs(9)
π i3c_master_has_wakeup_enabled_devs β the Kernel API Manual, section 9, bestie edition π
okay so real talk, this one lives in the Kernel API Manual (that's the manual name, we're folding it in up top like a lil name tag π) and it's section 9. It's a tiny lil yes-or-no check and honestly it ate.
β¨ NAME β¨
i3c_master_has_wakeup_enabled_devs β the vibe check that tells you if any device on the bus can wake the system up π΄π
πΈ SYNOPSIS πΈ
bool i3c_master_has_wakeup_enabled_devs (struct i3c_master_controller
*master );
literally just hand it your master controller and it hands you back a bool, no cap β¨
π¦ ARGUMENTS π¦
masterβ your I3C master controller. that's the whole argument. she's low maintenance, we respect her π
π DESCRIPTION π
so what it does: it iterates over the devices on the bus and returns true if any device has system wakeup enabled and IBI enabled. both. at the same time. it's giving "and" not "or" π«Ά
β οΈ okay important lore: whether a device is enabled for system wakeup is user space policy. it's settable at any time through the device's power/wakeup sysfs attribute. so the answer is only stable once user space is frozen. that's not me being dramatic, that's the manpage.
because of that, you call this from a system suspend callback. that's the assignment, bestie πβ¨
π₯ RETURN π₯
trueβ some device may wake the system via IBI πfalseβ nope, nobody's waking anybody π
π SEE ALSO π
the source is the kernel file ./drivers/i3c/master.c and here's the whole friend group, all of them, nobody left behind π:
i3c_bus_maintenance_lock(9)i3c_bus_maintenance_unlock(9)i3c_bus_normaluse_lock(9)i3c_bus_normaluse_unlock(9)i3c_master_queue_hotjoin(9)i3c_master_send_ccc_cmd_locked(9)i3c_master_get_free_addr(9)i3c_master_setaasa_locked(9)i3c_master_entdaa_locked(9)i3c_master_enec_disec_locked(9)i3c_master_disec_locked(9)i3c_master_enec_locked(9)i3c_master_defslvs_locked(9)i3c_master_reattach_i3c_dev_locked(9)i3c_master_dma_map_single(9)i3c_master_dma_unmap_single(9)i3c_master_set_info(9)i3c_master_bus_init(9)__i3c_master_add_i3c_dev_locked(9)i3c_master_add_i3c_dev_locked(9)i3c_master_do_daa_ext(9)i3c_master_do_daa(9)i3c_master_queue_ibi(9)i3c_generic_ibi_free_pool(9)i3c_generic_ibi_alloc_pool(9)i3c_generic_ibi_get_free_slot(9)i3c_generic_ibi_recycle_slot(9)i3c_master_register(9)i3c_master_unregister(9)i3c_dev_disable_ibi_locked(9)i3c_dev_enable_ibi_locked(9)i3c_dev_request_ibi_locked(9)i3c_dev_free_ibi_locked(9)
(and yes __i3c_master_add_i3c_dev_locked with the double underscore is a different function from i3c_master_add_i3c_dev_locked, don't @ me, that's just how it is π)
mwah π that's the whole page. sourced straight from ./drivers/i3c, stamped October 2026, brought to you by the Kernel API Manual girlies. go freeze user space first, 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