Add PCIe Riser.
Signed-off-by: Jerry Hoemann <[email protected]>
---
dmioem.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/dmioem.c b/dmioem.c
index c7af5d6..f330cbe 100644
--- a/dmioem.c
+++ b/dmioem.c
@@ -962,6 +962,23 @@ static void dmi_hp_245_pcie_riser(const struct dmi_header
*h)
pr_attr("Riser Name", dmi_string(h, data[0x08]));
}
+static void dmi_hp_245_pcie_mhs_riser(const struct dmi_header *h, int len)
+{
+ u8 *data = h->data;
+ u8 i, count;
+
+ pr_attr("Board Type", "PCIe Riser (MHS Platform)");
+ pr_attr("Risder ID", "%x", data[0x05]);
+ if (data[0x06])
+ pr_attr("Firmware Version", "%x.%x", data[0x06], data[0x07]);
+ pr_attr("Downgradable", "%s", data[0x08] & 0x01 ? "yes" : "no");
+ pr_attr("Riser Name", dmi_string(h, data[0x09]));
+ count = data[0x0A];
+ pr_attr("Slot Count", "%d", count);
+ for (i = 0; (i < count) && (i + 0x0B < len); i++)
+ pr_attr("Slot ID", "0x%x", data[0X0B + i]);
+}
+
static int dmi_decode_hp(const struct dmi_header *h)
{
u8 *data = h->data;
@@ -1717,11 +1734,22 @@ static int dmi_decode_hp(const struct dmi_header *h)
* 0x06 | Riser ID | BYTE |
* 0x07 | CPLD Vers | BTYE | 0-> No CPLD. Bits
[7][6:0] Release:Vers
* 0x08 | Riser Name | STRING|
+ *
+ * If Board Type == 1
+ * 0x05 | Riser ID | BYTE |
+ * 0x06 | Riser FW Major | BYTE |
+ * 0x07 | Riser FW Minor | BYTE |
+ * 0x08 | Misc Attr | BYTE |
+ * 0x09 | Riser Name | STRING|
+ * 0x0A | Slot Count | BYTE |
+ * 0x0B | Slot ID | Varies| One per slot.
*/
pr_handle_name("%s ProLiant Extension Board Inventory
Record", company);
if (h->length < 0x05) break;
if (data[0x04] == 0)
dmi_hp_245_pcie_riser(h);
+ if (data[0x04] == 1)
+ dmi_hp_245_pcie_mhs_riser(h, h->length);
break;
default:
--
2.47.1