diff options
-rw-r--r-- | drivers/acpi/pci_root.c | 3 | ||||
-rw-r--r-- | drivers/pci/pcie/aspm.c | 27 | ||||
-rw-r--r-- | include/linux/pci.h | 9 |
3 files changed, 21 insertions, 18 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 96e68e841539..9fe026b1c9d0 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -347,6 +347,9 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) | |||
347 | /* Indicate support for various _OSC capabilities. */ | 347 | /* Indicate support for various _OSC capabilities. */ |
348 | if (pci_ext_cfg_avail(root->bus->self)) | 348 | if (pci_ext_cfg_avail(root->bus->self)) |
349 | flags |= OSC_EXT_PCI_CONFIG_SUPPORT; | 349 | flags |= OSC_EXT_PCI_CONFIG_SUPPORT; |
350 | if (pcie_aspm_enabled()) | ||
351 | flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | | ||
352 | OSC_CLOCK_PWR_CAPABILITY_SUPPORT; | ||
350 | if (flags != base_flags) | 353 | if (flags != base_flags) |
351 | pci_acpi_osc_support(device->handle, flags); | 354 | pci_acpi_osc_support(device->handle, flags); |
352 | 355 | ||
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 9aad608bcf3f..e361c7dc726f 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c | |||
@@ -857,24 +857,15 @@ void pcie_no_aspm(void) | |||
857 | aspm_disabled = 1; | 857 | aspm_disabled = 1; |
858 | } | 858 | } |
859 | 859 | ||
860 | #ifdef CONFIG_ACPI | 860 | /** |
861 | #include <acpi/acpi_bus.h> | 861 | * pcie_aspm_enabled - is PCIe ASPM enabled? |
862 | #include <linux/pci-acpi.h> | 862 | * |
863 | static void pcie_aspm_platform_init(void) | 863 | * Returns true if ASPM has not been disabled by the command-line option |
864 | { | 864 | * pcie_aspm=off. |
865 | pcie_osc_support_set(OSC_ACTIVE_STATE_PWR_SUPPORT| | 865 | **/ |
866 | OSC_CLOCK_PWR_CAPABILITY_SUPPORT); | 866 | int pcie_aspm_enabled(void) |
867 | } | ||
868 | #else | ||
869 | static inline void pcie_aspm_platform_init(void) { } | ||
870 | #endif | ||
871 | |||
872 | static int __init pcie_aspm_init(void) | ||
873 | { | 867 | { |
874 | if (aspm_disabled) | 868 | return !aspm_disabled; |
875 | return 0; | ||
876 | pcie_aspm_platform_init(); | ||
877 | return 0; | ||
878 | } | 869 | } |
870 | EXPORT_SYMBOL(pcie_aspm_enabled); | ||
879 | 871 | ||
880 | fs_initcall(pcie_aspm_init); | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index 6fd47654ca4e..eae97a2bf603 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -791,6 +791,15 @@ extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); | |||
791 | extern void pci_restore_msi_state(struct pci_dev *dev); | 791 | extern void pci_restore_msi_state(struct pci_dev *dev); |
792 | #endif | 792 | #endif |
793 | 793 | ||
794 | #ifndef CONFIG_PCIEASPM | ||
795 | static inline int pcie_aspm_enabled(void) | ||
796 | { | ||
797 | return 0; | ||
798 | } | ||
799 | #else | ||
800 | extern int pcie_aspm_enabled(void); | ||
801 | #endif | ||
802 | |||
794 | #ifdef CONFIG_HT_IRQ | 803 | #ifdef CONFIG_HT_IRQ |
795 | /* The functions a driver should call */ | 804 | /* The functions a driver should call */ |
796 | int ht_create_irq(struct pci_dev *dev, int idx); | 805 | int ht_create_irq(struct pci_dev *dev, int idx); |