diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c
index 395ce12..049755b 100644
--- a/util/amdfwtool/amdfwtool.c
+++ b/util/amdfwtool/amdfwtool.c
@@ -638,7 +638,7 @@
 	 * 1st-level cookie may indicate level 1 or flattened.  If the caller
 	 * passes a pointer to a 2nd-level table, then assume not flat.
 	 */
-	if (cb_config->multi_level == 0)
+	if (!cb_config->multi_level)
 		level = PSP_BOTH;
 	else if (cookie == PSPL2_COOKIE)
 		level = PSP_LVL2;
@@ -739,7 +739,7 @@
 	fill_dir_header(pspdir, count, cookie, ctx);
 }
 
-static void *new_bios_dir(context *ctx, int multi)
+static void *new_bios_dir(context *ctx, bool multi)
 {
 	void *ptr;
 
@@ -822,7 +822,7 @@
 	 * 1st-level cookie may indicate level 1 or flattened.  If the caller
 	 * passes a pointer to a 2nd-level table, then assume not flat.
 	 */
-	if (cb_config->multi_level == 0)
+	if (!cb_config->multi_level)
 		level = BDT_BOTH;
 	else if (cookie == BDT2_COOKIE)
 		level = BDT_LVL2;
@@ -1293,12 +1293,12 @@
 	int debug = 0;
 	int list_deps = 0;
 
-	cb_config.have_whitelist = 0;
-	cb_config.unlock_secure = 0;
-	cb_config.use_secureos = 0;
-	cb_config.load_mp2_fw = 0;
-	cb_config.s0i3 = 0;
-	cb_config.multi_level = 0;
+	cb_config.have_whitelist = false;
+	cb_config.unlock_secure = false;
+	cb_config.use_secureos = false;
+	cb_config.load_mp2_fw = false;
+	cb_config.s0i3 = false;
+	cb_config.multi_level = false;
 
 	while (1) {
 		int optindex = 0;
@@ -1322,24 +1322,24 @@
 			sub = instance = 0;
 			break;
 		case AMDFW_OPT_COMBO:
-			comboable = 1;
+			comboable = true;
 			break;
 		case AMDFW_OPT_MULTILEVEL:
-			cb_config.multi_level = 1;
+			cb_config.multi_level = true;
 			break;
 		case AMDFW_OPT_UNLOCK:
 			register_fw_token_unlock();
-			cb_config.unlock_secure = 1;
+			cb_config.unlock_secure = true;
 			sub = instance = 0;
 			break;
 		case AMDFW_OPT_USE_PSPSECUREOS:
-			cb_config.use_secureos = 1;
+			cb_config.use_secureos = true;
 			break;
 		case AMDFW_OPT_INSTANCE:
 			instance = strtoul(optarg, &tmp, 16);
 			break;
 		case AMDFW_OPT_LOAD_MP2FW:
-			cb_config.load_mp2_fw = 1;
+			cb_config.load_mp2_fw = true;
 			break;
 		case AMDFW_OPT_NVRAM:
 			register_fw_filename(AMD_FW_PSP_NVRAM, sub, optarg);
@@ -1398,12 +1398,12 @@
 			sub = instance = 0;
 			break;
 		case AMDFW_OPT_LOAD_S0I3:
-			cb_config.s0i3 = 1;
+			cb_config.s0i3 = true;
 			break;
 		case AMDFW_OPT_WHITELIST:
 			register_fw_filename(AMD_FW_PSP_WHITELIST, sub, optarg);
 			sub = instance = 0;
-			cb_config.have_whitelist = 1;
+			cb_config.have_whitelist = true;
 			break;
 		case AMDFW_OPT_VERSTAGE:
 			register_fw_filename(AMD_FW_PSP_VERSTAGE, sub, optarg);
@@ -1603,7 +1603,6 @@
 		psp_directory_table *pspdir2 = new_psp_dir(&ctx, cb_config.multi_level);
 		integrate_psp_firmwares(&ctx, pspdir2, NULL,
 						amd_psp_fw_table, PSPL2_COOKIE, &cb_config);
-
 		pspdir = new_psp_dir(&ctx, cb_config.multi_level);
 		integrate_psp_firmwares(&ctx, pspdir, pspdir2,
 						amd_psp_fw_table, PSP_COOKIE, &cb_config);
diff --git a/util/amdfwtool/amdfwtool.h b/util/amdfwtool/amdfwtool.h
index b37503e..a7ac7c1 100644
--- a/util/amdfwtool/amdfwtool.h
+++ b/util/amdfwtool/amdfwtool.h
@@ -4,6 +4,7 @@
 #define _AMD_FW_TOOL_H_
 
 #include <stdint.h>
+#include <stdbool.h>
 
 typedef enum _amd_fw_type {
 	AMD_FW_PSP_PUBKEY = 0,
@@ -220,12 +221,12 @@
 } amd_fw_entry;
 
 typedef struct _amd_cb_config {
-	uint8_t have_whitelist;
-	uint8_t unlock_secure;
-	uint8_t use_secureos;
-	uint8_t load_mp2_fw;
-	uint8_t multi_level;
-	uint8_t s0i3;
+	bool have_whitelist;
+	bool unlock_secure;
+	bool use_secureos;
+	bool load_mp2_fw;
+	bool multi_level;
+	bool s0i3;
 } amd_cb_config;
 
 void register_fw_fuse(char *str);
diff --git a/util/amdfwtool/data_parse.c b/util/amdfwtool/data_parse.c
index 784ee67..8f93183 100644
--- a/util/amdfwtool/data_parse.c
+++ b/util/amdfwtool/data_parse.c
@@ -108,7 +108,7 @@
 	uint8_t subprog;
 
 	if (strcmp(fw_name, "PSPBTLDR_WL_FILE") == 0) {
-		if (cb_config->have_whitelist == 1) {
+		if (cb_config->have_whitelist) {
 			fw_type = AMD_FW_PSP_BOOTLOADER_AB;
 			subprog = 0;
 		} else {
@@ -160,14 +160,14 @@
 		fw_type = AMD_FW_PSP_SMU_FIRMWARE2;
 		subprog = 2;
 	} else if (strcmp(fw_name, "PSP_SEC_DBG_KEY_FILE") == 0) {
-		if (cb_config->unlock_secure == 1) {
+		if (cb_config->unlock_secure) {
 			fw_type = AMD_FW_PSP_SECURED_DEBUG;
 			subprog = 0;
 		} else {
 			fw_type = AMD_FW_SKIP;
 		}
 	} else if (strcmp(fw_name, "PSP_SEC_DEBUG_FILE") == 0) {
-		if (cb_config->unlock_secure == 1) {
+		if (cb_config->unlock_secure) {
 			fw_type = AMD_DEBUG_UNLOCK;
 			subprog = 0;
 		} else {
@@ -198,7 +198,7 @@
 		fw_type = AMD_ABL7;
 		subprog = 0;
 	} else if (strcmp(fw_name, "PSPSECUREOS_FILE") == 0) {
-		if (cb_config->use_secureos == 1) {
+		if (cb_config->use_secureos) {
 			fw_type = AMD_FW_PSP_SECURED_OS;
 			subprog = 0;
 		} else {
@@ -231,21 +231,21 @@
 		fw_type = AMD_SEC_GASKET;
 		subprog = 2;
 	} else if (strcmp(fw_name, "PSP_MP2FW0_FILE") == 0) {
-		if (cb_config->load_mp2_fw == 1) {
+		if (cb_config->load_mp2_fw) {
 			fw_type = AMD_MP2_FW;
 			subprog = 0;
 		} else {
 			fw_type = AMD_FW_SKIP;
 		}
 	} else if (strcmp(fw_name, "PSP_MP2FW1_FILE") == 0) {
-		if (cb_config->load_mp2_fw == 1) {
+		if (cb_config->load_mp2_fw) {
 			fw_type = AMD_MP2_FW;
 			subprog = 1;
 		} else {
 			fw_type = AMD_FW_SKIP;
 		}
 	} else if (strcmp(fw_name, "PSP_MP2FW2_FILE") == 0) {
-		if (cb_config->load_mp2_fw == 1) {
+		if (cb_config->load_mp2_fw) {
 			fw_type = AMD_MP2_FW;
 			subprog = 2;
 		} else {
@@ -255,7 +255,7 @@
 		fw_type = AMD_DRIVER_ENTRIES;
 		subprog = 0;
 	} else if (strcmp(fw_name, "PSP_S0I3_FILE") == 0) {
-		if (cb_config->s0i3 == 1) {
+		if (cb_config->s0i3) {
 			fw_type = AMD_S0I3_DRIVER;
 			subprog = 0;
 		} else {
@@ -295,7 +295,7 @@
 		fw_type = AMD_RPMC_NVRAM;
 		subprog = 0;
 	} else if (strcmp(fw_name, "PSPBTLDR_AB_FILE") == 0) {
-		if (cb_config->have_whitelist == 0) {
+		if (!cb_config->have_whitelist) {
 			fw_type = AMD_FW_PSP_BOOTLOADER_AB;
 			subprog = 0;
 		} else {
@@ -372,7 +372,7 @@
 		subprog = 0;
 		instance = 0;
 	} else if (strcmp(fw_name, "PSP_MP2CFG_FILE") == 0) {
-		if (cb_config->load_mp2_fw == 1) {
+		if (cb_config->load_mp2_fw) {
 			fw_type = AMD_BIOS_MP2_CFG;
 			subprog = 0;
 		} else {
