diff --git a/common/desc_image_load.c b/common/desc_image_load.c
index 147dfbf..672b80b 100644
--- a/common/desc_image_load.c
+++ b/common/desc_image_load.c
@@ -202,7 +202,7 @@
 	uintptr_t hw_config_base = 0, fw_config_base;
 	bl_mem_params_node_t *mem_params;
 
-	assert(bl2_to_next_bl_params);
+	assert(bl2_to_next_bl_params != NULL);
 
 	/*
 	 * Get the `bl_mem_params_node_t` corresponding to HW_CONFIG
diff --git a/common/fdt_wrappers.c b/common/fdt_wrappers.c
index 3766019..1a726a8 100644
--- a/common/fdt_wrappers.c
+++ b/common/fdt_wrappers.c
@@ -23,16 +23,16 @@
 	uint32_t hi = 0, lo;
 	int value_len;
 
-	assert(dtb);
-	assert(prop);
-	assert(value);
+	assert(dtb != NULL);
+	assert(prop != NULL);
+	assert(value != NULL);
 	assert(node >= 0);
 
 	/* We expect either 1 or 2 cell property */
-	assert(cells <= 2);
+	assert(cells <= 2U);
 
 	/* Access property and obtain its length (in bytes) */
-	value_ptr = fdt_getprop_namelen(dtb, node, prop, strlen(prop),
+	value_ptr = fdt_getprop_namelen(dtb, node, prop, (int)strlen(prop),
 			&value_len);
 	if (value_ptr == NULL) {
 		WARN("Couldn't find property %s in dtb\n", prop);
@@ -41,19 +41,19 @@
 
 
 	/* Verify that property length accords with cell length */
-	if (NCELLS(value_len) != cells) {
+	if (NCELLS((unsigned int)value_len) != cells) {
 		WARN("Property length mismatch\n");
 		return -1;
 	}
 
-	if (cells == 2) {
+	if (cells == 2U) {
 		hi = fdt32_to_cpu(*value_ptr);
 		value_ptr++;
 	}
 
 	lo = fdt32_to_cpu(*value_ptr);
 
-	if (cells == 2)
+	if (cells == 2U)
 		*((uint64_t *) value) = ((uint64_t) hi << 32) | lo;
 	else
 		*((uint32_t *) value) = lo;
@@ -70,20 +70,20 @@
 {
 	int err, len;
 
-	assert(dtb);
-	assert(prop);
-	assert(value);
+	assert(dtb != NULL);
+	assert(prop != NULL);
+	assert(value != NULL);
 	assert(node >= 0);
 
 	/* We expect either 1 or 2 cell property */
-	assert(cells <= 2);
+	assert(cells <= 2U);
 
-	if (cells == 2)
+	if (cells == 2U)
 		*(uint64_t *)value = cpu_to_fdt64(*(uint64_t *)value);
 	else
 		*(uint32_t *)value = cpu_to_fdt32(*(uint32_t *)value);
 
-	len = cells * 4;
+	len = (int)cells * 4;
 
 	/* Set property value in place */
 	err = fdt_setprop_inplace(dtb, node, prop, value, len);
diff --git a/include/common/bl_common.h b/include/common/bl_common.h
index 8915ba0..6a249f5 100644
--- a/include/common/bl_common.h
+++ b/include/common/bl_common.h
@@ -9,6 +9,7 @@
 
 #include <ep_info.h>
 #include <param_header.h>
+#include <utils_def.h>
 
 #define UP	1
 #define DOWN	0
@@ -31,10 +32,10 @@
 #define IMAGE_STATE_EXECUTED			4
 #define IMAGE_STATE_INTERRUPTED			5
 
-#define IMAGE_ATTRIB_SKIP_LOADING	0x02
-#define IMAGE_ATTRIB_PLAT_SETUP		0x04
+#define IMAGE_ATTRIB_SKIP_LOADING	U(0x02)
+#define IMAGE_ATTRIB_PLAT_SETUP		U(0x04)
 
-#define INVALID_IMAGE_ID		(0xFFFFFFFF)
+#define INVALID_IMAGE_ID		U(0xFFFFFFFF)
 
 /*******************************************************************************
  * Constants to indicate type of exception to the common exception handler.
diff --git a/include/common/fdt_wrappers.h b/include/common/fdt_wrappers.h
index db72f18..18a6d10 100644
--- a/include/common/fdt_wrappers.h
+++ b/include/common/fdt_wrappers.h
@@ -10,7 +10,7 @@
 #define __FDT_WRAPPERS__
 
 /* Number of cells, given total length in bytes. Each cell is 4 bytes long */
-#define NCELLS(l) (l / 4)
+#define NCELLS(len) ((len) / 4)
 
 int fdtw_read_cells(const void *dtb, int node, const char *prop,
 		unsigned int cells, void *value);
diff --git a/plat/arm/board/fvp/fvp_bl2_setup.c b/plat/arm/board/fvp/fvp_bl2_setup.c
index 415de05..0a3b67d 100644
--- a/plat/arm/board/fvp/fvp_bl2_setup.c
+++ b/plat/arm/board/fvp/fvp_bl2_setup.c
@@ -7,6 +7,7 @@
 #include <generic_delay_timer.h>
 #include <mmio.h>
 #include <plat_arm.h>
+#include <platform.h>
 #include <sp804_delay_timer.h>
 #include <v2m_def.h>
 #include "fvp_def.h"
diff --git a/plat/arm/board/fvp/fvp_bl31_setup.c b/plat/arm/board/fvp/fvp_bl31_setup.c
index 640dea1..bcba60a 100644
--- a/plat/arm/board/fvp/fvp_bl31_setup.c
+++ b/plat/arm/board/fvp/fvp_bl31_setup.c
@@ -6,6 +6,7 @@
 
 #include <arm_config.h>
 #include <plat_arm.h>
+#include <platform.h>
 #include <smmu_v3.h>
 #include "fvp_private.h"
 
diff --git a/plat/arm/common/arm_bl2_setup.c b/plat/arm/common/arm_bl2_setup.c
index 9a51012..7add61d 100644
--- a/plat/arm/common/arm_bl2_setup.c
+++ b/plat/arm/common/arm_bl2_setup.c
@@ -194,7 +194,7 @@
 	plat_arm_io_setup();
 
 #if LOAD_IMAGE_V2
-	if (tb_fw_config != 0)
+	if (tb_fw_config != 0U)
 		arm_bl2_set_tb_cfg_addr((void *)tb_fw_config);
 #endif
 }
diff --git a/plat/arm/common/arm_dyn_cfg.c b/plat/arm/common/arm_dyn_cfg.c
index a6fafb8..02f995f 100644
--- a/plat/arm/common/arm_dyn_cfg.c
+++ b/plat/arm/common/arm_dyn_cfg.c
@@ -8,6 +8,7 @@
 #include <assert.h>
 #include <debug.h>
 #include <desc_image_load.h>
+#include <plat_arm.h>
 #include <platform.h>
 #include <platform_def.h>
 #include <string.h>
@@ -38,7 +39,7 @@
 
 	VERBOSE("BL1: Loading TB_FW_CONFIG\n");
 	err = load_auth_image(TB_FW_CONFIG_ID, &arm_tb_fw_info.image_info);
-	if (err) {
+	if (err != 0) {
 		/* Return if TB_FW_CONFIG is not loaded */
 		VERBOSE("Failed to load TB_FW_CONFIG\n");
 		return;
@@ -48,7 +49,7 @@
 
 	/* The BL2 ep_info arg0 is modified to point to TB_FW_CONFIG */
 	image_desc = bl1_plat_get_image_desc(BL2_IMAGE_ID);
-	assert(image_desc);
+	assert(image_desc != NULL);
 	image_desc->ep_info.args.arg0 = config_base;
 
 	INFO("BL1: TB_FW_CONFIG loaded at address = %p\n",
@@ -60,7 +61,7 @@
  */
 void arm_bl2_set_tb_cfg_addr(void *dtb)
 {
-	assert(dtb);
+	assert(dtb != NULL);
 	tb_fw_cfg_dtb = dtb;
 }
 
diff --git a/plat/arm/common/arm_dyn_cfg_helpers.c b/plat/arm/common/arm_dyn_cfg_helpers.c
index afe4453..cfcbf2a 100644
--- a/plat/arm/common/arm_dyn_cfg_helpers.c
+++ b/plat/arm/common/arm_dyn_cfg_helpers.c
@@ -8,6 +8,7 @@
 #include <desc_image_load.h>
 #include <fdt_wrappers.h>
 #include <libfdt.h>
+#include <plat_arm.h>
 
 /*******************************************************************************
  * Helper to read the `hw_config` property in config DTB. This function
@@ -31,9 +32,9 @@
 {
 	int err;
 
-	assert(dtb);
-	assert(hw_config_addr);
-	assert(hw_config_size);
+	assert(dtb != NULL);
+	assert(hw_config_addr != NULL);
+	assert(hw_config_size != NULL);
 
 	/* Check if the pointer to DT is correct */
 	assert(fdt_check_header(dtb) == 0);
@@ -72,8 +73,8 @@
  ******************************************************************************/
 int arm_dyn_tb_fw_cfg_init(void *dtb, int *node)
 {
-	assert(dtb);
-	assert(node);
+	assert(dtb != NULL);
+	assert(node != NULL);
 
 	/* Check if the pointer to DT is correct */
 	if (fdt_check_header(dtb) != 0) {
diff --git a/plat/common/plat_bl1_common.c b/plat/common/plat_bl1_common.c
index a197262..4b1f233 100644
--- a/plat/common/plat_bl1_common.c
+++ b/plat/common/plat_bl1_common.c
@@ -89,7 +89,7 @@
 
 	/* Get the image descriptor */
 	image_desc = bl1_plat_get_image_desc(BL2_IMAGE_ID);
-	assert(image_desc);
+	assert(image_desc != NULL);
 
 	/* Get the entry point info */
 	ep_info = &image_desc->ep_info;
