aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/pci_root.c3
-rw-r--r--drivers/pci/pcie/aspm.c27
-rw-r--r--include/linux/pci.h9
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 *
863static 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); 866int pcie_aspm_enabled(void)
867}
868#else
869static inline void pcie_aspm_platform_init(void) { }
870#endif
871
872static 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}
870EXPORT_SYMBOL(pcie_aspm_enabled);
879 871
880fs_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);
791extern void pci_restore_msi_state(struct pci_dev *dev); 791extern void pci_restore_msi_state(struct pci_dev *dev);
792#endif 792#endif
793 793
794#ifndef CONFIG_PCIEASPM
795static inline int pcie_aspm_enabled(void)
796{
797 return 0;
798}
799#else
800extern 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 */
796int ht_create_irq(struct pci_dev *dev, int idx); 805int ht_create_irq(struct pci_dev *dev, int idx);