]> mj.ucw.cz Git - pciutils.git/commitdiff
cxl: Rework caps to new function
authorBen Widawsky <ben.widawsky@intel.com>
Fri, 31 Jul 2020 19:37:15 +0000 (12:37 -0700)
committerJaxon Haws <jaxon.haws@amd.com>
Fri, 30 Sep 2022 19:41:06 +0000 (14:41 -0500)
This will help upcoming caps

Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Co-authored-by: Jaxon Haws <jaxon.haws@amd.com>
Signed-off-by: Jaxon Haws <jaxon.haws@amd.com>
ls-ecaps.c

index b080a19418c64d79392d34291d6a325b025589ac..432d95a87cc360cdf7e69b23a0b9907becdf7009 100644 (file)
@@ -690,18 +690,12 @@ cap_rcec(struct device *d, int where)
 }
 
 static void
-cap_dvsec_cxl(struct device *d, int id, int where)
+dvsec_cxl_device(struct device *d, int where, int rev)
 {
   u16 w;
 
-  printf(": CXL\n");
-  if (verbose < 2)
-    return;
-
-  if (id != 0)
-    return;
-
-  if (!config_fetch(d, where + PCI_CXL_CAP, PCI_CXL_DEV_LEN - PCI_CXL_CAP))
+  /* Legacy 1.1 revs aren't handled */
+  if (rev < 1)
     return;
 
   w = get_conf_word(d, where + PCI_CXL_CAP);
@@ -719,6 +713,26 @@ cap_dvsec_cxl(struct device *d, int id, int where)
   printf("\t\tCXLSta:\tViral%c\n", FLAG(w, PCI_CXL_STATUS_VIRAL));
 }
 
+static void
+cap_dvsec_cxl(struct device *d, int id, int where)
+{
+  u8 rev;
+
+  printf(": CXL\n");
+  if (verbose < 2)
+    return;
+
+  if (id != 0)
+    return;
+
+  rev = BITS(get_conf_byte(d, where + 0x6), 0, 4);
+
+  if (!config_fetch(d, where, PCI_CXL_DEV_LEN))
+    return;
+
+  dvsec_cxl_device(d, where, rev);
+}
+
 static void
 cap_dvsec(struct device *d, int where)
 {