• Home
  • Raw
  • Download

Lines Matching full:links

48 /* Device links support. */
162 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_is_dependent()
180 switch (supplier->links.status) { in device_link_init_status()
182 switch (consumer->links.status) { in device_link_init_status()
199 switch (consumer->links.status) { in device_link_init_status()
235 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_reorder_to_tail()
596 list_for_each_entry(link, &supplier->links.consumers, s_node) { in device_link_add()
696 list_add_tail_rcu(&link->s_node, &supplier->links.consumers); in device_link_add()
697 list_add_tail_rcu(&link->c_node, &consumer->links.suppliers); in device_link_add()
737 * The caller is responsible for adding the links to the supplier devices once
739 * wait_for_suppliers list once links to all the suppliers have been created.
748 list_add_tail(&consumer->links.needs_suppliers, &wait_for_suppliers); in device_link_wait_for_supplier()
749 consumer->links.need_for_probe = need_for_probe; in device_link_wait_for_supplier()
764 * device_link_add_missing_supplier_links - Add links from consumer devices to
770 * supplier links. If that succeeds, the consumer device is removed from
775 * added all the supplier links for the consumer device. It should return an
787 links.needs_suppliers) { in device_link_add_missing_supplier_links()
790 list_del_init(&dev->links.needs_suppliers); in device_link_add_missing_supplier_links()
792 dev->links.need_for_probe = false; in device_link_add_missing_supplier_links()
841 * Care is required for hotplugged devices: Their links are purged on removal
869 list_for_each_entry(link, &supplier->links.consumers, s_node) { in device_link_remove()
884 list_for_each_entry(link, &dev->links.suppliers, c_node) { in device_links_missing_supplier()
888 if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) { in device_links_missing_supplier()
901 * Check links from this device to any suppliers. Walk the list of the device's
902 * links to suppliers and see if all of them are available. If not, simply
907 * that function checks the device's links to consumers. This means we need to
911 * Links without the DL_FLAG_MANAGED flag set are ignored.
923 if (!list_empty(&dev->links.needs_suppliers) && in device_links_check_suppliers()
924 dev->links.need_for_probe) { in device_links_check_suppliers()
932 list_for_each_entry(link, &dev->links.suppliers, c_node) { in device_links_check_suppliers()
944 dev->links.status = DL_DEV_PROBING; in device_links_check_suppliers()
955 * Queues a device for a sync_state() callback when the device links write lock
956 * isn't held. This allows the sync_state() execution flow to use device links
978 list_for_each_entry(link, &dev->links.consumers, s_node) { in __device_links_queue_sync_state()
992 if (WARN_ON(!list_empty(&dev->links.defer_hook))) in __device_links_queue_sync_state()
996 list_add_tail(&dev->links.defer_hook, list); in __device_links_queue_sync_state()
1014 list_for_each_entry_safe(dev, tmp, list, links.defer_hook) { in device_links_flush_sync_list()
1015 list_del_init(&dev->links.defer_hook); in device_links_flush_sync_list()
1053 list_for_each_entry_safe(dev, tmp, &deferred_sync, links.defer_hook) { in device_links_supplier_sync_state_resume()
1058 list_del_init(&dev->links.defer_hook); in device_links_supplier_sync_state_resume()
1076 if (list_empty(&sup->links.defer_hook) && dev_has_sync_state(sup)) in __device_links_supplier_defer_sync()
1077 list_add_tail(&sup->links.defer_hook, &deferred_sync); in __device_links_supplier_defer_sync()
1095 val = !list_empty(&dev->links.needs_suppliers) in waiting_for_supplier_show()
1096 && dev->links.need_for_probe; in waiting_for_supplier_show()
1104 * device_links_driver_bound - Update device links after probing its driver.
1105 * @dev: Device to update the links for.
1107 * The probe has been successful, so update links from this device to any
1110 * Also change the status of @dev's links to suppliers to "active".
1112 * Links without the DL_FLAG_MANAGED flag set are ignored.
1121 * the device links it needs to or make new device links as it needs in device_links_driver_bound()
1125 list_del_init(&dev->links.needs_suppliers); in device_links_driver_bound()
1131 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_links_driver_bound()
1136 * Links created during consumer probe may be in the "consumer in device_links_driver_bound()
1157 list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) { in device_links_driver_bound()
1188 dev->links.status = DL_DEV_DRIVER_BOUND; in device_links_driver_bound()
1196 * __device_links_no_driver - Update links of a device without a driver.
1199 * Delete all non-persistent links from this device to any suppliers.
1201 * Persistent links stay around, but their status is changed to "available",
1205 * Links without the DL_FLAG_MANAGED flag set are ignored.
1211 list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) { in __device_links_no_driver()
1224 if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) { in __device_links_no_driver()
1232 dev->links.status = DL_DEV_NO_DRIVER; in __device_links_no_driver()
1236 * device_links_no_driver - Update links after failing driver probe.
1239 * Clean up leftover links to consumers for @dev and invoke
1240 * %__device_links_no_driver() to update links to suppliers for it as
1243 * Links without the DL_FLAG_MANAGED flag set are ignored.
1251 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_links_no_driver()
1273 * device_links_driver_cleanup - Update links after driver removal.
1276 * Update links to consumers for @dev by changing their status to "dormant" and
1277 * invoke %__device_links_no_driver() to update links to suppliers for it as
1280 * Links without the DL_FLAG_MANAGED flag set are ignored.
1288 list_for_each_entry_safe(link, ln, &dev->links.consumers, s_node) { in device_links_driver_cleanup()
1296 * autoremove the links between this @dev and its consumer in device_links_driver_cleanup()
1307 list_del_init(&dev->links.defer_hook); in device_links_driver_cleanup()
1314 * device_links_busy - Check if there are any busy links to consumers.
1325 * Links without the DL_FLAG_MANAGED flag set are ignored.
1334 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_links_busy()
1346 dev->links.status = DL_DEV_UNBINDING; in device_links_busy()
1356 * Walk the list of links to consumers for @dev and if any of them is in the
1365 * Links without the DL_FLAG_MANAGED flag set are ignored.
1374 list_for_each_entry(link, &dev->links.consumers, s_node) { in device_links_unbind_consumers()
1407 * device_links_purge - Delete existing links to other devices.
1418 list_del_init(&dev->links.needs_suppliers); in device_links_purge()
1422 * Delete all of the remaining links from this device to any other in device_links_purge()
1427 list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) { in device_links_purge()
1432 list_for_each_entry_safe_reverse(link, ln, &dev->links.consumers, s_node) { in device_links_purge()
1507 list_add_tail(&dev->links.defer_hook, &deferred_fw_devlink); in fw_devlink_link_device()
1520 * fw_devlink_pause - Pause parsing of fwnode to create device links
1522 * Calling this function defers any fwnode parsing to create device links until
1528 * links.
1569 /** fw_devlink_resume - Resume parsing of fwnode to create device links
1599 list_for_each_entry_safe(dev, tmp, &probe_list, links.defer_hook) { in fw_devlink_resume()
1600 list_del_init(&dev->links.defer_hook); in fw_devlink_resume()
1604 /* Device links support end. */
2456 INIT_LIST_HEAD(&dev->links.consumers); in device_initialize()
2457 INIT_LIST_HEAD(&dev->links.suppliers); in device_initialize()
2458 INIT_LIST_HEAD(&dev->links.needs_suppliers); in device_initialize()
2459 INIT_LIST_HEAD(&dev->links.defer_hook); in device_initialize()
2460 dev->links.status = DL_DEV_NO_DRIVER; in device_initialize()