dmidecode-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dmidecode] [PATCH v3 1/1] dmioem: Decode HPE OEM Record 230


From: Jerry Hoemann
Subject: [dmidecode] [PATCH v3 1/1] dmioem: Decode HPE OEM Record 230
Date: Tue, 13 Sep 2022 16:59:46 -0600

Decode HPE OEM Record 230: Power Supply Information

Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
---
 dmioem.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/dmioem.c b/dmioem.c
index 2c24bfb..7049537 100644
--- a/dmioem.c
+++ b/dmioem.c
@@ -390,6 +390,30 @@ static void dmi_hp_224_chipid(u16 code)
        pr_attr("Chip Identifier", "%s", str);
 }
 
+static void dmi_hp_230_method_bus_seg_addr(u8 code, u8 bus_seg, u8 addr)
+{
+       const char *str = "Reserved";
+       static const char * const method[] = {
+               "Not Available", /* 0x00 */
+               "IPMI I2C",
+               "iLO",
+               "Chassis Manager", /* 0x03 */
+       };
+       if (code < ARRAY_SIZE(method))
+               str = method[code];
+       pr_attr("Access Method", "%s", str);
+       if (!code || (code >= ARRAY_SIZE(method)))
+               return;
+       if (bus_seg != 0xff) {
+               if (code == 2)
+                       pr_attr("I2C Segment Number", "%d", bus_seg);
+               else
+                       pr_attr("I2C Bus Number", "%d", bus_seg);
+       }
+       if (addr != 0xFF)
+               pr_attr("I2C Address", "0x%02x", addr >> 1);
+}
+
 static void dmi_hp_238_loc(const char *fname, unsigned int code)
 {
        const char *str = "Reserved";
@@ -720,6 +744,34 @@ static int dmi_decode_hp(const struct dmi_header *h)
                        dmi_hp_224_chipid(WORD(data + 0x0a));
                        break;
 
+               case 230:
+                       /*
+                        * Vendor Specific: Power Supply Information OEM SMBIOS 
Record
+                        *
+                        * This record is used to communicate additional Power 
Supply Information
+                        * beyond the Industry Standard System Power Supply 
(Type 39) Record.
+                        *
+                        * Offset| Name        | Width | Description
+                        * -----------------------------------------
+                        *  0x00 | Type        | BYTE  | 0xE6, Power Supply 
Information Indicator
+                        *  0x01 | Length      | BYTE  | Length of structure
+                        *  0x02 | Handle      | WORD  | Unique handle
+                        *  0x04 | Assoc Handle| WORD  | Associated Handle 
(Type 39)
+                        *  0x06 | Manufacturer| STRING| Actual third party 
manufacturer
+                        *  0x07 | Revision    | STRING| Power Supply Revision 
Level
+                        *  0x08 | FRU Access  | BYTE  | Power Supply FRU 
Access Method
+                        *  0x09 | I2C Bus Num | BYTE  | I2C Bus #. Value based 
upon context
+                        *  0x0A | I2C Address | BYTE  | I2C Address
+                        */
+                       pr_handle_name("%s Power Supply Information", company);
+                       if (h->length < 0x0B) break;
+                       if (!(opt.flags & FLAG_QUIET))
+                               pr_attr("Associated Handle", "0x%04X", 
WORD(data + 0x4));
+                       pr_attr("Manufacturer", "%s", dmi_string(h, 
data[0x06]));
+                       pr_attr("Revision", "%s", dmi_string(h, data[0x07]));
+                       dmi_hp_230_method_bus_seg_addr(data[0x08], data[0x09], 
data[0x0A]);
+                       break;
+
                case 233:
                        /*
                         * Vendor Specific: HPE ProLiant NIC MAC Information
-- 
2.37.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]