]> Pileus Git - ~andy/linux/blobdiff - drivers/ata/pata_triflex.c
Merge branch 'timers-ptp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / drivers / ata / pata_triflex.c
index 03b6d69d619739fe454aa2c17b8adfc0fff6ece9..b3e0c9432283aa0322b1f2e6d8f92f1c6c1c4521 100644 (file)
@@ -210,13 +210,34 @@ static const struct pci_device_id triflex[] = {
        { },
 };
 
+#ifdef CONFIG_PM
+static int triflex_ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
+{
+       struct ata_host *host = dev_get_drvdata(&pdev->dev);
+       int rc = 0;
+
+       rc = ata_host_suspend(host, mesg);
+       if (rc)
+               return rc;
+
+       /*
+        * We must not disable or powerdown the device.
+        * APM bios refuses to suspend if IDE is not accessible.
+        */
+       pci_save_state(pdev);
+
+       return 0;
+}
+
+#endif
+
 static struct pci_driver triflex_pci_driver = {
        .name           = DRV_NAME,
        .id_table       = triflex,
        .probe          = triflex_init_one,
        .remove         = ata_pci_remove_one,
 #ifdef CONFIG_PM
-       .suspend        = ata_pci_device_suspend,
+       .suspend        = triflex_ata_pci_device_suspend,
        .resume         = ata_pci_device_resume,
 #endif
 };