Index: stand/libsa/smbios.c =================================================================== --- stand/libsa/smbios.c +++ stand/libsa/smbios.c @@ -209,6 +209,126 @@ #endif +static const char * +smbios_parse_chassis_type(caddr_t addr) +{ + int type; + + type = SMBIOS_GET8(addr, 0x5); + switch (type) { + case 0x1: + return ("Other"); + break; + case 0x2: + return ("Unknown"); + break; + case 0x3: + return ("Desktop"); + break; + case 0x4: + return ("Low Profile Desktop"); + break; + case 0x5: + return ("Pizza Box"); + break; + case 0x6: + return ("Mini Tower"); + break; + case 0x7: + return ("Tower"); + break; + case 0x8: + return ("Portable"); + break; + case 0x9: + return ("Laptop"); + break; + case 0xA: + return ("Notebook"); + break; + case 0xB: + return ("Hand Held"); + break; + case 0xC: + return ("Docking Station"); + break; + case 0xD: + return ("All in One"); + break; + case 0xE: + return ("Sub Notebook"); + break; + case 0xF: + return ("Lunch Box"); + break; + case 0x10: + return ("Space-saving"); + break; + case 0x11: + return ("Main Server Chassis"); + break; + case 0x12: + return ("Expansion Chassis"); + break; + case 0x13: + return ("SubChassis"); + break; + case 0x14: + return ("Bus Expansion Chassis"); + break; + case 0x15: + return ("Peripheral Chassis"); + break; + case 0x16: + return ("RAID Chassis"); + break; + case 0x17: + return ("Rack Mount Chassis"); + break; + case 0x18: + return ("Sealed-case PC"); + break; + case 0x19: + return ("Multi-system chassis"); + break; + case 0x1A: + return ("Compact PCI"); + break; + case 0x1B: + return ("Advanced TCA"); + break; + case 0x1C: + return ("Blade"); + break; + case 0x1D: + return ("Blade Enclosure"); + break; + case 0x1E: + return ("Tablet"); + break; + case 0x1F: + return ("Convertible"); + break; + case 0x20: + return ("Detachable"); + break; + case 0x21: + return ("IoT Gateway"); + break; + case 0x22: + return ("Embedded PC"); + break; + case 0x23: + return ("Mini PC"); + break; + case 0x24: + return ("Stick PC"); + break; + } + + return ("Undefined"); +} + static caddr_t smbios_parse_table(const caddr_t addr) { @@ -251,6 +371,7 @@ case 3: /* 3.3.4 System Enclosure or Chassis (Type 3) */ smbios_setenv("smbios.chassis.maker", addr, 0x04); + setenv("smbios.chassis.type", smbios_parse_chassis_type(addr), 1); smbios_setenv("smbios.chassis.version", addr, 0x06); #ifdef SMBIOS_SERIAL_NUMBERS smbios_setenv("smbios.chassis.serial", addr, 0x07);