driver core: Add support for linking devices during device addition
authorSaravana Kannan <saravanak@google.com>
Wed, 4 Sep 2019 21:11:21 +0000 (14:11 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2019 15:29:50 +0000 (17:29 +0200)
commite2ae9bcc4aaacda04edb75c4eea93384719efaa5
tree9c01d02d0a1e67c4de38c94e27180f9411fc850d
parent372a67c0c5ef63f55bd1eb480d9555328d8ec0f2
driver core: Add support for linking devices during device addition

The firmware corresponding to a device (dev.fwnode) might be able to
provide functional dependency information between a device and its
supplier and consumer devices.  Tracking this functional dependency
allows optimizing device probe order and informing a supplier when all
its consumers have probed (and thereby actively managing their
resources).

The existing device links feature allows tracking and using
supplier-consumer relationships. So, this patch adds the add_links()
fwnode callback to allow firmware to create device links for each
device as the device is added.

However, when consumer devices are added, they might not have a supplier
device to link to despite needing mandatory resources/functionality from
one or more suppliers. A waiting_for_suppliers list is created to track
such consumers and retry linking them when new devices get added.

Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20190904211126.47518-3-saravanak@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/driver-api/device_link.rst
drivers/base/core.c
include/linux/device.h
include/linux/fwnode.h