summaryrefslogtreecommitdiffstats
path: root/src/device/pciexp_device.c
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2016-11-29 16:08:38 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2016-12-01 19:08:14 +0100
commitdf96a702ba98c1b85e8b4657498e76ec9f543447 (patch)
tree36f715153952fa9c0470b1a3bcfa28f2bc27f4b9 /src/device/pciexp_device.c
parentd0a648e18a7162f7361a13296beb0c1293acb16e (diff)
downloadcoreboot-df96a702ba98c1b85e8b4657498e76ec9f543447.tar.gz
coreboot-df96a702ba98c1b85e8b4657498e76ec9f543447.tar.bz2
coreboot-df96a702ba98c1b85e8b4657498e76ec9f543447.zip
PCIEXP_ASPM: Unify code with other PCI-e tuning
Error reporting can be enabled together with ASPM, there is no other use for function return value. Change-Id: I58081fac0df5205a5aea65d735d34b375c2af9cd Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/17654 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/device/pciexp_device.c')
-rw-r--r--src/device/pciexp_device.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/device/pciexp_device.c b/src/device/pciexp_device.c
index 330c7e34786c..d14ba027ce03 100644
--- a/src/device/pciexp_device.c
+++ b/src/device/pciexp_device.c
@@ -325,15 +325,8 @@ static int pciexp_aspm_latency(device_t root, unsigned root_cap,
/*
* Enable ASPM on PCIe root port and endpoint.
- *
- * Returns APMC value:
- * -1 = Error
- * 0 = no ASPM
- * 1 = L0s Enabled
- * 2 = L1 Enabled
- * 3 = L0s and L1 Enabled
*/
-static enum aspm_type pciexp_enable_aspm(device_t root, unsigned root_cap,
+static void pciexp_enable_aspm(device_t root, unsigned root_cap,
device_t endp, unsigned endp_cap)
{
const char *aspm_type_str[] = { "None", "L0s", "L1", "L0s and L1" };
@@ -369,10 +362,14 @@ static enum aspm_type pciexp_enable_aspm(device_t root, unsigned root_cap,
lnkctl = pci_read_config16(endp, endp_cap + PCI_EXP_LNKCTL);
lnkctl |= apmc;
pci_write_config16(endp, endp_cap + PCI_EXP_LNKCTL, lnkctl);
+
+ /* Enable ASPM role based error reporting. */
+ devcap = pci_read_config32(endp, endp_cap + PCI_EXP_DEVCAP);
+ devcap |= PCI_EXP_DEVCAP_RBER;
+ pci_write_config32(endp, endp_cap + PCI_EXP_DEVCAP, devcap);
}
printk(BIOS_INFO, "ASPM: Enabled %s\n", aspm_type_str[apmc]);
- return apmc;
}
#endif /* CONFIG_PCIEXP_ASPM */
@@ -406,14 +403,7 @@ static void pciexp_tune_dev(device_t dev)
#if CONFIG_PCIEXP_ASPM
/* Check for and enable ASPM */
- enum aspm_type apmc = pciexp_enable_aspm(root, root_cap, dev, cap);
-
- if (apmc != PCIE_ASPM_NONE) {
- /* Enable ASPM role based error reporting. */
- u32 reg32 = pci_read_config32(dev, cap + PCI_EXP_DEVCAP);
- reg32 |= PCI_EXP_DEVCAP_RBER;
- pci_write_config32(dev, cap + PCI_EXP_DEVCAP, reg32);
- }
+ pciexp_enable_aspm(root, root_cap, dev, cap);
#endif
}