summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2017-08-30 13:38:50 +0200
committerMartin Roth <martinroth@google.com>2018-04-26 21:32:48 +0000
commit570b183f7ef72dbc5d4575719cdd582c88c37d8b (patch)
treee1735c7c1eae012ee881adb4e457a5487e9313f7
parente37387c8b51facd54551e29dad3f2d34468ba004 (diff)
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 <nico.huber@secunet.com> Reviewed-on: https://review.coreboot.org/25617 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/device/pciexp_device.c3
-rw-r--r--src/include/device/device.h1
2 files changed, 4 insertions, 0 deletions
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;