aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan <alan@lxorguk.ukuu.org.uk>2007-02-20 12:44:25 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-21 04:58:20 -0500
commitaa6de4942c25f05cb7f4aa8efa20c5ec0884d8f1 (patch)
treea8cfa86d4ff27eb37079c51072fc5695c61ea7a3
parente852f7054df7cf4be686d8cff9c33333a36b59e9 (diff)
pata_cs5520: suspend/resume
The CS5520 isn't just an ATA controller and we must not pci_disable_device it as it turns into pci_disable_computer. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/ata/pata_cs5520.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c
index 1ce8fcfd7826..b49d8b70577a 100644
--- a/drivers/ata/pata_cs5520.c
+++ b/drivers/ata/pata_cs5520.c
@@ -325,6 +325,30 @@ static int cs5520_reinit_one(struct pci_dev *pdev)
325 pci_write_config_byte(pdev, 0x60, pcicfg | 0x40); 325 pci_write_config_byte(pdev, 0x60, pcicfg | 0x40);
326 return ata_pci_device_resume(pdev); 326 return ata_pci_device_resume(pdev);
327} 327}
328
329/**
330 * cs5520_pci_device_suspend - device suspend
331 * @pdev: PCI device
332 *
333 * We have to cut and waste bits from the standard method because
334 * the 5520 is a bit odd and not just a pure ATA device. As a result
335 * we must not disable it. The needed code is short and this avoids
336 * chip specific mess in the core code.
337 */
338
339static int cs5520_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
340{
341 struct ata_host *host = dev_get_drvdata(&pdev->dev);
342 int rc = 0;
343
344 rc = ata_host_suspend(host, mesg);
345 if (rc)
346 return rc;
347
348 pci_save_state(pdev);
349 return 0;
350}
351
328/* For now keep DMA off. We can set it for all but A rev CS5510 once the 352/* For now keep DMA off. We can set it for all but A rev CS5510 once the
329 core ATA code can handle it */ 353 core ATA code can handle it */
330 354
@@ -340,7 +364,7 @@ static struct pci_driver cs5520_pci_driver = {
340 .id_table = pata_cs5520, 364 .id_table = pata_cs5520,
341 .probe = cs5520_init_one, 365 .probe = cs5520_init_one,
342 .remove = cs5520_remove_one, 366 .remove = cs5520_remove_one,
343 .suspend = ata_pci_device_suspend, 367 .suspend = cs5520_pci_device_suspend,
344 .resume = cs5520_reinit_one, 368 .resume = cs5520_reinit_one,
345}; 369};
346 370