From 570b183f7ef72dbc5d4575719cdd582c88c37d8b Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Wed, 30 Aug 2017 13:38:50 +0200 Subject: device: Add flag to disable PCIe ASPM For broken devices that spuriously advertise ASPM, make it possible to decide ASPM activation in the device driver. Change-Id: I491aa32a3ec954be87a474478609f0f3971d0fdf Signed-off-by: Nico Huber Reviewed-on: https://review.coreboot.org/25617 Reviewed-by: Aaron Durbin Reviewed-by: Paul Menzel Tested-by: build bot (Jenkins) --- src/device/pciexp_device.c | 3 +++ src/include/device/device.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/device/pciexp_device.c b/src/device/pciexp_device.c index b15d9c2a2b..502494dad4 100644 --- a/src/device/pciexp_device.c +++ b/src/device/pciexp_device.c @@ -377,6 +377,9 @@ static void pciexp_enable_aspm(device_t root, unsigned root_cap, u16 lnkctl; u32 devcap; + if (endp->disable_pcie_aspm) + return; + /* Get endpoint device capabilities for acceptable limits */ devcap = pci_read_config32(endp, endp_cap + PCI_EXP_DEVCAP); diff --git a/src/include/device/device.h b/src/include/device/device.h index 02a933ecb8..acead58f8a 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -130,6 +130,7 @@ struct device { unsigned int enabled : 1; /* set if we should enable the device */ unsigned int initialized : 1; /* 1 if we have initialized the device */ unsigned int on_mainboard : 1; + unsigned int disable_pcie_aspm : 1; struct pci_irq_info pci_irq_info[4]; u8 command; -- cgit v1.2.3