diff mbox series

lib: dmicheck: replace defines by enum type

Message ID 1533058756-19171-1-git-send-email-alex.hung@canonical.com
State Accepted
Headers show
Series lib: dmicheck: replace defines by enum type | expand

Commit Message

Alex Hung July 31, 2018, 5:39 p.m. UTC
This also eliminates the needs to update FWTS_SMBIOS_CHASSIS_MAX if
SMBIOS spec introduces new chassis types.

Signed-off-by: Alex Hung <alex.hung@canonical.com>
---
 src/dmi/dmicheck/dmicheck.c   |  2 +-
 src/lib/include/fwts_smbios.h | 82 ++++++++++++++++++++++---------------------
 2 files changed, 43 insertions(+), 41 deletions(-)

Comments

Colin Ian King July 31, 2018, 7:27 p.m. UTC | #1
On 31/07/18 18:39, Alex Hung wrote:
> This also eliminates the needs to update FWTS_SMBIOS_CHASSIS_MAX if
> SMBIOS spec introduces new chassis types.
> 
> Signed-off-by: Alex Hung <alex.hung@canonical.com>
> ---
>  src/dmi/dmicheck/dmicheck.c   |  2 +-
>  src/lib/include/fwts_smbios.h | 82 ++++++++++++++++++++++---------------------
>  2 files changed, 43 insertions(+), 41 deletions(-)
> 
> diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
> index 89288ad..8497c2a 100644
> --- a/src/dmi/dmicheck/dmicheck.c
> +++ b/src/dmi/dmicheck/dmicheck.c
> @@ -1135,7 +1135,7 @@ static void dmicheck_entry(fwts_framework *fw,
>  			dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4);
>  			dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x24, 0x0, 0x7f);
>  
> -			if ((data[5] & ~0x80) > FWTS_SMBIOS_CHASSIS_MAX) {
> +			if ((data[5] & ~0x80) >= FWTS_SMBIOS_CHASSIS_MAX) {
>  				fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY,
>  					"Incorrect Chassis Type "
>  					"SMBIOS Type 3 reports 0x%" PRIx8,
> diff --git a/src/lib/include/fwts_smbios.h b/src/lib/include/fwts_smbios.h
> index f977bb8..05f1d5f 100644
> --- a/src/lib/include/fwts_smbios.h
> +++ b/src/lib/include/fwts_smbios.h
> @@ -27,46 +27,48 @@
>  #define FWTS_SMBIOS_REGION_END       (0x000fffff)
>  #define FWTS_SMBIOS_REGION_SIZE      (FWTS_SMBIOS_REGION_END - FWTS_SMBIOS_REGION_START)
>  
> -#define FWTS_SMBIOS_CHASSIS_INVALID			(0x00)
> -#define FWTS_SMBIOS_CHASSIS_OTHER			(0X01)
> -#define FWTS_SMBIOS_CHASSIS_UNKNOWN			(0x02)
> -#define FWTS_SMBIOS_CHASSIS_DESKTOP			(0x03)
> -#define FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP		(0x04)
> -#define FWTS_SMBIOS_CHASSIS_PIZZA_BOX			(0x05)
> -#define FWTS_SMBIOS_CHASSIS_MINI_TOWER			(0x06)
> -#define FWTS_SMBIOS_CHASSIS_TOWER			(0x07)
> -#define FWTS_SMBIOS_CHASSIS_PORTABLE			(0x08)
> -#define FWTS_SMBIOS_CHASSIS_LAPTOP			(0x09)
> -#define FWTS_SMBIOS_CHASSIS_NOTEBOOK			(0x0A)
> -#define FWTS_SMBIOS_CHASSIS_HANDHELD			(0x0B)
> -#define FWTS_SMBIOS_CHASSIS_DOCKING_STATION		(0x0C)
> -#define FWTS_SMBIOS_CHASSIS_ALL_IN_ONE			(0x0D)
> -#define FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK		(0x0E)
> -#define FWTS_SMBIOS_CHASSIS_SPACE_SAVING		(0x0F)
> -#define FWTS_SMBIOS_CHASSIS_LUNCH_BOX			(0x10)
> -#define FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS		(0x11)
> -#define FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS		(0x12)
> -#define FWTS_SMBIOS_CHASSIS_SUB_CHASSIS			(0x13)
> -#define FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS	(0x14)
> -#define FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS		(0x15)
> -#define FWTS_SMBIOS_CHASSIS_RAID_CHASSIS		(0x16)
> -#define FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS		(0x17)
> -#define FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC		(0x18)
> -#define FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS	(0x19)
> -#define FWTS_SMBIOS_CHASSIS_COMPACT_PCI			(0x1A)
> -#define FWTS_SMBIOS_CHASSIS_ADVANCED_TCA		(0x1B)
> -#define FWTS_SMBIOS_CHASSIS_BLADE			(0x1C)
> -#define FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE		(0x1D)
> -#define FWTS_SMBIOS_CHASSIS_TABLET			(0x1E)
> -#define FWTS_SMBIOS_CHASSIS_CONVERTIBLE			(0x1F)
> -#define FWTS_SMBIOS_CHASSIS_DETACHABLE			(0x20)
> -#define FWTS_SMBIOS_CHASSIS_IOT_GATEWAY			(0x21)
> -#define FWTS_SMBIOS_CHASSIS_EMBEDDED_PC			(0x22)
> -#define FWTS_SMBIOS_CHASSIS_MINI_PC			(0x23)
> -#define FWTS_SMBIOS_CHASSIS_STICK_PC			(0x24)
> -
> -/* Always update this to the last FWTS_SMBIOS_CHASSIS type */
> -#define FWTS_SMBIOS_CHASSIS_MAX				(FWTS_SMBIOS_CHASSIS_STICK_PC)
> +/* SMBIOS chassis in type 3 (Table 17 - System Enclosure or Chassis Types) */
> +enum {
> +	FWTS_SMBIOS_CHASSIS_INVALID,
> +	FWTS_SMBIOS_CHASSIS_OTHER,
> +	FWTS_SMBIOS_CHASSIS_UNKNOWN,
> +	FWTS_SMBIOS_CHASSIS_DESKTOP,
> +	FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP,
> +	FWTS_SMBIOS_CHASSIS_PIZZA_BOX,
> +	FWTS_SMBIOS_CHASSIS_MINI_TOWER,
> +	FWTS_SMBIOS_CHASSIS_TOWER,
> +	FWTS_SMBIOS_CHASSIS_PORTABLE,
> +	FWTS_SMBIOS_CHASSIS_LAPTOP,
> +	FWTS_SMBIOS_CHASSIS_NOTEBOOK,
> +	FWTS_SMBIOS_CHASSIS_HANDHELD,
> +	FWTS_SMBIOS_CHASSIS_DOCKING_STATION,
> +	FWTS_SMBIOS_CHASSIS_ALL_IN_ONE,
> +	FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK,
> +	FWTS_SMBIOS_CHASSIS_SPACE_SAVING,
> +	FWTS_SMBIOS_CHASSIS_LUNCH_BOX,
> +	FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_SUB_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_RAID_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC,
> +	FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_COMPACT_PCI,
> +	FWTS_SMBIOS_CHASSIS_ADVANCED_TCA,
> +	FWTS_SMBIOS_CHASSIS_BLADE,
> +	FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE,
> +	FWTS_SMBIOS_CHASSIS_TABLET,
> +	FWTS_SMBIOS_CHASSIS_CONVERTIBLE,
> +	FWTS_SMBIOS_CHASSIS_DETACHABLE,
> +	FWTS_SMBIOS_CHASSIS_IOT_GATEWAY,
> +	FWTS_SMBIOS_CHASSIS_EMBEDDED_PC,
> +	FWTS_SMBIOS_CHASSIS_MINI_PC,
> +	FWTS_SMBIOS_CHASSIS_STICK_PC,
> +	/* end of the chassis types */
> +	FWTS_SMBIOS_CHASSIS_MAX
> +};
>  
>  typedef enum {
>  	FWTS_SMBIOS_UNKNOWN = -1,
>
Good idea!

Acked-by: Colin Ian King <colin.king@canonical.com>
Ivan Hu Aug. 8, 2018, 1:31 a.m. UTC | #2
On 08/01/2018 01:39 AM, Alex Hung wrote:
> This also eliminates the needs to update FWTS_SMBIOS_CHASSIS_MAX if
> SMBIOS spec introduces new chassis types.
>
> Signed-off-by: Alex Hung <alex.hung@canonical.com>
> ---
>  src/dmi/dmicheck/dmicheck.c   |  2 +-
>  src/lib/include/fwts_smbios.h | 82 ++++++++++++++++++++++---------------------
>  2 files changed, 43 insertions(+), 41 deletions(-)
>
> diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
> index 89288ad..8497c2a 100644
> --- a/src/dmi/dmicheck/dmicheck.c
> +++ b/src/dmi/dmicheck/dmicheck.c
> @@ -1135,7 +1135,7 @@ static void dmicheck_entry(fwts_framework *fw,
>  			dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4);
>  			dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x24, 0x0, 0x7f);
>  
> -			if ((data[5] & ~0x80) > FWTS_SMBIOS_CHASSIS_MAX) {
> +			if ((data[5] & ~0x80) >= FWTS_SMBIOS_CHASSIS_MAX) {
>  				fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY,
>  					"Incorrect Chassis Type "
>  					"SMBIOS Type 3 reports 0x%" PRIx8,
> diff --git a/src/lib/include/fwts_smbios.h b/src/lib/include/fwts_smbios.h
> index f977bb8..05f1d5f 100644
> --- a/src/lib/include/fwts_smbios.h
> +++ b/src/lib/include/fwts_smbios.h
> @@ -27,46 +27,48 @@
>  #define FWTS_SMBIOS_REGION_END       (0x000fffff)
>  #define FWTS_SMBIOS_REGION_SIZE      (FWTS_SMBIOS_REGION_END - FWTS_SMBIOS_REGION_START)
>  
> -#define FWTS_SMBIOS_CHASSIS_INVALID			(0x00)
> -#define FWTS_SMBIOS_CHASSIS_OTHER			(0X01)
> -#define FWTS_SMBIOS_CHASSIS_UNKNOWN			(0x02)
> -#define FWTS_SMBIOS_CHASSIS_DESKTOP			(0x03)
> -#define FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP		(0x04)
> -#define FWTS_SMBIOS_CHASSIS_PIZZA_BOX			(0x05)
> -#define FWTS_SMBIOS_CHASSIS_MINI_TOWER			(0x06)
> -#define FWTS_SMBIOS_CHASSIS_TOWER			(0x07)
> -#define FWTS_SMBIOS_CHASSIS_PORTABLE			(0x08)
> -#define FWTS_SMBIOS_CHASSIS_LAPTOP			(0x09)
> -#define FWTS_SMBIOS_CHASSIS_NOTEBOOK			(0x0A)
> -#define FWTS_SMBIOS_CHASSIS_HANDHELD			(0x0B)
> -#define FWTS_SMBIOS_CHASSIS_DOCKING_STATION		(0x0C)
> -#define FWTS_SMBIOS_CHASSIS_ALL_IN_ONE			(0x0D)
> -#define FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK		(0x0E)
> -#define FWTS_SMBIOS_CHASSIS_SPACE_SAVING		(0x0F)
> -#define FWTS_SMBIOS_CHASSIS_LUNCH_BOX			(0x10)
> -#define FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS		(0x11)
> -#define FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS		(0x12)
> -#define FWTS_SMBIOS_CHASSIS_SUB_CHASSIS			(0x13)
> -#define FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS	(0x14)
> -#define FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS		(0x15)
> -#define FWTS_SMBIOS_CHASSIS_RAID_CHASSIS		(0x16)
> -#define FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS		(0x17)
> -#define FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC		(0x18)
> -#define FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS	(0x19)
> -#define FWTS_SMBIOS_CHASSIS_COMPACT_PCI			(0x1A)
> -#define FWTS_SMBIOS_CHASSIS_ADVANCED_TCA		(0x1B)
> -#define FWTS_SMBIOS_CHASSIS_BLADE			(0x1C)
> -#define FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE		(0x1D)
> -#define FWTS_SMBIOS_CHASSIS_TABLET			(0x1E)
> -#define FWTS_SMBIOS_CHASSIS_CONVERTIBLE			(0x1F)
> -#define FWTS_SMBIOS_CHASSIS_DETACHABLE			(0x20)
> -#define FWTS_SMBIOS_CHASSIS_IOT_GATEWAY			(0x21)
> -#define FWTS_SMBIOS_CHASSIS_EMBEDDED_PC			(0x22)
> -#define FWTS_SMBIOS_CHASSIS_MINI_PC			(0x23)
> -#define FWTS_SMBIOS_CHASSIS_STICK_PC			(0x24)
> -
> -/* Always update this to the last FWTS_SMBIOS_CHASSIS type */
> -#define FWTS_SMBIOS_CHASSIS_MAX				(FWTS_SMBIOS_CHASSIS_STICK_PC)
> +/* SMBIOS chassis in type 3 (Table 17 - System Enclosure or Chassis Types) */
> +enum {
> +	FWTS_SMBIOS_CHASSIS_INVALID,
> +	FWTS_SMBIOS_CHASSIS_OTHER,
> +	FWTS_SMBIOS_CHASSIS_UNKNOWN,
> +	FWTS_SMBIOS_CHASSIS_DESKTOP,
> +	FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP,
> +	FWTS_SMBIOS_CHASSIS_PIZZA_BOX,
> +	FWTS_SMBIOS_CHASSIS_MINI_TOWER,
> +	FWTS_SMBIOS_CHASSIS_TOWER,
> +	FWTS_SMBIOS_CHASSIS_PORTABLE,
> +	FWTS_SMBIOS_CHASSIS_LAPTOP,
> +	FWTS_SMBIOS_CHASSIS_NOTEBOOK,
> +	FWTS_SMBIOS_CHASSIS_HANDHELD,
> +	FWTS_SMBIOS_CHASSIS_DOCKING_STATION,
> +	FWTS_SMBIOS_CHASSIS_ALL_IN_ONE,
> +	FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK,
> +	FWTS_SMBIOS_CHASSIS_SPACE_SAVING,
> +	FWTS_SMBIOS_CHASSIS_LUNCH_BOX,
> +	FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_SUB_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_RAID_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC,
> +	FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS,
> +	FWTS_SMBIOS_CHASSIS_COMPACT_PCI,
> +	FWTS_SMBIOS_CHASSIS_ADVANCED_TCA,
> +	FWTS_SMBIOS_CHASSIS_BLADE,
> +	FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE,
> +	FWTS_SMBIOS_CHASSIS_TABLET,
> +	FWTS_SMBIOS_CHASSIS_CONVERTIBLE,
> +	FWTS_SMBIOS_CHASSIS_DETACHABLE,
> +	FWTS_SMBIOS_CHASSIS_IOT_GATEWAY,
> +	FWTS_SMBIOS_CHASSIS_EMBEDDED_PC,
> +	FWTS_SMBIOS_CHASSIS_MINI_PC,
> +	FWTS_SMBIOS_CHASSIS_STICK_PC,
> +	/* end of the chassis types */
> +	FWTS_SMBIOS_CHASSIS_MAX
> +};
>  
>  typedef enum {
>  	FWTS_SMBIOS_UNKNOWN = -1,

Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff mbox series

Patch

diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
index 89288ad..8497c2a 100644
--- a/src/dmi/dmicheck/dmicheck.c
+++ b/src/dmi/dmicheck/dmicheck.c
@@ -1135,7 +1135,7 @@  static void dmicheck_entry(fwts_framework *fw,
 			dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4);
 			dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x24, 0x0, 0x7f);
 
-			if ((data[5] & ~0x80) > FWTS_SMBIOS_CHASSIS_MAX) {
+			if ((data[5] & ~0x80) >= FWTS_SMBIOS_CHASSIS_MAX) {
 				fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY,
 					"Incorrect Chassis Type "
 					"SMBIOS Type 3 reports 0x%" PRIx8,
diff --git a/src/lib/include/fwts_smbios.h b/src/lib/include/fwts_smbios.h
index f977bb8..05f1d5f 100644
--- a/src/lib/include/fwts_smbios.h
+++ b/src/lib/include/fwts_smbios.h
@@ -27,46 +27,48 @@ 
 #define FWTS_SMBIOS_REGION_END       (0x000fffff)
 #define FWTS_SMBIOS_REGION_SIZE      (FWTS_SMBIOS_REGION_END - FWTS_SMBIOS_REGION_START)
 
-#define FWTS_SMBIOS_CHASSIS_INVALID			(0x00)
-#define FWTS_SMBIOS_CHASSIS_OTHER			(0X01)
-#define FWTS_SMBIOS_CHASSIS_UNKNOWN			(0x02)
-#define FWTS_SMBIOS_CHASSIS_DESKTOP			(0x03)
-#define FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP		(0x04)
-#define FWTS_SMBIOS_CHASSIS_PIZZA_BOX			(0x05)
-#define FWTS_SMBIOS_CHASSIS_MINI_TOWER			(0x06)
-#define FWTS_SMBIOS_CHASSIS_TOWER			(0x07)
-#define FWTS_SMBIOS_CHASSIS_PORTABLE			(0x08)
-#define FWTS_SMBIOS_CHASSIS_LAPTOP			(0x09)
-#define FWTS_SMBIOS_CHASSIS_NOTEBOOK			(0x0A)
-#define FWTS_SMBIOS_CHASSIS_HANDHELD			(0x0B)
-#define FWTS_SMBIOS_CHASSIS_DOCKING_STATION		(0x0C)
-#define FWTS_SMBIOS_CHASSIS_ALL_IN_ONE			(0x0D)
-#define FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK		(0x0E)
-#define FWTS_SMBIOS_CHASSIS_SPACE_SAVING		(0x0F)
-#define FWTS_SMBIOS_CHASSIS_LUNCH_BOX			(0x10)
-#define FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS		(0x11)
-#define FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS		(0x12)
-#define FWTS_SMBIOS_CHASSIS_SUB_CHASSIS			(0x13)
-#define FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS	(0x14)
-#define FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS		(0x15)
-#define FWTS_SMBIOS_CHASSIS_RAID_CHASSIS		(0x16)
-#define FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS		(0x17)
-#define FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC		(0x18)
-#define FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS	(0x19)
-#define FWTS_SMBIOS_CHASSIS_COMPACT_PCI			(0x1A)
-#define FWTS_SMBIOS_CHASSIS_ADVANCED_TCA		(0x1B)
-#define FWTS_SMBIOS_CHASSIS_BLADE			(0x1C)
-#define FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE		(0x1D)
-#define FWTS_SMBIOS_CHASSIS_TABLET			(0x1E)
-#define FWTS_SMBIOS_CHASSIS_CONVERTIBLE			(0x1F)
-#define FWTS_SMBIOS_CHASSIS_DETACHABLE			(0x20)
-#define FWTS_SMBIOS_CHASSIS_IOT_GATEWAY			(0x21)
-#define FWTS_SMBIOS_CHASSIS_EMBEDDED_PC			(0x22)
-#define FWTS_SMBIOS_CHASSIS_MINI_PC			(0x23)
-#define FWTS_SMBIOS_CHASSIS_STICK_PC			(0x24)
-
-/* Always update this to the last FWTS_SMBIOS_CHASSIS type */
-#define FWTS_SMBIOS_CHASSIS_MAX				(FWTS_SMBIOS_CHASSIS_STICK_PC)
+/* SMBIOS chassis in type 3 (Table 17 - System Enclosure or Chassis Types) */
+enum {
+	FWTS_SMBIOS_CHASSIS_INVALID,
+	FWTS_SMBIOS_CHASSIS_OTHER,
+	FWTS_SMBIOS_CHASSIS_UNKNOWN,
+	FWTS_SMBIOS_CHASSIS_DESKTOP,
+	FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP,
+	FWTS_SMBIOS_CHASSIS_PIZZA_BOX,
+	FWTS_SMBIOS_CHASSIS_MINI_TOWER,
+	FWTS_SMBIOS_CHASSIS_TOWER,
+	FWTS_SMBIOS_CHASSIS_PORTABLE,
+	FWTS_SMBIOS_CHASSIS_LAPTOP,
+	FWTS_SMBIOS_CHASSIS_NOTEBOOK,
+	FWTS_SMBIOS_CHASSIS_HANDHELD,
+	FWTS_SMBIOS_CHASSIS_DOCKING_STATION,
+	FWTS_SMBIOS_CHASSIS_ALL_IN_ONE,
+	FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK,
+	FWTS_SMBIOS_CHASSIS_SPACE_SAVING,
+	FWTS_SMBIOS_CHASSIS_LUNCH_BOX,
+	FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_SUB_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_RAID_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC,
+	FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_COMPACT_PCI,
+	FWTS_SMBIOS_CHASSIS_ADVANCED_TCA,
+	FWTS_SMBIOS_CHASSIS_BLADE,
+	FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE,
+	FWTS_SMBIOS_CHASSIS_TABLET,
+	FWTS_SMBIOS_CHASSIS_CONVERTIBLE,
+	FWTS_SMBIOS_CHASSIS_DETACHABLE,
+	FWTS_SMBIOS_CHASSIS_IOT_GATEWAY,
+	FWTS_SMBIOS_CHASSIS_EMBEDDED_PC,
+	FWTS_SMBIOS_CHASSIS_MINI_PC,
+	FWTS_SMBIOS_CHASSIS_STICK_PC,
+	/* end of the chassis types */
+	FWTS_SMBIOS_CHASSIS_MAX
+};
 
 typedef enum {
 	FWTS_SMBIOS_UNKNOWN = -1,