diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-06-08 09:48:17 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-07-05 18:14:51 -0400 |
commit | 8cec0e7b4c7c0b76f2b5285f250211ad81c3eafd (patch) | |
tree | 84d3988600e37906d8e9972ad8ae31a0ea4684cf | |
parent | 2e13cba8dc35774bf1d7169733e876c5b7adee54 (diff) |
of/device: Add OF style matching helper function
Add of_driver_match_device() helper function. This function can be used
by bus types to determine if a driver works with a device when using OF
style matching. If CONFIG_OF is unselected, then it is a nop.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: Michal Simek <monstr@monstr.eu>
CC: Grant Likely <grant.likely@secretlab.ca>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Stephen Rothwell <sfr@canb.auug.org.au>
CC: linux-kernel@vger.kernel.org
CC: microblaze-uclinux@itee.uq.edu.au
CC: linuxppc-dev@ozlabs.org
CC: devicetree-discuss@lists.ozlabs.org
-rw-r--r-- | drivers/of/device.c | 2 | ||||
-rw-r--r-- | include/linux/of_device.h | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/drivers/of/device.c b/drivers/of/device.c index c2a98f5ca80d..5282a202f5a9 100644 --- a/drivers/of/device.c +++ b/drivers/of/device.c | |||
@@ -20,7 +20,7 @@ | |||
20 | const struct of_device_id *of_match_device(const struct of_device_id *matches, | 20 | const struct of_device_id *of_match_device(const struct of_device_id *matches, |
21 | const struct device *dev) | 21 | const struct device *dev) |
22 | { | 22 | { |
23 | if (!dev->of_node) | 23 | if ((!matches) || (!dev->of_node)) |
24 | return NULL; | 24 | return NULL; |
25 | return of_match_node(matches, dev->of_node); | 25 | return of_match_node(matches, dev->of_node); |
26 | } | 26 | } |
diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 238e92e007e6..91d75fb0c726 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h | |||
@@ -30,6 +30,17 @@ | |||
30 | extern const struct of_device_id *of_match_device( | 30 | extern const struct of_device_id *of_match_device( |
31 | const struct of_device_id *matches, const struct device *dev); | 31 | const struct of_device_id *matches, const struct device *dev); |
32 | 32 | ||
33 | /** | ||
34 | * of_driver_match_device - Tell if a driver's of_match_table matches a device. | ||
35 | * @drv: the device_driver structure to test | ||
36 | * @dev: the device structure to match against | ||
37 | */ | ||
38 | static inline int of_driver_match_device(const struct device *dev, | ||
39 | const struct device_driver *drv) | ||
40 | { | ||
41 | return of_match_device(drv->of_match_table, dev) != NULL; | ||
42 | } | ||
43 | |||
33 | extern struct of_device *of_dev_get(struct of_device *dev); | 44 | extern struct of_device *of_dev_get(struct of_device *dev); |
34 | extern void of_dev_put(struct of_device *dev); | 45 | extern void of_dev_put(struct of_device *dev); |
35 | 46 | ||
@@ -48,6 +59,14 @@ extern ssize_t of_device_get_modalias(struct device *dev, | |||
48 | extern int of_device_uevent(struct device *dev, struct kobj_uevent_env *env); | 59 | extern int of_device_uevent(struct device *dev, struct kobj_uevent_env *env); |
49 | 60 | ||
50 | 61 | ||
62 | #else /* CONFIG_OF_DEVICE */ | ||
63 | |||
64 | static inline int of_driver_match_device(struct device *dev, | ||
65 | struct device_driver *drv) | ||
66 | { | ||
67 | return 0; | ||
68 | } | ||
69 | |||
51 | #endif /* CONFIG_OF_DEVICE */ | 70 | #endif /* CONFIG_OF_DEVICE */ |
52 | 71 | ||
53 | #endif /* _LINUX_OF_DEVICE_H */ | 72 | #endif /* _LINUX_OF_DEVICE_H */ |