aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVaibhav Gupta <vaibhavgupta40@gmail.com>2020-07-13 23:06:11 +0530
committerDavid S. Miller <davem@davemloft.net>2020-08-03 18:48:46 -0700
commit9a51ffe845e4bc8cf8f826139e894ee6353c60fe (patch)
treeeca5d75dbfebd50aaf8d70bbc7ce99485e7f4757
parent2c8cbe0b2971f75073eddf848686a213132fce47 (diff)
downloadide-9a51ffe845e4bc8cf8f826139e894ee6353c60fe.tar.gz
ide: use generic power management
Earlier, drivers had to manage the device's power states, and related operations, themselves. With the generic approach, these are done by PCI core. The ide_pci_suspend() and ide_pci_resume(), declared in include/linux/ide.h and defined in drivers/ide/setup-pci.c, were external and were exported. Those were then used by other source files. Now, as they have to bind with dev_pm_ops object, there is no need to export them and they can be made static. Declare an extern const dev_pm_ops object in include/linux/ide.h and define it in drivers/ide/setup-pci.c with SIMPLE_DEV_PM_OPS macro, binding suspend, and resume callbacks with it. This object can now be used by other source files. The following source files are binding same dev_pm_ops object in their PM: drivers/ide/aec62xx.c drivers/ide/alim15x3.c drivers/ide/amd74xx.c drivers/ide/atiixp.c drivers/ide/cmd64x.c drivers/ide/cs5520.c drivers/ide/cs5530.c drivers/ide/cs5535.c drivers/ide/cs5536.c drivers/ide/cy82c693.c drivers/ide/hpt366.c drivers/ide/ide-pci-generic.c drivers/ide/it8172.c drivers/ide/it8213.c drivers/ide/it821x.c drivers/ide/jmicron.c drivers/ide/ns87415.c drivers/ide/opti621.c drivers/ide/pdc202xx_new.c drivers/ide/pdc202xx_old.c drivers/ide/piix.c drivers/ide/serverworks.c drivers/ide/setup-pci.c drivers/ide/siimage.c drivers/ide/sis5513.c drivers/ide/sl82c105.c drivers/ide/slc90e66.c drivers/ide/via82cxxx.c include/linux/ide.h The drivers/ide/triflex.c driver was also using ide_pci_resume() callback but it had its own definition for .suspend() as it does not want to power off the device during suspend. Hence, disable its PM explicitly inside triflex_init_one() as "dev->pm_caps = 0". Compile-tested only. Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/ide/aec62xx.c3
-rw-r--r--drivers/ide/alim15x3.c3
-rw-r--r--drivers/ide/amd74xx.c3
-rw-r--r--drivers/ide/atiixp.c3
-rw-r--r--drivers/ide/cmd64x.c3
-rw-r--r--drivers/ide/cs5520.c3
-rw-r--r--drivers/ide/cs5530.c3
-rw-r--r--drivers/ide/cs5535.c3
-rw-r--r--drivers/ide/cs5536.c3
-rw-r--r--drivers/ide/cy82c693.c3
-rw-r--r--drivers/ide/hpt366.c3
-rw-r--r--drivers/ide/ide-pci-generic.c3
-rw-r--r--drivers/ide/it8172.c3
-rw-r--r--drivers/ide/it8213.c3
-rw-r--r--drivers/ide/it821x.c3
-rw-r--r--drivers/ide/jmicron.c3
-rw-r--r--drivers/ide/ns87415.c3
-rw-r--r--drivers/ide/opti621.c3
-rw-r--r--drivers/ide/pdc202xx_new.c3
-rw-r--r--drivers/ide/pdc202xx_old.c3
-rw-r--r--drivers/ide/piix.c3
-rw-r--r--drivers/ide/serverworks.c3
-rw-r--r--drivers/ide/setup-pci.c29
-rw-r--r--drivers/ide/siimage.c3
-rw-r--r--drivers/ide/sis5513.c3
-rw-r--r--drivers/ide/sl82c105.c3
-rw-r--r--drivers/ide/slc90e66.c3
-rw-r--r--drivers/ide/triflex.c24
-rw-r--r--drivers/ide/via82cxxx.c3
-rw-r--r--include/linux/ide.h8
30 files changed, 42 insertions, 100 deletions
diff --git a/drivers/ide/aec62xx.c b/drivers/ide/aec62xx.c
index 4c959ce41ba9a..375c7b4946f1a 100644
--- a/drivers/ide/aec62xx.c
+++ b/drivers/ide/aec62xx.c
@@ -309,8 +309,7 @@ static struct pci_driver aec62xx_pci_driver = {
.id_table = aec62xx_pci_tbl,
.probe = aec62xx_init_one,
.remove = aec62xx_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init aec62xx_ide_init(void)
diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
index 3265970aee34f..a5043e048f919 100644
--- a/drivers/ide/alim15x3.c
+++ b/drivers/ide/alim15x3.c
@@ -580,8 +580,7 @@ static struct pci_driver alim15x3_pci_driver = {
.id_table = alim15x3_pci_tbl,
.probe = alim15x3_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init ali15x3_ide_init(void)
diff --git a/drivers/ide/amd74xx.c b/drivers/ide/amd74xx.c
index 7340597a373e3..a9eb64b3e4806 100644
--- a/drivers/ide/amd74xx.c
+++ b/drivers/ide/amd74xx.c
@@ -321,8 +321,7 @@ static struct pci_driver amd74xx_pci_driver = {
.id_table = amd74xx_pci_tbl,
.probe = amd74xx_probe,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init amd74xx_ide_init(void)
diff --git a/drivers/ide/atiixp.c b/drivers/ide/atiixp.c
index e08b0aac08b9e..0bc98d5abaf45 100644
--- a/drivers/ide/atiixp.c
+++ b/drivers/ide/atiixp.c
@@ -190,8 +190,7 @@ static struct pci_driver atiixp_pci_driver = {
.id_table = atiixp_pci_tbl,
.probe = atiixp_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init atiixp_ide_init(void)
diff --git a/drivers/ide/cmd64x.c b/drivers/ide/cmd64x.c
index 943bf944bf722..480898a761334 100644
--- a/drivers/ide/cmd64x.c
+++ b/drivers/ide/cmd64x.c
@@ -430,8 +430,7 @@ static struct pci_driver cmd64x_pci_driver = {
.id_table = cmd64x_pci_tbl,
.probe = cmd64x_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init cmd64x_ide_init(void)
diff --git a/drivers/ide/cs5520.c b/drivers/ide/cs5520.c
index 89a4ff100b7a5..ba0a5bc03d767 100644
--- a/drivers/ide/cs5520.c
+++ b/drivers/ide/cs5520.c
@@ -152,8 +152,7 @@ static struct pci_driver cs5520_pci_driver = {
.name = "Cyrix_IDE",
.id_table = cs5520_pci_tbl,
.probe = cs5520_init_one,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init cs5520_ide_init(void)
diff --git a/drivers/ide/cs5530.c b/drivers/ide/cs5530.c
index 65371599b9767..5bb46e7130c8a 100644
--- a/drivers/ide/cs5530.c
+++ b/drivers/ide/cs5530.c
@@ -273,8 +273,7 @@ static struct pci_driver cs5530_pci_driver = {
.id_table = cs5530_pci_tbl,
.probe = cs5530_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init cs5530_ide_init(void)
diff --git a/drivers/ide/cs5535.c b/drivers/ide/cs5535.c
index 70fdbe3161f8f..c5b79f84d2748 100644
--- a/drivers/ide/cs5535.c
+++ b/drivers/ide/cs5535.c
@@ -194,8 +194,7 @@ static struct pci_driver cs5535_pci_driver = {
.id_table = cs5535_pci_tbl,
.probe = cs5535_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init cs5535_ide_init(void)
diff --git a/drivers/ide/cs5536.c b/drivers/ide/cs5536.c
index 8b5ca145191b5..827cc68439349 100644
--- a/drivers/ide/cs5536.c
+++ b/drivers/ide/cs5536.c
@@ -279,8 +279,7 @@ static struct pci_driver cs5536_pci_driver = {
.id_table = cs5536_pci_tbl,
.probe = cs5536_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
module_pci_driver(cs5536_pci_driver);
diff --git a/drivers/ide/cy82c693.c b/drivers/ide/cy82c693.c
index bc01660ee8fd3..511a870a352ca 100644
--- a/drivers/ide/cy82c693.c
+++ b/drivers/ide/cy82c693.c
@@ -212,8 +212,7 @@ static struct pci_driver cy82c693_pci_driver = {
.id_table = cy82c693_pci_tbl,
.probe = cy82c693_init_one,
.remove = cy82c693_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init cy82c693_ide_init(void)
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
index 1bcc7bec30fb1..9c920df85295d 100644
--- a/drivers/ide/hpt366.c
+++ b/drivers/ide/hpt366.c
@@ -1523,8 +1523,7 @@ static struct pci_driver hpt366_pci_driver = {
.id_table = hpt366_pci_tbl,
.probe = hpt366_init_one,
.remove = hpt366_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init hpt366_ide_init(void)
diff --git a/drivers/ide/ide-pci-generic.c b/drivers/ide/ide-pci-generic.c
index 673420db953f2..cc677fbed6f11 100644
--- a/drivers/ide/ide-pci-generic.c
+++ b/drivers/ide/ide-pci-generic.c
@@ -181,8 +181,7 @@ static struct pci_driver generic_pci_driver = {
.id_table = generic_pci_tbl,
.probe = generic_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init generic_ide_init(void)
diff --git a/drivers/ide/it8172.c b/drivers/ide/it8172.c
index b6f674ab4fb7c..d3b5147af7ddb 100644
--- a/drivers/ide/it8172.c
+++ b/drivers/ide/it8172.c
@@ -143,8 +143,7 @@ static struct pci_driver it8172_pci_driver = {
.id_table = it8172_pci_tbl,
.probe = it8172_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init it8172_ide_init(void)
diff --git a/drivers/ide/it8213.c b/drivers/ide/it8213.c
index d0bf4430c4374..56bc08ce5805d 100644
--- a/drivers/ide/it8213.c
+++ b/drivers/ide/it8213.c
@@ -195,8 +195,7 @@ static struct pci_driver it8213_pci_driver = {
.id_table = it8213_pci_tbl,
.probe = it8213_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init it8213_ide_init(void)
diff --git a/drivers/ide/it821x.c b/drivers/ide/it821x.c
index 36a64c8ea575d..aad746007330c 100644
--- a/drivers/ide/it821x.c
+++ b/drivers/ide/it821x.c
@@ -690,8 +690,7 @@ static struct pci_driver it821x_pci_driver = {
.id_table = it821x_pci_tbl,
.probe = it821x_init_one,
.remove = it821x_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init it821x_ide_init(void)
diff --git a/drivers/ide/jmicron.c b/drivers/ide/jmicron.c
index ae6480dcbadf2..0fff50e712a25 100644
--- a/drivers/ide/jmicron.c
+++ b/drivers/ide/jmicron.c
@@ -154,8 +154,7 @@ static struct pci_driver jmicron_pci_driver = {
.id_table = jmicron_pci_tbl,
.probe = jmicron_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init jmicron_ide_init(void)
diff --git a/drivers/ide/ns87415.c b/drivers/ide/ns87415.c
index 11a672aba6ee8..25c99265e85b5 100644
--- a/drivers/ide/ns87415.c
+++ b/drivers/ide/ns87415.c
@@ -328,8 +328,7 @@ static struct pci_driver ns87415_pci_driver = {
.id_table = ns87415_pci_tbl,
.probe = ns87415_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init ns87415_ide_init(void)
diff --git a/drivers/ide/opti621.c b/drivers/ide/opti621.c
index c374f82333c6d..9fa84e709c430 100644
--- a/drivers/ide/opti621.c
+++ b/drivers/ide/opti621.c
@@ -157,8 +157,7 @@ static struct pci_driver opti621_pci_driver = {
.id_table = opti621_pci_tbl,
.probe = opti621_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init opti621_ide_init(void)
diff --git a/drivers/ide/pdc202xx_new.c b/drivers/ide/pdc202xx_new.c
index 4fcafb9121e00..7c276b8aeb5fe 100644
--- a/drivers/ide/pdc202xx_new.c
+++ b/drivers/ide/pdc202xx_new.c
@@ -535,8 +535,7 @@ static struct pci_driver pdc202new_pci_driver = {
.id_table = pdc202new_pci_tbl,
.probe = pdc202new_init_one,
.remove = pdc202new_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init pdc202new_ide_init(void)
diff --git a/drivers/ide/pdc202xx_old.c b/drivers/ide/pdc202xx_old.c
index 5248ac064e6e0..a902028dd5d25 100644
--- a/drivers/ide/pdc202xx_old.c
+++ b/drivers/ide/pdc202xx_old.c
@@ -340,8 +340,7 @@ static struct pci_driver pdc202xx_pci_driver = {
.id_table = pdc202xx_pci_tbl,
.probe = pdc202xx_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init pdc202xx_ide_init(void)
diff --git a/drivers/ide/piix.c b/drivers/ide/piix.c
index a671cead6ae72..2634768a4e664 100644
--- a/drivers/ide/piix.c
+++ b/drivers/ide/piix.c
@@ -453,8 +453,7 @@ static struct pci_driver piix_pci_driver = {
.id_table = piix_pci_tbl,
.probe = piix_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init piix_ide_init(void)
diff --git a/drivers/ide/serverworks.c b/drivers/ide/serverworks.c
index 458e72e034b09..cdc05b23e03b7 100644
--- a/drivers/ide/serverworks.c
+++ b/drivers/ide/serverworks.c
@@ -434,8 +434,7 @@ static struct pci_driver svwks_pci_driver = {
.id_table = svwks_pci_tbl,
.probe = svwks_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init svwks_ide_init(void)
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
index fdc8e813170c3..1a8fb033e4b33 100644
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -648,35 +648,18 @@ void ide_pci_remove(struct pci_dev *dev)
}
EXPORT_SYMBOL_GPL(ide_pci_remove);
-#ifdef CONFIG_PM
-int ide_pci_suspend(struct pci_dev *dev, pm_message_t state)
-{
- pci_save_state(dev);
- pci_disable_device(dev);
- pci_set_power_state(dev, pci_choose_state(dev, state));
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(ide_pci_suspend);
+#define ide_pci_suspend NULL
-int ide_pci_resume(struct pci_dev *dev)
+static int __maybe_unused ide_pci_resume(struct device *dev_d)
{
+ struct pci_dev *dev = to_pci_dev(dev_d);
struct ide_host *host = pci_get_drvdata(dev);
- int rc;
-
- pci_set_power_state(dev, PCI_D0);
-
- rc = pci_enable_device(dev);
- if (rc)
- return rc;
-
- pci_restore_state(dev);
- pci_set_master(dev);
if (host->init_chipset)
host->init_chipset(dev);
return 0;
}
-EXPORT_SYMBOL_GPL(ide_pci_resume);
-#endif
+
+SIMPLE_DEV_PM_OPS(ide_pci_pm_ops, ide_pci_suspend, ide_pci_resume);
+EXPORT_SYMBOL_GPL(ide_pci_pm_ops);
diff --git a/drivers/ide/siimage.c b/drivers/ide/siimage.c
index c4b20f350b84b..198847488cc61 100644
--- a/drivers/ide/siimage.c
+++ b/drivers/ide/siimage.c
@@ -821,8 +821,7 @@ static struct pci_driver siimage_pci_driver = {
.id_table = siimage_pci_tbl,
.probe = siimage_init_one,
.remove = siimage_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init siimage_ide_init(void)
diff --git a/drivers/ide/sis5513.c b/drivers/ide/sis5513.c
index 024bc7ba49ee5..410eddd3629f2 100644
--- a/drivers/ide/sis5513.c
+++ b/drivers/ide/sis5513.c
@@ -615,8 +615,7 @@ static struct pci_driver sis5513_pci_driver = {
.id_table = sis5513_pci_tbl,
.probe = sis5513_init_one,
.remove = sis5513_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init sis5513_ide_init(void)
diff --git a/drivers/ide/sl82c105.c b/drivers/ide/sl82c105.c
index 5c24c420c4387..4ad5c6bce2b7c 100644
--- a/drivers/ide/sl82c105.c
+++ b/drivers/ide/sl82c105.c
@@ -346,8 +346,7 @@ static struct pci_driver sl82c105_pci_driver = {
.id_table = sl82c105_pci_tbl,
.probe = sl82c105_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init sl82c105_ide_init(void)
diff --git a/drivers/ide/slc90e66.c b/drivers/ide/slc90e66.c
index f521d5ebf9167..cd47445fda1ff 100644
--- a/drivers/ide/slc90e66.c
+++ b/drivers/ide/slc90e66.c
@@ -160,8 +160,7 @@ static struct pci_driver slc90e66_pci_driver = {
.id_table = slc90e66_pci_tbl,
.probe = slc90e66_init_one,
.remove = ide_pci_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init slc90e66_ide_init(void)
diff --git a/drivers/ide/triflex.c b/drivers/ide/triflex.c
index 16ddd09568325..f08a71c2ab636 100644
--- a/drivers/ide/triflex.c
+++ b/drivers/ide/triflex.c
@@ -91,6 +91,13 @@ static const struct ide_port_info triflex_device = {
static int triflex_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{
+ /*
+ * We must not disable or powerdown the device.
+ * APM bios refuses to suspend if IDE is not accessible.
+ */
+ dev->pm_cap = 0;
+ dev_info(&dev->dev, "Disable triflex to be turned off by PCI CORE\n");
+
return ide_pci_init_one(dev, &triflex_device, NULL);
}
@@ -100,27 +107,12 @@ static const struct pci_device_id triflex_pci_tbl[] = {
};
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 = triflex_ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init triflex_ide_init(void)
diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
index 63a3aca506fca..166feaeed6e38 100644
--- a/drivers/ide/via82cxxx.c
+++ b/drivers/ide/via82cxxx.c
@@ -510,8 +510,7 @@ static struct pci_driver via_pci_driver = {
.id_table = via_pci_tbl,
.probe = via_init_one,
.remove = via_remove,
- .suspend = ide_pci_suspend,
- .resume = ide_pci_resume,
+ .driver.pm = &ide_pci_pm_ops,
};
static int __init via_ide_init(void)
diff --git a/include/linux/ide.h b/include/linux/ide.h
index a254841bd3156..77b41103e12b9 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1394,13 +1394,7 @@ int ide_pci_init_two(struct pci_dev *, struct pci_dev *,
const struct ide_port_info *, void *);
void ide_pci_remove(struct pci_dev *);
-#ifdef CONFIG_PM
-int ide_pci_suspend(struct pci_dev *, pm_message_t);
-int ide_pci_resume(struct pci_dev *);
-#else
-#define ide_pci_suspend NULL
-#define ide_pci_resume NULL
-#endif
+extern const struct dev_pm_ops ide_pci_pm_ops;
void ide_map_sg(ide_drive_t *, struct ide_cmd *);
void ide_init_sg_cmd(struct ide_cmd *, unsigned int);