diff options
author | Andrew Patterson <andrew.patterson@hp.com> | 2008-11-10 17:30:55 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-01-07 14:12:29 -0500 |
commit | 3e1b16002af29758b6bc9c38939d43838d9335bc (patch) | |
tree | 6782f844e3813355280ad3367c58d90d576901f2 /drivers | |
parent | 0ef5f8f6159e44b4faa997be08d1a3bcbf44ad08 (diff) |
ACPI/PCI: PCIe ASPM _OSC support capabilities called when root bridge added
The _OSC capabilities OSC_ACTIVE_STATE_PWR_SUPPORT and
OSC_CLOCK_PWR_CAPABILITY_SUPPORT are set when the root bridge is added
with pci_acpi_osc_support(), so we no longer need to do it in the ASPM
driver. Also add the function pcie_aspm_enabled, which returns true if
pcie_aspm=off is not on the kernel command-line.
Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/pci_root.c | 3 | ||||
-rw-r--r-- | drivers/pci/pcie/aspm.c | 27 |
2 files changed, 12 insertions, 18 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 96e68e84153..9fe026b1c9d 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 9aad608bcf3..e361c7dc726 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); | ||