|
@@ -272,21 +272,29 @@ static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state)
|
|
|
{
|
|
|
acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev);
|
|
|
acpi_handle tmp;
|
|
|
- static int state_conv[] = {
|
|
|
- [0] = 0,
|
|
|
- [1] = 1,
|
|
|
- [2] = 2,
|
|
|
- [3] = 3,
|
|
|
- [4] = 3
|
|
|
+ static const u8 state_conv[] = {
|
|
|
+ [PCI_D0] = ACPI_STATE_D0,
|
|
|
+ [PCI_D1] = ACPI_STATE_D1,
|
|
|
+ [PCI_D2] = ACPI_STATE_D2,
|
|
|
+ [PCI_D3hot] = ACPI_STATE_D3,
|
|
|
+ [PCI_D3cold] = ACPI_STATE_D3
|
|
|
};
|
|
|
- int acpi_state = state_conv[(int __force) state];
|
|
|
|
|
|
if (!handle)
|
|
|
return -ENODEV;
|
|
|
/* If the ACPI device has _EJ0, ignore the device */
|
|
|
if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
|
|
|
return 0;
|
|
|
- return acpi_bus_set_power(handle, acpi_state);
|
|
|
+
|
|
|
+ switch (state) {
|
|
|
+ case PCI_D0:
|
|
|
+ case PCI_D1:
|
|
|
+ case PCI_D2:
|
|
|
+ case PCI_D3hot:
|
|
|
+ case PCI_D3cold:
|
|
|
+ return acpi_bus_set_power(handle, state_conv[state]);
|
|
|
+ }
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
|