Commit:     5d38998ed15b31f524bde9a193d60150af30d916
Parent:     b3bd86e2fdce01d6b49271a553d2a18b3e0510f3
Author:     Rene Herman <[EMAIL PROTECTED]>
AuthorDate: Wed Feb 6 01:40:05 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Feb 6 10:41:20 2008 -0800

    PNP: do not test PNP_DRIVER_RES_DO_NOT_CHANGE on suspend/resume
    The PNP_DRIVER_RES_DO_NOT_CHANGE flag is meant to signify that the PNP core
    should not change resources for the device -- not that it shouldn't
    disable/enable the device on suspend/resume.
    ALSA ISAPnP drivers set PNP_DRIVER_RES_DO_NOT_CHANAGE (0x0001) through
    setting PNP_DRIVER_RES_DISABLE (0x0003).  The latter including the former
    may in itself be considered rather unexpected but doesn't change that
    suspend/resume wouldn't seem to have any business testing the flag.
    As reported by Ondrej Zary for snd-cs4236, ALSA driven ISAPnP cards don't
    survive swsusp hibernation with the resume skipping setting the resources
    due to testing the flag -- the same test in the suspend path isn't enough
    to keep hibernation from disabling the card it seems.
    These tests were added (in 2005) by Piere Ossman in commit
    68094e3251a664ee1389fcf179497237cbf78331, "alsa: Improved PnP suspend
    support" who doesn't remember why.  This deletes them.
    Signed-off-by: Rene Herman <[EMAIL PROTECTED]>
    Tested-by: Ondrej Zary <[EMAIL PROTECTED]>
    Cc: Bjorn Helgaas <[EMAIL PROTECTED]>
    Cc: Pierre Ossman <[EMAIL PROTECTED]>
    Cc: Adam Belay <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 drivers/pnp/driver.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
index a262762..12a1645 100644
--- a/drivers/pnp/driver.c
+++ b/drivers/pnp/driver.c
@@ -161,8 +161,7 @@ static int pnp_bus_suspend(struct device *dev, pm_message_t 
                        return error;
-       if (!(pnp_drv->flags & PNP_DRIVER_RES_DO_NOT_CHANGE) &&
-           pnp_can_disable(pnp_dev)) {
+       if (pnp_can_disable(pnp_dev)) {
                error = pnp_stop_dev(pnp_dev);
                if (error)
                        return error;
@@ -185,14 +184,17 @@ static int pnp_bus_resume(struct device *dev)
        if (pnp_dev->protocol && pnp_dev->protocol->resume)
-       if (!(pnp_drv->flags & PNP_DRIVER_RES_DO_NOT_CHANGE)) {
+       if (pnp_can_write(pnp_dev)) {
                error = pnp_start_dev(pnp_dev);
                if (error)
                        return error;
-       if (pnp_drv->resume)
-               return pnp_drv->resume(pnp_dev);
+       if (pnp_drv->resume) {
+               error = pnp_drv->resume(pnp_dev);
+               if (error)
+                       return error;
+       }
        return 0;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to