summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2009-06-08 09:27:25 +0800
committerGreg Kroah-Hartman <gregkh@suse.de>2009-07-02 16:49:31 -0700
commit376c10a25a8b73b90e67d2fa870bfda288fa067d (patch)
tree5705102c431c05488740fc81d94aaa457e0c8d30 /drivers/pci
parent9d3d447703cec0582ff5a5756aeb07e4593f9cb6 (diff)
PCI: disable ASPM on VIA root-port-under-bridge configurations
commit 8e822df700694ca6850d1e0c122fd7004b2778d8 upstream. VIA has a strange chipset, it has root port under a bridge. Disable ASPM for such strange chipset. Tested-by: Wolfgang Denk <wd@denx.de> Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/pcie/aspm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index b0367f168af4..777b2c76caf5 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -638,6 +638,10 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
if (pdev->pcie_type != PCI_EXP_TYPE_ROOT_PORT &&
pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)
return;
+ /* VIA has a strange chipset, root port is under a bridge */
+ if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT &&
+ pdev->bus->self)
+ return;
down_read(&pci_bus_sem);
if (list_empty(&pdev->subordinate->devices))
goto out;