summaryrefslogtreecommitdiff
path: root/include/pcmcia
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2009-11-03 10:54:58 +0100
committerRafael J. Wysocki <rjw@sisk.pl>2009-11-03 10:54:58 +0100
commit9905d1b411946fb3fb228e8c6529fd94afda8a92 (patch)
tree8257b26f4b3d7c2b8be082233ac9c294b5387f8b /include/pcmcia
parent1836d95928a0f41ada0cbb2a6c4e46b027db9491 (diff)
downloadlwn-9905d1b411946fb3fb228e8c6529fd94afda8a92.tar.gz
lwn-9905d1b411946fb3fb228e8c6529fd94afda8a92.zip
PM / yenta: Split resume into early and late parts (rev. 4)
Commit 0c570cdeb8fdfcb354a3e9cd81bfc6a09c19de0c (PM / yenta: Fix cardbus suspend/resume regression) caused resume to fail on systems with two CardBus bridges. While the exact nature of the failure is not known at the moment, it can be worked around by splitting the yenta resume into an early part, executed during the early phase of resume, that will only resume the socket and power it up if there was a card in it during suspend, and a late part, executed during "regular" resume, that will carry out all of the remaining yenta resume operations. Fixes http://bugzilla.kernel.org/show_bug.cgi?id=14334, which is a listed regression from 2.6.31. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Dominik Brodowski <linux@dominikbrodowski.net> Reported-by: Stephen J. Gowdy <gowdy@cern.ch> Tested-by: Jose Marino <braket@hotmail.com>
Diffstat (limited to 'include/pcmcia')
-rw-r--r--include/pcmcia/ss.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h
index d696a692d94a..e0f6feb8588c 100644
--- a/include/pcmcia/ss.h
+++ b/include/pcmcia/ss.h
@@ -262,6 +262,8 @@ struct pcmcia_socket {
struct device dev;
/* data internal to the socket driver */
void *driver_data;
+ /* status of the card during resume from a system sleep state */
+ int resume_status;
};
@@ -280,6 +282,8 @@ extern struct pccard_resource_ops pccard_nonstatic_ops;
/* socket drivers are expected to use these callbacks in their .drv struct */
extern int pcmcia_socket_dev_suspend(struct device *dev);
+extern void pcmcia_socket_dev_early_resume(struct device *dev);
+extern void pcmcia_socket_dev_late_resume(struct device *dev);
extern int pcmcia_socket_dev_resume(struct device *dev);
/* socket drivers use this callback in their IRQ handler */