| From 8e822df700694ca6850d1e0c122fd7004b2778d8 Mon Sep 17 00:00:00 2001 |
| From: Shaohua Li <shaohua.li@intel.com> |
| Date: Mon, 8 Jun 2009 09:27:25 +0800 |
| Subject: PCI: disable ASPM on VIA root-port-under-bridge configurations |
| |
| From: Shaohua Li <shaohua.li@intel.com> |
| |
| 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> |
| |
| --- 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; |