diff options
author | Erik van den Bogaert <ebogaert@eltan.com> | 2022-09-28 12:35:51 +0200 |
---|---|---|
committer | Martin Roth <martin.roth@amd.corp-partner.google.com> | 2022-10-06 18:36:03 +0000 |
commit | 93781523a5291bed1faf9f2d9cc5965f22f6c605 (patch) | |
tree | 7f9a9e0625a225831ab0fdc0e0e3d800b3e76e3c /src/include/smbios.h | |
parent | 61ed4ef5d50137886449086f7bf2052468f99f29 (diff) |
smbios: Add API to generate SMBIOS type 28 Temperature Probe
Based on DMTF SMBIOS Specification 3.5.0
Signed-off-by: Erik van den Bogaert <ebogaert@eltan.com>
Change-Id: I710124ca88dac9edb68aab98cf5950aa16c695d3
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67926
Reviewed-by: Frans Hendriks <fhendriks@eltan.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include/smbios.h')
-rw-r--r-- | src/include/smbios.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/include/smbios.h b/src/include/smbios.h index 9c438437e8..65522f0098 100644 --- a/src/include/smbios.h +++ b/src/include/smbios.h @@ -34,6 +34,17 @@ int smbios_write_type38(unsigned long *current, int *handle, int smbios_write_type41(unsigned long *current, int *handle, const char *name, u8 instance, u16 segment, u8 bus, u8 device, u8 function, u8 device_type); +enum smbios_temp_location; +enum smbios_temp_status; +int smbios_write_type28(unsigned long *current, int *handle, + const char *name, + const enum smbios_temp_location location, + const enum smbios_temp_status status, + u16 max_value, u16 min_value, + u16 resolution, u16 tolerance, + u16 accuracy, + u32 oem, + u16 nominal_value); int smbios_write_type43(unsigned long *current, int *handle, const u32 vendor_id, const u8 major_spec_ver, const u8 minor_spec_ver, @@ -255,6 +266,7 @@ typedef enum { SMBIOS_MEMORY_DEVICE = 17, SMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS = 19, SMBIOS_MEMORY_DEVICE_MAPPED_ADDRESS = 20, + SMBIOS_TEMPERATURE_PROBE = 28, SMBIOS_SYSTEM_BOOT_INFORMATION = 32, SMBIOS_IPMI_DEVICE_INFORMATION = 38, SMBIOS_ONBOARD_DEVICES_EXTENDED_INFORMATION = 41, @@ -921,6 +933,46 @@ struct smbios_type20 { u8 eos[2]; } __packed; +/* Bit[7..5] = Temp status */ +enum smbios_temp_status { + SMBIOS_TEMP_STATUS_OTHER = 0x01, + SMBIOS_TEMP_STATUS_UNKNOWN, + SMBIOS_TEMP_STATUS_OK, + SMBIOS_TEMP_STATUS_NONCRITICAL, + SMBIOS_TEMP_STATUS_CRITICAL, + SMBIOS_TEMP_STATUS_NONREC, // Non-Recoverable. +}; + +/* Bit[4..0] = Temp location */ +enum smbios_temp_location { + SMBIOS_TEMP_LOCATION_OTHER = 0x01, + SMBIOS_TEMP_LOCATION_UNKNOWN, + SMBIOS_TEMP_LOCATION_PROCESSOR, + SMBIOS_TEMP_LOCATION_DISK, + SMBIOS_TEMP_LOCATION_BAY, // Peripheral Bay. + SMBIOS_TEMP_LOCATION_SMM, // System Management Module. + SMBIOS_TEMP_LOCATION_BOARD, // Motherboard. + SMBIOS_TEMP_LOCATION_MM, // Memory. + SMBIOS_TEMP_LOCATION_PM, // Processor Module. + SMBIOS_TEMP_LOCATION_POW, // Power Unit. + SMBIOS_TEMP_LOCATION_ADDCARD, +}; + +struct smbios_type28 { + struct smbios_header header; + u8 description; + u8 location_and_status; + u16 maximum_value; + u16 minimum_value; + u16 resolution; + u16 tolerance; + u16 accuracy; + u32 oem_defined; + u16 nominal_value; + u8 eos[2]; +} __packed; + + struct smbios_type32 { struct smbios_header header; u8 reserved[6]; |