diff options
author | Pavel Machek <pavel@ucw.cz> | 2005-09-03 18:56:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:06:16 -0400 |
commit | ca078bae813dd46c0f9b102fdfb4a3384641ff48 (patch) | |
tree | e3348f5dcb24159a522941aa2e3ee40bc9e0589b /drivers/ide | |
parent | 829ca9a30a2ddb727981d80fabdbff2ea86bc9ea (diff) |
[PATCH] swsusp: switch pm_message_t to struct
This adds type-checking to pm_message_t, so that people can't confuse it
with int or u32. It also allows us to fix "disk yoyo" during suspend (disk
spinning down/up/down).
[We've tried that before; since that cpufreq problems were fixed and I've
tried make allyes config and fixed resulting damage.]
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Alexander Nyberg <alexn@telia.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide.c | 4 | ||||
-rw-r--r-- | drivers/ide/pci/sc1200.c | 12 | ||||
-rw-r--r-- | drivers/ide/ppc/pmac.c | 8 |
3 files changed, 12 insertions, 12 deletions
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index dae1bd5b8c3e..73ca8f73917d 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -1229,7 +1229,7 @@ static int generic_ide_suspend(struct device *dev, pm_message_t state) | |||
1229 | rq.special = &args; | 1229 | rq.special = &args; |
1230 | rq.pm = &rqpm; | 1230 | rq.pm = &rqpm; |
1231 | rqpm.pm_step = ide_pm_state_start_suspend; | 1231 | rqpm.pm_step = ide_pm_state_start_suspend; |
1232 | rqpm.pm_state = state; | 1232 | rqpm.pm_state = state.event; |
1233 | 1233 | ||
1234 | return ide_do_drive_cmd(drive, &rq, ide_wait); | 1234 | return ide_do_drive_cmd(drive, &rq, ide_wait); |
1235 | } | 1235 | } |
@@ -1248,7 +1248,7 @@ static int generic_ide_resume(struct device *dev) | |||
1248 | rq.special = &args; | 1248 | rq.special = &args; |
1249 | rq.pm = &rqpm; | 1249 | rq.pm = &rqpm; |
1250 | rqpm.pm_step = ide_pm_state_start_resume; | 1250 | rqpm.pm_step = ide_pm_state_start_resume; |
1251 | rqpm.pm_state = 0; | 1251 | rqpm.pm_state = PM_EVENT_ON; |
1252 | 1252 | ||
1253 | return ide_do_drive_cmd(drive, &rq, ide_head_wait); | 1253 | return ide_do_drive_cmd(drive, &rq, ide_head_wait); |
1254 | } | 1254 | } |
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c index 10592cec6c43..24e21b2838c1 100644 --- a/drivers/ide/pci/sc1200.c +++ b/drivers/ide/pci/sc1200.c | |||
@@ -350,9 +350,9 @@ static int sc1200_suspend (struct pci_dev *dev, pm_message_t state) | |||
350 | { | 350 | { |
351 | ide_hwif_t *hwif = NULL; | 351 | ide_hwif_t *hwif = NULL; |
352 | 352 | ||
353 | printk("SC1200: suspend(%u)\n", state); | 353 | printk("SC1200: suspend(%u)\n", state.event); |
354 | 354 | ||
355 | if (state == 0) { | 355 | if (state.event == PM_EVENT_ON) { |
356 | // we only save state when going from full power to less | 356 | // we only save state when going from full power to less |
357 | 357 | ||
358 | // | 358 | // |
@@ -386,8 +386,8 @@ static int sc1200_suspend (struct pci_dev *dev, pm_message_t state) | |||
386 | /* You don't need to iterate over disks -- sysfs should have done that for you already */ | 386 | /* You don't need to iterate over disks -- sysfs should have done that for you already */ |
387 | 387 | ||
388 | pci_disable_device(dev); | 388 | pci_disable_device(dev); |
389 | pci_set_power_state(dev,state); | 389 | pci_set_power_state(dev, pci_choose_state(dev, state)); |
390 | dev->current_state = state; | 390 | dev->current_state = state.event; |
391 | return 0; | 391 | return 0; |
392 | } | 392 | } |
393 | 393 | ||
@@ -396,8 +396,8 @@ static int sc1200_resume (struct pci_dev *dev) | |||
396 | ide_hwif_t *hwif = NULL; | 396 | ide_hwif_t *hwif = NULL; |
397 | 397 | ||
398 | printk("SC1200: resume\n"); | 398 | printk("SC1200: resume\n"); |
399 | pci_set_power_state(dev,0); // bring chip back from sleep state | 399 | pci_set_power_state(dev, PCI_D0); // bring chip back from sleep state |
400 | dev->current_state = 0; | 400 | dev->current_state = PM_EVENT_ON; |
401 | pci_enable_device(dev); | 401 | pci_enable_device(dev); |
402 | // | 402 | // |
403 | // loop over all interfaces that are part of this pci device: | 403 | // loop over all interfaces that are part of this pci device: |
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index d2760b8ca159..87d1f8a1f41e 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -1509,7 +1509,7 @@ pmac_ide_macio_suspend(struct macio_dev *mdev, pm_message_t state) | |||
1509 | ide_hwif_t *hwif = (ide_hwif_t *)dev_get_drvdata(&mdev->ofdev.dev); | 1509 | ide_hwif_t *hwif = (ide_hwif_t *)dev_get_drvdata(&mdev->ofdev.dev); |
1510 | int rc = 0; | 1510 | int rc = 0; |
1511 | 1511 | ||
1512 | if (state != mdev->ofdev.dev.power.power_state && state >= 2) { | 1512 | if (state.event != mdev->ofdev.dev.power.power_state.event && state.event >= PM_EVENT_SUSPEND) { |
1513 | rc = pmac_ide_do_suspend(hwif); | 1513 | rc = pmac_ide_do_suspend(hwif); |
1514 | if (rc == 0) | 1514 | if (rc == 0) |
1515 | mdev->ofdev.dev.power.power_state = state; | 1515 | mdev->ofdev.dev.power.power_state = state; |
@@ -1524,7 +1524,7 @@ pmac_ide_macio_resume(struct macio_dev *mdev) | |||
1524 | ide_hwif_t *hwif = (ide_hwif_t *)dev_get_drvdata(&mdev->ofdev.dev); | 1524 | ide_hwif_t *hwif = (ide_hwif_t *)dev_get_drvdata(&mdev->ofdev.dev); |
1525 | int rc = 0; | 1525 | int rc = 0; |
1526 | 1526 | ||
1527 | if (mdev->ofdev.dev.power.power_state != 0) { | 1527 | if (mdev->ofdev.dev.power.power_state.event != PM_EVENT_ON) { |
1528 | rc = pmac_ide_do_resume(hwif); | 1528 | rc = pmac_ide_do_resume(hwif); |
1529 | if (rc == 0) | 1529 | if (rc == 0) |
1530 | mdev->ofdev.dev.power.power_state = PMSG_ON; | 1530 | mdev->ofdev.dev.power.power_state = PMSG_ON; |
@@ -1613,7 +1613,7 @@ pmac_ide_pci_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1613 | ide_hwif_t *hwif = (ide_hwif_t *)pci_get_drvdata(pdev); | 1613 | ide_hwif_t *hwif = (ide_hwif_t *)pci_get_drvdata(pdev); |
1614 | int rc = 0; | 1614 | int rc = 0; |
1615 | 1615 | ||
1616 | if (state != pdev->dev.power.power_state && state >= 2) { | 1616 | if (state.event != pdev->dev.power.power_state.event && state.event >= 2) { |
1617 | rc = pmac_ide_do_suspend(hwif); | 1617 | rc = pmac_ide_do_suspend(hwif); |
1618 | if (rc == 0) | 1618 | if (rc == 0) |
1619 | pdev->dev.power.power_state = state; | 1619 | pdev->dev.power.power_state = state; |
@@ -1628,7 +1628,7 @@ pmac_ide_pci_resume(struct pci_dev *pdev) | |||
1628 | ide_hwif_t *hwif = (ide_hwif_t *)pci_get_drvdata(pdev); | 1628 | ide_hwif_t *hwif = (ide_hwif_t *)pci_get_drvdata(pdev); |
1629 | int rc = 0; | 1629 | int rc = 0; |
1630 | 1630 | ||
1631 | if (pdev->dev.power.power_state != 0) { | 1631 | if (pdev->dev.power.power_state.event != PM_EVENT_ON) { |
1632 | rc = pmac_ide_do_resume(hwif); | 1632 | rc = pmac_ide_do_resume(hwif); |
1633 | if (rc == 0) | 1633 | if (rc == 0) |
1634 | pdev->dev.power.power_state = PMSG_ON; | 1634 | pdev->dev.power.power_state = PMSG_ON; |