diff options
author | Tomeu Vizoso <tomeu.vizoso@collabora.com> | 2016-02-15 11:25:06 +0300 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2016-02-16 19:28:51 +0300 |
commit | 656b8035b0eebcac0172b24ca04e448c70dd047f (patch) | |
tree | 9310d64d29e0130957ef33362d34c46392f6b42f /Documentation/driver-model | |
parent | 17f29d36e4732b91ae299a163d34ed1954500f42 (diff) | |
download | linux-656b8035b0eebcac0172b24ca04e448c70dd047f.tar.xz |
ARM: 8524/1: driver cohandle -EPROBE_DEFER from bus_type.match()
Allow implementations of the match() callback in struct bus_type to
return errors and if it's -EPROBE_DEFER then queue the device for
deferred probing.
This is useful to buses such as AMBA in which devices are registered
before their matching information can be retrieved from the HW
(typically because a clock driver hasn't probed yet).
[changed if-else code structure, adjusted documentation to match the code,
extended comments]
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'Documentation/driver-model')
-rw-r--r-- | Documentation/driver-model/porting.txt | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Documentation/driver-model/porting.txt b/Documentation/driver-model/porting.txt index 92d86f7271b4..453053f1661f 100644 --- a/Documentation/driver-model/porting.txt +++ b/Documentation/driver-model/porting.txt @@ -340,8 +340,10 @@ comparison: int (*match)(struct device * dev, struct device_driver * drv); -match should return '1' if the driver supports the device, and '0' -otherwise. +match should return positive value if the driver supports the device, +and zero otherwise. It may also return error code (for example +-EPROBE_DEFER) if determining that given driver supports the device is +not possible. When a device is registered, the bus's list of drivers is iterated over. bus->match() is called for each one until a match is found. |