From d9b84eae2754fe12642cbd0f6471fb3b2d525b02 Mon Sep 17 00:00:00 2001 From: Jerry Hoemann Date: Mon, 30 Nov 2020 11:06:29 +0100 Subject: dmioem: Decode HPE OEM record 236 HPE OEM record 236 describes the HPE ProLiant HDD Backplane. A non-backward compatible change was introduced with Gen10 Plus which retracted three fields and made them "Reserved". Based on initial work by Erwan Velu. Signed-off-by: Jerry Hoemann Signed-off-by: Jean Delvare --- dmioem.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/dmioem.c b/dmioem.c index 4798f89..bf8def1 100644 --- a/dmioem.c +++ b/dmioem.c @@ -317,6 +317,41 @@ static int dmi_decode_hp(const struct dmi_header *h) &data[0x08]); break; + case 236: + /* + * Vendor Specific: HPE ProLiant HDD Backplane + * + * Offset | Name | Width | Description + * --------------------------------------- + * 0x00 | Type | BYTE | 0xEC, HDD Backplane + * 0x01 | Length | BYTE | Length of structure + * 0x02 | Handle | WORD | Unique handle + * 0x04 | I2C Address| BYTE | Backplane FRU I2C Address + * 0x05 | Box Number | WORD | Backplane Box Number + * 0x07 | NVRAM ID | WORD | Backplane NVRAM ID + * 0x09 | WWID | QWORD | SAS Expander WWID + * 0x11 | Total Bays | BYTE | Total SAS Bays + * 0x12 | A0 Bays | BYTE | (deprecated) Number of SAS drive bays behind port 0xA0 + * 0x13 | A2 Bays | BYTE | (deprecated) Number of SAS drive bays behind port 0xA2 + * 0x14 | Name | STRING| (deprecated) Backplane Name + */ + pr_handle_name("%s HDD Backplane FRU Information", company); + + pr_attr("FRU I2C Address", "0x%X raw(0x%X)", data[0x4] >> 1, data[0x4]); + pr_attr("Box Number", "%d", WORD(data + 0x5)); + pr_attr("NVRAM ID", "0x%X", WORD(data + 0x7)); + if (h->length < 0x11) break; + pr_attr("SAS Expander WWID", "0x%X", QWORD(data + 0x9)); + if (h->length < 0x12) break; + pr_attr("Total SAS Bays", "%d", data[0x11]); + if (h->length < 0x15) break; + if (gen < G10P) { + pr_attr("A0 Bay Count", "%d", data[0x12]); + pr_attr("A2 Bay Count", "%d", data[0x13]); + pr_attr("Backplane Name", "%s", dmi_string(h, data[0x14])); + } + break; + default: return 0; } -- cgit v1.2.1