diff options
-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 */ |