Date: Thu, 20 Aug 2020 14:52:06 +0200 From: Emmanuel Vadot <manu@bidouilliste.com> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r364421 - head/stand/libsa Message-ID: <20200820145206.426a7c8d4ce83d9d58eeb9fd@bidouilliste.com> In-Reply-To: <202008201250.07KCoojX042611@repo.freebsd.org> References: <202008201250.07KCoojX042611@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 20 Aug 2020 12:50:50 +0000 (UTC) Emmanuel Vadot <manu@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@bidouilliste.com> <manu@freebsd.org>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200820145206.426a7c8d4ce83d9d58eeb9fd>