From: Grant Likely Date: Tue, 8 Jun 2010 13:48:17 +0000 (-0600) Subject: of/device: Add OF style matching helper function X-Git-Tag: v2.6.36-rc1~543^2~40 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=8cec0e7b4c7c0b76f2b5285f250211ad81c3eafd;p=~emulex%2Finfiniband.git 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 CC: Greg Kroah-Hartman CC: Michal Simek CC: Grant Likely CC: Benjamin Herrenschmidt CC: Stephen Rothwell CC: linux-kernel@vger.kernel.org CC: microblaze-uclinux@itee.uq.edu.au CC: linuxppc-dev@ozlabs.org CC: devicetree-discuss@lists.ozlabs.org --- diff --git a/drivers/of/device.c b/drivers/of/device.c index c2a98f5ca80..5282a202f5a 100644 --- a/drivers/of/device.c +++ b/drivers/of/device.c @@ -20,7 +20,7 @@ const struct of_device_id *of_match_device(const struct of_device_id *matches, const struct device *dev) { - if (!dev->of_node) + if ((!matches) || (!dev->of_node)) return NULL; return of_match_node(matches, dev->of_node); } diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 238e92e007e..91d75fb0c72 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h @@ -30,6 +30,17 @@ extern const struct of_device_id *of_match_device( const struct of_device_id *matches, const struct device *dev); +/** + * of_driver_match_device - Tell if a driver's of_match_table matches a device. + * @drv: the device_driver structure to test + * @dev: the device structure to match against + */ +static inline int of_driver_match_device(const struct device *dev, + const struct device_driver *drv) +{ + return of_match_device(drv->of_match_table, dev) != NULL; +} + extern struct of_device *of_dev_get(struct of_device *dev); extern void of_dev_put(struct of_device *dev); @@ -48,6 +59,14 @@ extern ssize_t of_device_get_modalias(struct device *dev, extern int of_device_uevent(struct device *dev, struct kobj_uevent_env *env); +#else /* CONFIG_OF_DEVICE */ + +static inline int of_driver_match_device(struct device *dev, + struct device_driver *drv) +{ + return 0; +} + #endif /* CONFIG_OF_DEVICE */ #endif /* _LINUX_OF_DEVICE_H */