diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 17:32:24 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 17:32:24 -0400 |
commit | a348a7e6fdbcd2d5192a09719a479bb238fde727 (patch) | |
tree | 5ff94185f4e5a810777469d7fe7832a8ec2d3430 /drivers/base/platform.c | |
parent | 808347f6a31792079e345ec865e9cfcb6e8ae6b2 (diff) | |
parent | 28d0325ce6e0a52f53d8af687e6427fee59004d3 (diff) |
Merge commit 'v2.6.31-rc1' into dmaengine
Diffstat (limited to 'drivers/base/platform.c')
-rw-r--r-- | drivers/base/platform.c | 43 |
1 files changed, 16 insertions, 27 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 8b4708e06244..81cb01bfc356 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -69,7 +69,8 @@ EXPORT_SYMBOL_GPL(platform_get_irq); | |||
69 | * @name: resource name | 69 | * @name: resource name |
70 | */ | 70 | */ |
71 | struct resource *platform_get_resource_byname(struct platform_device *dev, | 71 | struct resource *platform_get_resource_byname(struct platform_device *dev, |
72 | unsigned int type, char *name) | 72 | unsigned int type, |
73 | const char *name) | ||
73 | { | 74 | { |
74 | int i; | 75 | int i; |
75 | 76 | ||
@@ -88,7 +89,7 @@ EXPORT_SYMBOL_GPL(platform_get_resource_byname); | |||
88 | * @dev: platform device | 89 | * @dev: platform device |
89 | * @name: IRQ name | 90 | * @name: IRQ name |
90 | */ | 91 | */ |
91 | int platform_get_irq_byname(struct platform_device *dev, char *name) | 92 | int platform_get_irq_byname(struct platform_device *dev, const char *name) |
92 | { | 93 | { |
93 | struct resource *r = platform_get_resource_byname(dev, IORESOURCE_IRQ, | 94 | struct resource *r = platform_get_resource_byname(dev, IORESOURCE_IRQ, |
94 | name); | 95 | name); |
@@ -244,7 +245,7 @@ int platform_device_add(struct platform_device *pdev) | |||
244 | if (pdev->id != -1) | 245 | if (pdev->id != -1) |
245 | dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); | 246 | dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); |
246 | else | 247 | else |
247 | dev_set_name(&pdev->dev, pdev->name); | 248 | dev_set_name(&pdev->dev, "%s", pdev->name); |
248 | 249 | ||
249 | for (i = 0; i < pdev->num_resources; i++) { | 250 | for (i = 0; i < pdev->num_resources; i++) { |
250 | struct resource *p, *r = &pdev->resource[i]; | 251 | struct resource *p, *r = &pdev->resource[i]; |
@@ -469,22 +470,6 @@ static void platform_drv_shutdown(struct device *_dev) | |||
469 | drv->shutdown(dev); | 470 | drv->shutdown(dev); |
470 | } | 471 | } |
471 | 472 | ||
472 | static int platform_drv_suspend(struct device *_dev, pm_message_t state) | ||
473 | { | ||
474 | struct platform_driver *drv = to_platform_driver(_dev->driver); | ||
475 | struct platform_device *dev = to_platform_device(_dev); | ||
476 | |||
477 | return drv->suspend(dev, state); | ||
478 | } | ||
479 | |||
480 | static int platform_drv_resume(struct device *_dev) | ||
481 | { | ||
482 | struct platform_driver *drv = to_platform_driver(_dev->driver); | ||
483 | struct platform_device *dev = to_platform_device(_dev); | ||
484 | |||
485 | return drv->resume(dev); | ||
486 | } | ||
487 | |||
488 | /** | 473 | /** |
489 | * platform_driver_register | 474 | * platform_driver_register |
490 | * @drv: platform driver structure | 475 | * @drv: platform driver structure |
@@ -498,10 +483,10 @@ int platform_driver_register(struct platform_driver *drv) | |||
498 | drv->driver.remove = platform_drv_remove; | 483 | drv->driver.remove = platform_drv_remove; |
499 | if (drv->shutdown) | 484 | if (drv->shutdown) |
500 | drv->driver.shutdown = platform_drv_shutdown; | 485 | drv->driver.shutdown = platform_drv_shutdown; |
501 | if (drv->suspend) | 486 | if (drv->suspend || drv->resume) |
502 | drv->driver.suspend = platform_drv_suspend; | 487 | pr_warning("Platform driver '%s' needs updating - please use " |
503 | if (drv->resume) | 488 | "dev_pm_ops\n", drv->driver.name); |
504 | drv->driver.resume = platform_drv_resume; | 489 | |
505 | return driver_register(&drv->driver); | 490 | return driver_register(&drv->driver); |
506 | } | 491 | } |
507 | EXPORT_SYMBOL_GPL(platform_driver_register); | 492 | EXPORT_SYMBOL_GPL(platform_driver_register); |
@@ -633,10 +618,12 @@ static int platform_match(struct device *dev, struct device_driver *drv) | |||
633 | 618 | ||
634 | static int platform_legacy_suspend(struct device *dev, pm_message_t mesg) | 619 | static int platform_legacy_suspend(struct device *dev, pm_message_t mesg) |
635 | { | 620 | { |
621 | struct platform_driver *pdrv = to_platform_driver(dev->driver); | ||
622 | struct platform_device *pdev = to_platform_device(dev); | ||
636 | int ret = 0; | 623 | int ret = 0; |
637 | 624 | ||
638 | if (dev->driver && dev->driver->suspend) | 625 | if (dev->driver && pdrv->suspend) |
639 | ret = dev->driver->suspend(dev, mesg); | 626 | ret = pdrv->suspend(pdev, mesg); |
640 | 627 | ||
641 | return ret; | 628 | return ret; |
642 | } | 629 | } |
@@ -667,10 +654,12 @@ static int platform_legacy_resume_early(struct device *dev) | |||
667 | 654 | ||
668 | static int platform_legacy_resume(struct device *dev) | 655 | static int platform_legacy_resume(struct device *dev) |
669 | { | 656 | { |
657 | struct platform_driver *pdrv = to_platform_driver(dev->driver); | ||
658 | struct platform_device *pdev = to_platform_device(dev); | ||
670 | int ret = 0; | 659 | int ret = 0; |
671 | 660 | ||
672 | if (dev->driver && dev->driver->resume) | 661 | if (dev->driver && pdrv->resume) |
673 | ret = dev->driver->resume(dev); | 662 | ret = pdrv->resume(pdev); |
674 | 663 | ||
675 | return ret; | 664 | return ret; |
676 | } | 665 | } |