diff options
| author | Chris Metcalf <cmetcalf@tilera.com> | 2010-08-06 10:37:02 -0400 |
|---|---|---|
| committer | Chris Metcalf <cmetcalf@tilera.com> | 2010-08-06 10:37:02 -0400 |
| commit | ab11b487402f97975f3ac1eeea09c82f4431481e (patch) | |
| tree | 86337c5cbbd2b0c4bd07c0847a1dc7de3d898147 /drivers/base/platform.c | |
| parent | 1c689cbcf2c2b7a35cd237abddd9206bb1b6fee1 (diff) | |
| parent | fc1caf6eafb30ea185720e29f7f5eccca61ecd60 (diff) | |
Merge branch 'master' into for-linus
Diffstat (limited to 'drivers/base/platform.c')
| -rw-r--r-- | drivers/base/platform.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 4d99c8bdfedc..f699fabf403b 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | #include <linux/string.h> | 13 | #include <linux/string.h> |
| 14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
| 15 | #include <linux/of_device.h> | ||
| 15 | #include <linux/module.h> | 16 | #include <linux/module.h> |
| 16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 17 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
| @@ -635,6 +636,12 @@ static struct device_attribute platform_dev_attrs[] = { | |||
| 635 | static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) | 636 | static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) |
| 636 | { | 637 | { |
| 637 | struct platform_device *pdev = to_platform_device(dev); | 638 | struct platform_device *pdev = to_platform_device(dev); |
| 639 | int rc; | ||
| 640 | |||
| 641 | /* Some devices have extra OF data and an OF-style MODALIAS */ | ||
| 642 | rc = of_device_uevent(dev,env); | ||
| 643 | if (rc != -ENODEV) | ||
| 644 | return rc; | ||
| 638 | 645 | ||
| 639 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, | 646 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, |
| 640 | (pdev->id_entry) ? pdev->id_entry->name : pdev->name); | 647 | (pdev->id_entry) ? pdev->id_entry->name : pdev->name); |
| @@ -673,7 +680,11 @@ static int platform_match(struct device *dev, struct device_driver *drv) | |||
| 673 | struct platform_device *pdev = to_platform_device(dev); | 680 | struct platform_device *pdev = to_platform_device(dev); |
| 674 | struct platform_driver *pdrv = to_platform_driver(drv); | 681 | struct platform_driver *pdrv = to_platform_driver(drv); |
| 675 | 682 | ||
| 676 | /* match against the id table first */ | 683 | /* Attempt an OF style match first */ |
| 684 | if (of_driver_match_device(dev, drv)) | ||
| 685 | return 1; | ||
| 686 | |||
| 687 | /* Then try to match against the id table */ | ||
| 677 | if (pdrv->id_table) | 688 | if (pdrv->id_table) |
| 678 | return platform_match_id(pdrv->id_table, pdev) != NULL; | 689 | return platform_match_id(pdrv->id_table, pdev) != NULL; |
| 679 | 690 | ||
