@@ -763,6 +763,7 @@
#define PCI_EXP_TYPE_ROOT_INT_EP 0x9 /* Root Complex Integrated Endpoint */
#define PCI_EXP_TYPE_ROOT_EC 0xa /* Root Complex Event Collector */
#define PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */
+#define PCI_EXP_FLAGS_FLIT 0x8000 /* Flit Mode Supported */
#define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
#define PCI_EXP_DEVCAP 0x4 /* Device capabilities */
#define PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */
@@ -822,6 +823,7 @@
#define PCI_EXP_LNKCTL_HWAUTWD 0x0200 /* Hardware Autonomous Width Disable */
#define PCI_EXP_LNKCTL_BWMIE 0x0400 /* Bandwidth Mgmt Interrupt Enable */
#define PCI_EXP_LNKCTL_AUTBWIE 0x0800 /* Autonomous Bandwidth Mgmt Interrupt Enable */
+#define PCI_EXP_LNKCTL_FLIT_DIS 0x2000 /* Flit Mode Disable */
#define PCI_EXP_LNKSTA 0x12 /* Link Status */
#define PCI_EXP_LNKSTA_SPEED 0x000f /* Negotiated Link Speed */
#define PCI_EXP_LNKSTA_WIDTH 0x03f0 /* Negotiated Link Width */
@@ -938,6 +940,7 @@
#define PCI_EXP_LINKSTA2_RETIMER 0x0040 /* Retimer Detected */
#define PCI_EXP_LINKSTA2_2RETIMERS 0x0080 /* 2 Retimers Detected */
#define PCI_EXP_LINKSTA2_CROSSLINK(x) (((x) >> 8) & 0x3) /* Crosslink Res */
+#define PCI_EXP_LINKSTA2_FLIT 0x0400 /* Flit Mode Status */
#define PCI_EXP_LINKSTA2_COMPONENT(x) (((x) >> 12) & 0x7) /* Presence */
#define PCI_EXP_LINKSTA2_DRS_RCVD 0x8000 /* DRS Msg Received */
#define PCI_EXP_SLTCAP2 0x34 /* Slot Capabilities */
@@ -843,14 +843,15 @@ static void cap_express_link(struct device *d, int where, int type)
if ((type == PCI_EXP_TYPE_ROOT_PORT) || (type == PCI_EXP_TYPE_ENDPOINT) ||
(type == PCI_EXP_TYPE_LEG_END) || (type == PCI_EXP_TYPE_PCI_BRIDGE))
printf(" RCB %d bytes,", w & PCI_EXP_LNKCTL_RCB ? 128 : 64);
- printf(" LnkDisable%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n",
+ printf(" LnkDisable%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n\t\t\tFlitModeDis%c\n",
FLAG(w, PCI_EXP_LNKCTL_DISABLE),
FLAG(w, PCI_EXP_LNKCTL_CLOCK),
FLAG(w, PCI_EXP_LNKCTL_XSYNCH),
FLAG(w, PCI_EXP_LNKCTL_CLOCKPM),
FLAG(w, PCI_EXP_LNKCTL_HWAUTWD),
FLAG(w, PCI_EXP_LNKCTL_BWMIE),
- FLAG(w, PCI_EXP_LNKCTL_AUTBWIE));
+ FLAG(w, PCI_EXP_LNKCTL_AUTBWIE),
+ FLAG(w, PCI_EXP_LNKCTL_FLIT_DIS));
w = get_conf_word(d, where + PCI_EXP_LNKSTA);
sta_speed = w & PCI_EXP_LNKSTA_SPEED;
@@ -1366,7 +1367,7 @@ static void cap_express_link2(struct device *d, int where, int type)
w = get_conf_word(d, where + PCI_EXP_LNKSTA2);
printf("\t\tLnkSta2: Current De-emphasis Level: %s, EqualizationComplete%c EqualizationPhase1%c\n"
"\t\t\t EqualizationPhase2%c EqualizationPhase3%c LinkEqualizationRequest%c\n"
- "\t\t\t Retimer%c 2Retimers%c CrosslinkRes: %s",
+ "\t\t\t Retimer%c 2Retimers%c FlitMode%c CrosslinkRes: %s",
cap_express_link2_deemphasis(PCI_EXP_LINKSTA2_DEEMPHASIS(w)),
FLAG(w, PCI_EXP_LINKSTA2_EQU_COMP),
FLAG(w, PCI_EXP_LINKSTA2_EQU_PHASE1),
@@ -1375,11 +1376,11 @@ static void cap_express_link2(struct device *d, int where, int type)
FLAG(w, PCI_EXP_LINKSTA2_EQU_REQ),
FLAG(w, PCI_EXP_LINKSTA2_RETIMER),
FLAG(w, PCI_EXP_LINKSTA2_2RETIMERS),
+ FLAG(w, PCI_EXP_LINKSTA2_FLIT),
cap_express_link2_crosslink_res(PCI_EXP_LINKSTA2_CROSSLINK(w)));
if (exp_downstream_port(type) && (l & PCI_EXP_LNKCAP2_DRS)) {
- printf(", DRS%c\n"
- "\t\t\t DownstreamComp: %s\n",
+ printf("\t\t\t DRS%c DownstreamComp: %s\n",
FLAG(w, PCI_EXP_LINKSTA2_DRS_RCVD),
cap_express_link2_component(PCI_EXP_LINKSTA2_COMPONENT(w)));
} else
@@ -1502,7 +1503,8 @@ cap_express(struct device *d, int where, int cap)
default:
printf("Unknown type %d", type);
}
- printf(", IntMsgNum %d\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
+ printf(", IntMsgNum %d, FlitMode%c\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9,
+ FLAG(cap, PCI_EXP_FLAGS_FLIT));
if (verbose < 2)
return type;
Add Flit Mode related information: - Flit Mode Supported to Express Capabilities line (PCIe r6.1 sec 7.5.3.2). - Flit Mode Disable to LnkCtl register (PCIe r6.1 sec 7.5.3.7). - Flit Mode Status to LnkSta2 register (PCIe r6.1 sec 7.5.3.20). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> --- lib/header.h | 3 +++ ls-caps.c | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-)