aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/platform.c')
-rw-r--r--drivers/base/platform.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 62a8768d96b3..ec993aa6a2ca 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -584,10 +584,25 @@ static int platform_uevent(struct device *dev, struct kobj_uevent_env *env)
584{ 584{
585 struct platform_device *pdev = to_platform_device(dev); 585 struct platform_device *pdev = to_platform_device(dev);
586 586
587 add_uevent_var(env, "MODALIAS=platform:%s", pdev->name); 587 add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX,
588 (pdev->id_entry) ? pdev->id_entry->name : pdev->name);
588 return 0; 589 return 0;
589} 590}
590 591
592static const struct platform_device_id *platform_match_id(
593 struct platform_device_id *id,
594 struct platform_device *pdev)
595{
596 while (id->name[0]) {
597 if (strcmp(pdev->name, id->name) == 0) {
598 pdev->id_entry = id;
599 return id;
600 }
601 id++;
602 }
603 return NULL;
604}
605
591/** 606/**
592 * platform_match - bind platform device to platform driver. 607 * platform_match - bind platform device to platform driver.
593 * @dev: device. 608 * @dev: device.
@@ -604,7 +619,13 @@ static int platform_uevent(struct device *dev, struct kobj_uevent_env *env)
604static int platform_match(struct device *dev, struct device_driver *drv) 619static int platform_match(struct device *dev, struct device_driver *drv)
605{ 620{
606 struct platform_device *pdev = to_platform_device(dev); 621 struct platform_device *pdev = to_platform_device(dev);
622 struct platform_driver *pdrv = to_platform_driver(drv);
623
624 /* match against the id table first */
625 if (pdrv->id_table)
626 return platform_match_id(pdrv->id_table, pdev) != NULL;
607 627
628 /* fall-back to driver name match */
608 return (strcmp(pdev->name, drv->name) == 0); 629 return (strcmp(pdev->name, drv->name) == 0);
609} 630}
610 631