Initial PCIe tuning: Enable Active State Power Management (ASPM)
authorStefan Reinauer <stepan@coresystems.de>
Sun, 17 Jan 2010 13:54:08 +0000 (13:54 +0000)
committerStefan Reinauer <stepan@openbios.org>
Sun, 17 Jan 2010 13:54:08 +0000 (13:54 +0000)
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5030 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/devices/pciexp_device.c

index 461c3b6c7a30e303f94261726af94797e6986d51..ea9c791272cf45bc92a155b5ef15821d9e733dcd 100644 (file)
@@ -34,8 +34,16 @@ static void pciexp_tune_dev(device_t dev)
                /* error... */
                return;
        }
-       // printk_debug("PCIe: tuning %s\n", dev_path(dev));
-       /* TODO: Implement PCI Express tuning. */
+#ifdef CONFIG_PCIE_TUNING
+       printk_debug("PCIe: tuning %s\n", dev_path(dev));
+
+       // TODO make this depending on ASPM
+       /* Enable ASPM Role Based Error Reporting */
+       u32 reg32;
+       reg32 = pci_read_config32(dev, cap + PCI_EXP_DEVCAP);
+       reg32 |= PCI_EXP_DEVCAP_RBER;
+       pci_write_config32(dev, cap + PCI_EXP_DEVCAP, reg32);
+#endif
 }
 
 unsigned int pciexp_scan_bus(struct bus *bus,