diff options
Diffstat (limited to 'drivers/base/platform.c')
-rw-r--r-- | drivers/base/platform.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 3a94b799f166..bc78848dd59a 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -677,7 +677,17 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *a, | |||
677 | char *buf) | 677 | char *buf) |
678 | { | 678 | { |
679 | struct platform_device *pdev = to_platform_device(dev); | 679 | struct platform_device *pdev = to_platform_device(dev); |
680 | int len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name); | 680 | int len; |
681 | |||
682 | len = of_device_get_modalias(dev, buf, PAGE_SIZE -1); | ||
683 | if (len != -ENODEV) | ||
684 | return len; | ||
685 | |||
686 | len = acpi_device_modalias(dev, buf, PAGE_SIZE -1); | ||
687 | if (len != -ENODEV) | ||
688 | return len; | ||
689 | |||
690 | len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name); | ||
681 | 691 | ||
682 | return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; | 692 | return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; |
683 | } | 693 | } |
@@ -699,6 +709,10 @@ static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) | |||
699 | if (rc != -ENODEV) | 709 | if (rc != -ENODEV) |
700 | return rc; | 710 | return rc; |
701 | 711 | ||
712 | rc = acpi_device_uevent_modalias(dev, env); | ||
713 | if (rc != -ENODEV) | ||
714 | return rc; | ||
715 | |||
702 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, | 716 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, |
703 | pdev->name); | 717 | pdev->name); |
704 | return 0; | 718 | return 0; |