Module Name: src
Committed By: msaitoh
Date: Thu Feb 1 09:09:14 UTC 2018
Modified Files:
src/sys/dev/pci: pci_subr.c pcireg.h
Log Message:
- Add PCie Link Activation ECN.
- Use macro.
- KNF.
To generate a diff of this commit:
cvs rdiff -u -r1.199 -r1.200 src/sys/dev/pci/pci_subr.c
cvs rdiff -u -r1.136 -r1.137 src/sys/dev/pci/pcireg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/pci_subr.c
diff -u src/sys/dev/pci/pci_subr.c:1.199 src/sys/dev/pci/pci_subr.c:1.200
--- src/sys/dev/pci/pci_subr.c:1.199 Thu Feb 1 08:18:47 2018
+++ src/sys/dev/pci/pci_subr.c Thu Feb 1 09:09:14 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_subr.c,v 1.199 2018/02/01 08:18:47 msaitoh Exp $ */
+/* $NetBSD: pci_subr.c,v 1.200 2018/02/01 09:09:14 msaitoh Exp $ */
/*
* Copyright (c) 1997 Zubin D. Dittia. All rights reserved.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.199 2018/02/01 08:18:47 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.200 2018/02/01 09:09:14 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_pci.h"
@@ -1769,10 +1769,10 @@ pci_conf_print_pcie_cap(const pcireg_t *
/* Capability Register */
reg = regs[o2i(capoff)];
printf(" Capability register: 0x%04x\n", reg >> 16);
- pciever = (unsigned int)((reg & 0x000f0000) >> 16);
+ pciever = (unsigned int)(PCIE_XCAP_VER(reg));
printf(" Capability version: %u\n", pciever);
printf(" Device type: ");
- switch ((reg & 0x00f00000) >> 20) {
+ switch (PCIE_XCAP_TYPE(reg)) {
case PCIE_XCAP_TYPE_PCIE_DEV: /* 0x0 */
printf("PCI Express Endpoint device\n");
check_upstreamport = true;
@@ -3634,7 +3634,7 @@ pci_conf_print_sec_pcie_cap(const pcireg
printf(" Lane Error Status register: 0x%08x\n", reg);
/* Get Max Link Width */
- if (pci_conf_find_cap(regs, PCI_CAP_PCIEXPRESS, &pcie_capoff)){
+ if (pci_conf_find_cap(regs, PCI_CAP_PCIEXPRESS, &pcie_capoff)) {
reg = regs[o2i(pcie_capoff + PCIE_LCAP)];
maxlinkwidth = __SHIFTOUT(reg, PCIE_LCAP_MAX_WIDTH);
} else {
@@ -3873,6 +3873,7 @@ pci_conf_print_l1pm_cap(const pcireg_t *
{
pcireg_t reg;
int scale, val;
+ int pcie_capoff;
printf("\n L1 PM Substates\n");
@@ -3883,6 +3884,14 @@ pci_conf_print_l1pm_cap(const pcireg_t *
onoff("ASPM L1.2 Supported", reg, PCI_L1PM_CAP_ASPM12);
onoff("ASPM L1.1 Supported", reg, PCI_L1PM_CAP_ASPM11);
onoff("L1 PM Substates Supported", reg, PCI_L1PM_CAP_L1PM);
+ /* The Link Activation Supported bit is only for Downstream Port */
+ if (pci_conf_find_cap(regs, PCI_CAP_PCIEXPRESS, &pcie_capoff)) {
+ uint32_t t = regs[o2i(pcie_capoff)];
+
+ if ((t == PCIE_XCAP_TYPE_ROOT) || (t == PCIE_XCAP_TYPE_DOWN))
+ onoff("Link Activation Supported", reg,
+ PCI_L1PM_CAP_LA);
+ }
printf(" Port Common Mode Restore Time: %uus\n",
(unsigned int)__SHIFTOUT(reg, PCI_L1PM_CAP_PCMRT));
scale = pci_conf_l1pm_cap_tposcale(
@@ -3900,6 +3909,8 @@ pci_conf_print_l1pm_cap(const pcireg_t *
onoff("PCI-PM L1.1 Enable", reg, PCI_L1PM_CTL1_PCIPM11_EN);
onoff("ASPM L1.2 Enable", reg, PCI_L1PM_CTL1_ASPM12_EN);
onoff("ASPM L1.1 Enable", reg, PCI_L1PM_CTL1_ASPM11_EN);
+ onoff("Link Activation Interrupt Enable", reg, PCI_L1PM_CTL1_LAIE);
+ onoff("Link Activation Control", reg, PCI_L1PM_CTL1_LA);
printf(" Common Mode Restore Time: %uus\n",
(unsigned int)__SHIFTOUT(reg, PCI_L1PM_CTL1_CMRT));
scale = PCI_LTR_SCALETONS(__SHIFTOUT(reg, PCI_L1PM_CTL1_LTRTHSCALE));
@@ -3916,6 +3927,12 @@ pci_conf_print_l1pm_cap(const pcireg_t *
printf("unknown\n");
else
printf("%dus\n", val * scale);
+
+ if (PCI_EXTCAPLIST_VERSION(regs[o2i(extcapoff)]) >= 2) {
+ reg = regs[o2i(extcapoff + PCI_L1PM_CTL2)];
+ printf(" L1 PM Substates Status register: 0x%08x\n", reg);
+ onoff("Link Activation Status", reg, PCI_L1PM_STAT_LA);
+ }
}
static void
Index: src/sys/dev/pci/pcireg.h
diff -u src/sys/dev/pci/pcireg.h:1.136 src/sys/dev/pci/pcireg.h:1.137
--- src/sys/dev/pci/pcireg.h:1.136 Mon Dec 18 04:48:28 2017
+++ src/sys/dev/pci/pcireg.h Thu Feb 1 09:09:14 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: pcireg.h,v 1.136 2017/12/18 04:48:28 msaitoh Exp $ */
+/* $NetBSD: pcireg.h,v 1.137 2018/02/01 09:09:14 msaitoh Exp $ */
/*
* Copyright (c) 1995, 1996, 1999, 2000
@@ -2041,6 +2041,7 @@ struct pci_rom {
#define PCI_L1PM_CAP_ASPM12 __BIT(2) /* ASPM L1.2 Supported */
#define PCI_L1PM_CAP_ASPM11 __BIT(3) /* ASPM L1.1 Supported */
#define PCI_L1PM_CAP_L1PM __BIT(4) /* L1 PM Substates Supported */
+#define PCI_L1PM_CAP_LA __BIT(5) /* Link Activation Supported */
#define PCI_L1PM_CAP_PCMRT __BITS(15, 8) /*Port Common Mode Restore Time*/
#define PCI_L1PM_CAP_PTPOSCALE __BITS(17, 16) /* Port T_POWER_ON Scale */
#define PCI_L1PM_CAP_PTPOVAL __BITS(23, 19) /* Port T_POWER_ON Value */
@@ -2049,12 +2050,16 @@ struct pci_rom {
#define PCI_L1PM_CTL1_PCIPM11_EN __BIT(1) /* PCI-PM L1.1 Enable */
#define PCI_L1PM_CTL1_ASPM12_EN __BIT(2) /* ASPM L1.2 Enable */
#define PCI_L1PM_CTL1_ASPM11_EN __BIT(3) /* ASPM L1.1 Enable */
+#define PCI_L1PM_CTL1_LAIE __BIT(4) /* Link Activation Int. En. */
+#define PCI_L1PM_CTL1_LA __BIT(5) /* Link Activation Control */
#define PCI_L1PM_CTL1_CMRT __BITS(15, 8) /* Common Mode Restore Time */
#define PCI_L1PM_CTL1_LTRTHVAL __BITS(25, 16) /* LTR L1.2 THRESHOLD Value */
#define PCI_L1PM_CTL1_LTRTHSCALE __BITS(31, 29) /* LTR L1.2 THRESHOLD Scale */
#define PCI_L1PM_CTL2 0x0c /* Control Register 2 */
#define PCI_L1PM_CTL2_TPOSCALE __BITS(1, 0) /* T_POWER_ON Scale */
#define PCI_L1PM_CTL2_TPOVAL __BITS(7, 3) /* T_POWER_ON Value */
+#define PCI_L1PM_STAT 0x10 /* Status Register */
+#define PCI_L1PM_STAT_LA __BIT(0) /* Link Activation Status */
/*
* Extended capability ID: 0x001f