__fwnode_link_add(9)
π __fwnode_link_add β Kernel API Manual β¨
okay so bestie, welcome to __fwnode_link_add(9), the little function that literally plays matchmaker between two firmware nodes π«Ά this one lives in the Kernel API Manual and honestly it's giving "quiet helper that runs the whole friend group" energy π
β¨ NAME β¨
__fwnode_link_add β the one where you create a link between two fwnode_handles π
π¦ SYNOPSIS π¦
int __fwnode_link_add (struct fwnode_handle *con , struct fwnode_handle
*sup , u8 flags );
πΈ ARGUMENTS πΈ
conβ the consumer end of the link, aka the one receiving the goods ποΈsupβ the supplier end of the link, aka the one providing πflagsβ the link flags,u8bestie, keep it tiny and cute π
π DESCRIPTION π
So what it does: it creates a fwnode link between the fwnode handles con and sup β¨ and the point of that link is to represent one very specific detail β that the firmware lists sup fwnode as supplying a resource to con π like, the firmware said so, and now the kernel knows.
Then the driver core is gonna take that fwnode link and use it to create a device link between the two device objects corresponding to con and sup, when those get created π and after it does that, the driver core will automatically delete the fwnode link between con and sup π so yeah, this link is temporary, it's a seasonal thing, it's an era not a lifestyle π
β οΈ one thing ngl: attempts to create duplicate links between the same pair of fwnode handles are ignored, and there is no reference counting π so don't come here expecting a counter, there isn't one, periodt.
π§ SEE ALSO π§
Kernel file ./drivers/base/core.c β and here's the whole extended friend group, no cap, every single one of them π
__fwnode_link_del(9)__fwnode_link_cycle(9)fwnode_links_purge_suppliers(9)fwnode_links_purge_consumers(9)fwnode_links_purge(9)__fwnode_links_move_consumers(9)__fw_devlink_pickup_dangling_consumers(9)fw_devlink_refresh_fwnode(9)device_is_dependent(9)device_pm_move_to_tail(9)device_link_wait_removal(9)device_link_add(9)device_link_del(9)device_link_remove(9)device_links_check_suppliers(9)__device_links_queue_sync_state(9)device_links_flush_sync_list(9)device_links_force_bind(9)device_links_driver_bound(9)__device_links_no_driver(9)device_links_no_driver(9)device_links_driver_cleanup(9)device_links_busy(9)device_links_unbind_consumers(9)device_links_purge(9)wait_for_init_devices_probe(9)fwnode_is_ancestor_of(9)fwnode_get_next_parent_dev(9)__fw_devlink_relax_cycles(9)fw_devlink_create_devlink(9)__fw_devlink_link_to_consumers(9)__fw_devlink_link_to_suppliers(9)dev_driver_string(9)device_release(9)devm_device_add_group(9)devices_kset_move_before(9)devices_kset_move_after(9)devices_kset_move_last(9)device_create_file(9)device_remove_file(9)device_remove_file_self(9)device_create_bin_file(9)device_remove_bin_file(9)device_initialize(9)kobject_has_children(9)dev_set_name(9)device_add(9)device_register(9)get_device(9)put_device(9)device_del(9)device_unregister(9)device_get_devnode(9)device_for_each_child(9)device_for_each_child_reverse(9)device_for_each_child_reverse_from(9)device_find_child(9)device_offline(9)device_online(9)__root_device_register(9)root_device_unregister(9)device_create(9)device_create_with_groups(9)device_destroy(9)device_rename(9)device_move(9)device_change_owner(9)device_shutdown(9)dev_err_probe(9)dev_warn_probe(9)set_primary_fwnode(9)set_secondary_fwnode(9)device_remove_of_node(9)device_add_of_node(9)device_set_of_node_from_dev(9)get_dev_from_fwnode(9)
and that's the whole thing bestie, you ate it up π
β¨ this page came out of ./drivers/base and it's dated October 2026, so like, future girl summer π bye now, go link some fwnodes 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