Add PCIe Riser.

Signed-off-by: Jerry Hoemann <jerry.hoem...@hpe.com>
---
 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


Reply via email to