X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpci%2Fpci-driver.c;h=64195d6d6828f44a4e68086c66bd20c7edb7a1d2;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=9936879eb71940912deecb302d15f1156e7ae324;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 9936879eb..64195d6d6 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -299,10 +299,23 @@ static int pci_device_suspend(struct device * dev, u32 state) { struct pci_dev * pci_dev = to_pci_dev(dev); struct pci_driver * drv = pci_dev->driver; + u32 dev_state; int i = 0; + /* Translate PM_SUSPEND_xx states to PCI device states */ + static u32 state_conversion[] = { + [PM_SUSPEND_ON] = 0, + [PM_SUSPEND_STANDBY] = 1, + [PM_SUSPEND_MEM] = 3, + [PM_SUSPEND_DISK] = 3, + }; + + if (state >= sizeof(state_conversion) / sizeof(state_conversion[1])) + return -EINVAL; + + dev_state = state_conversion[state]; if (drv && drv->suspend) - i = drv->suspend(pci_dev,state); + i = drv->suspend(pci_dev, dev_state); pci_save_state(pci_dev, pci_dev->saved_config_space); return i; @@ -390,10 +403,9 @@ pci_populate_driver_dir(struct pci_driver *drv) * pci_register_driver - register a new pci driver * @drv: the driver structure to register * - * Adds the driver structure to the list of registered drivers - * Returns the number of pci devices which were claimed by the driver - * during registration. The driver remains registered even if the - * return value is zero. + * Adds the driver structure to the list of registered drivers. + * Returns a negative value on error. The driver remains registered + * even if no device was claimed during registration. */ int pci_register_driver(struct pci_driver *drv)