Loading drivers/pci/pci-acpi.c +20 −4 Original line number Diff line number Diff line Loading @@ -245,11 +245,27 @@ EXPORT_SYMBOL(pci_osc_control_set); * currently we simply return _SxD, if present. */ static int acpi_pci_choose_state(struct pci_dev *pdev, pm_message_t state) static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev, pm_message_t state) { /* TBD */ return -ENODEV; int acpi_state; acpi_state = acpi_pm_device_sleep_state(&pdev->dev, device_may_wakeup(&pdev->dev), NULL); if (acpi_state < 0) return PCI_POWER_ERROR; switch (acpi_state) { case ACPI_STATE_D0: return PCI_D0; case ACPI_STATE_D1: return PCI_D1; case ACPI_STATE_D2: return PCI_D2; case ACPI_STATE_D3: return PCI_D3hot; } return PCI_POWER_ERROR; } static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state) Loading drivers/pci/pci.c +4 −4 Original line number Diff line number Diff line Loading @@ -499,7 +499,7 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state) return 0; } int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); /** * pci_choose_state - Choose the power state of a PCI device Loading @@ -513,15 +513,15 @@ int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state) { int ret; pci_power_t ret; if (!pci_find_capability(dev, PCI_CAP_ID_PM)) return PCI_D0; if (platform_pci_choose_state) { ret = platform_pci_choose_state(dev, state); if (ret >= 0) state.event = ret; if (ret != PCI_POWER_ERROR) return ret; } switch (state.event) { Loading drivers/pci/pci.h +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ extern int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, resource_size_t, resource_size_t), void *alignf_data); /* Firmware callbacks */ extern int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); extern int (*platform_pci_set_power_state)(struct pci_dev *dev, pci_power_t state); extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); Loading Loading
drivers/pci/pci-acpi.c +20 −4 Original line number Diff line number Diff line Loading @@ -245,11 +245,27 @@ EXPORT_SYMBOL(pci_osc_control_set); * currently we simply return _SxD, if present. */ static int acpi_pci_choose_state(struct pci_dev *pdev, pm_message_t state) static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev, pm_message_t state) { /* TBD */ return -ENODEV; int acpi_state; acpi_state = acpi_pm_device_sleep_state(&pdev->dev, device_may_wakeup(&pdev->dev), NULL); if (acpi_state < 0) return PCI_POWER_ERROR; switch (acpi_state) { case ACPI_STATE_D0: return PCI_D0; case ACPI_STATE_D1: return PCI_D1; case ACPI_STATE_D2: return PCI_D2; case ACPI_STATE_D3: return PCI_D3hot; } return PCI_POWER_ERROR; } static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state) Loading
drivers/pci/pci.c +4 −4 Original line number Diff line number Diff line Loading @@ -499,7 +499,7 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state) return 0; } int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); /** * pci_choose_state - Choose the power state of a PCI device Loading @@ -513,15 +513,15 @@ int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state) { int ret; pci_power_t ret; if (!pci_find_capability(dev, PCI_CAP_ID_PM)) return PCI_D0; if (platform_pci_choose_state) { ret = platform_pci_choose_state(dev, state); if (ret >= 0) state.event = ret; if (ret != PCI_POWER_ERROR) return ret; } switch (state.event) { Loading
drivers/pci/pci.h +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ extern int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, resource_size_t, resource_size_t), void *alignf_data); /* Firmware callbacks */ extern int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); extern int (*platform_pci_set_power_state)(struct pci_dev *dev, pci_power_t state); extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); Loading