Message ID | 201110121631.52099.bzolnier@gmail.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Date: Wed, 12 Oct 2011 16:31:51 +0200 > From: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> > Subject: [PATCH] IDE: Don't powerdown Compaq Triflex IDE device on suspend > > Don't powerdown Compaq Triflex IDE device on suspend > > This fixes APM suspend on Compaq Armada 7400. > APM BIOS doesn't suspend if IDE is powered down when suspending. > The Triflex controller is found only on old Compaq boards, > so this patch will hopefully have no side effects. > > This patch fixes a suspend regression introduced in > feb22b7f8e62b1b987a3a1dbad95af767a1df832 ("ide: add proper PCI PM > support (v2)"). > > Signed-off-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> > [bart: add commit's summary in parens] > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux-2.6.39-rc7-fast/drivers/ide/triflex.c =================================================================== --- linux-2.6.39-rc7-fast.orig/drivers/ide/triflex.c 2011-05-09 21:05:37.000000000 +0200 +++ linux-2.6.39-rc7-fast/drivers/ide/triflex.c 2011-05-15 14:06:14.000000000 +0200 @@ -113,12 +113,26 @@ static const struct pci_device_id trifle }; MODULE_DEVICE_TABLE(pci, triflex_pci_tbl); +#ifdef CONFIG_PM +static int triflex_ide_pci_suspend(struct pci_dev *dev, pm_message_t state) +{ + /* + * We must not disable or powerdown the device. + * APM bios refuses to suspend if IDE is not accessible. + */ + pci_save_state(dev); + return 0; +} +#else +#define triflex_ide_pci_suspend NULL +#endif + static struct pci_driver triflex_pci_driver = { .name = "TRIFLEX_IDE", .id_table = triflex_pci_tbl, .probe = triflex_init_one, .remove = ide_pci_remove, - .suspend = ide_pci_suspend, + .suspend = triflex_ide_pci_suspend, .resume = ide_pci_resume, };