svn commit: r364421 - head/stand/libsa
Emmanuel Vadot
manu at bidouilliste.com
Thu Aug 20 12:52:16 UTC 2020
On Thu, 20 Aug 2020 12:50:50 +0000 (UTC)
Emmanuel Vadot <manu at FreeBSD.org> wrote:
> Author: manu
> Date: Thu Aug 20 12:50:49 2020
> New Revision: 364421
> URL: https://svnweb.freebsd.org/changeset/base/364421
>
> Log:
> libsa: smbios: Parse the chassis type and export it as smbios.chassis.type
>
> It can be useful to know what type of machine we are running on for desktop
> related thing.
> It also allow us to support all the DMI variable that linux driver can fetch.
>
> MFC after: 1 week
> Sponsored by: Sponsored-by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D26045
Reviewed by: emaste
> Modified:
> head/stand/libsa/smbios.c
>
> Modified: head/stand/libsa/smbios.c
> ==============================================================================
> --- head/stand/libsa/smbios.c Thu Aug 20 10:06:50 2020 (r364420)
> +++ head/stand/libsa/smbios.c Thu Aug 20 12:50:49 2020 (r364421)
> @@ -209,6 +209,90 @@ smbios_setuuid(const char *name, const caddr_t addr, c
>
> #endif
>
> +static const char *
> +smbios_parse_chassis_type(caddr_t addr)
> +{
> + int type;
> +
> + type = SMBIOS_GET8(addr, 0x5);
> + switch (type) {
> + case 0x1:
> + return ("Other");
> + case 0x2:
> + return ("Unknown");
> + case 0x3:
> + return ("Desktop");
> + case 0x4:
> + return ("Low Profile Desktop");
> + case 0x5:
> + return ("Pizza Box");
> + case 0x6:
> + return ("Mini Tower");
> + case 0x7:
> + return ("Tower");
> + case 0x8:
> + return ("Portable");
> + case 0x9:
> + return ("Laptop");
> + case 0xA:
> + return ("Notebook");
> + case 0xB:
> + return ("Hand Held");
> + case 0xC:
> + return ("Docking Station");
> + case 0xD:
> + return ("All in One");
> + case 0xE:
> + return ("Sub Notebook");
> + case 0xF:
> + return ("Lunch Box");
> + case 0x10:
> + return ("Space-saving");
> + case 0x11:
> + return ("Main Server Chassis");
> + case 0x12:
> + return ("Expansion Chassis");
> + case 0x13:
> + return ("SubChassis");
> + case 0x14:
> + return ("Bus Expansion Chassis");
> + case 0x15:
> + return ("Peripheral Chassis");
> + case 0x16:
> + return ("RAID Chassis");
> + case 0x17:
> + return ("Rack Mount Chassis");
> + case 0x18:
> + return ("Sealed-case PC");
> + case 0x19:
> + return ("Multi-system chassis");
> + case 0x1A:
> + return ("Compact PCI");
> + case 0x1B:
> + return ("Advanced TCA");
> + case 0x1C:
> + return ("Blade");
> + case 0x1D:
> + return ("Blade Enclosure");
> + case 0x1E:
> + return ("Tablet");
> + case 0x1F:
> + return ("Convertible");
> + case 0x20:
> + return ("Detachable");
> + case 0x21:
> + return ("IoT Gateway");
> + case 0x22:
> + return ("Embedded PC");
> + case 0x23:
> + return ("Mini PC");
> + case 0x24:
> + return ("Stick PC");
> + }
> +
> + return ("Undefined");
> +}
> +
> static caddr_t
> smbios_parse_table(const caddr_t addr)
> {
> @@ -251,6 +335,7 @@ smbios_parse_table(const caddr_t addr)
>
> 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);
--
Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>
More information about the svn-src-all
mailing list