Commit ad8d52b8 authored by Russell King's avatar Russell King

pcmcia: ds: fix suspend/resume

PCMCIA suspend/resume no longer works since the commit mentioned below,
as the callbacks are no longer made.  Convert the driver to the new
dev_pm_ops, which restores the suspend/resume functionality.  Tested on
the arm arch Assabet platform.

Fixes: aa8e54b5 ("PM / sleep: Go direct_complete if driver has no callbacks")
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 9395452b
...@@ -977,7 +977,7 @@ static int pcmcia_bus_uevent(struct device *dev, struct kobj_uevent_env *env) ...@@ -977,7 +977,7 @@ static int pcmcia_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
/************************ runtime PM support ***************************/ /************************ runtime PM support ***************************/
static int pcmcia_dev_suspend(struct device *dev, pm_message_t state); static int pcmcia_dev_suspend(struct device *dev);
static int pcmcia_dev_resume(struct device *dev); static int pcmcia_dev_resume(struct device *dev);
static int runtime_suspend(struct device *dev) static int runtime_suspend(struct device *dev)
...@@ -985,7 +985,7 @@ static int runtime_suspend(struct device *dev) ...@@ -985,7 +985,7 @@ static int runtime_suspend(struct device *dev)
int rc; int rc;
device_lock(dev); device_lock(dev);
rc = pcmcia_dev_suspend(dev, PMSG_SUSPEND); rc = pcmcia_dev_suspend(dev);
device_unlock(dev); device_unlock(dev);
return rc; return rc;
} }
...@@ -1135,7 +1135,7 @@ ATTRIBUTE_GROUPS(pcmcia_dev); ...@@ -1135,7 +1135,7 @@ ATTRIBUTE_GROUPS(pcmcia_dev);
/* PM support, also needed for reset */ /* PM support, also needed for reset */
static int pcmcia_dev_suspend(struct device *dev, pm_message_t state) static int pcmcia_dev_suspend(struct device *dev)
{ {
struct pcmcia_device *p_dev = to_pcmcia_dev(dev); struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
struct pcmcia_driver *p_drv = NULL; struct pcmcia_driver *p_drv = NULL;
...@@ -1410,6 +1410,9 @@ static struct class_interface pcmcia_bus_interface __refdata = { ...@@ -1410,6 +1410,9 @@ static struct class_interface pcmcia_bus_interface __refdata = {
.remove_dev = &pcmcia_bus_remove_socket, .remove_dev = &pcmcia_bus_remove_socket,
}; };
static const struct dev_pm_ops pcmcia_bus_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(pcmcia_dev_suspend, pcmcia_dev_resume)
};
struct bus_type pcmcia_bus_type = { struct bus_type pcmcia_bus_type = {
.name = "pcmcia", .name = "pcmcia",
...@@ -1418,8 +1421,7 @@ struct bus_type pcmcia_bus_type = { ...@@ -1418,8 +1421,7 @@ struct bus_type pcmcia_bus_type = {
.dev_groups = pcmcia_dev_groups, .dev_groups = pcmcia_dev_groups,
.probe = pcmcia_device_probe, .probe = pcmcia_device_probe,
.remove = pcmcia_device_remove, .remove = pcmcia_device_remove,
.suspend = pcmcia_dev_suspend, .pm = &pcmcia_bus_pm_ops,
.resume = pcmcia_dev_resume,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment