Reduce deep nesting of header files

Reduce the number of header files included from other header
files as much as possible without splitting the files. Use forward
declarations where possible. This allows removal of some unnecessary
"#ifndef __ASSEMBLY__" statements.

Also, review the .c and .S files for which header files really need
including and reorder the #include statements alphabetically.

Fixes ARM-software/tf-issues#31

Change-Id: Iec92fb976334c77453e010b60bcf56f3be72bd3e
diff --git a/bl1/aarch64/bl1_arch_setup.c b/bl1/aarch64/bl1_arch_setup.c
index 417a536..758b8e8 100644
--- a/bl1/aarch64/bl1_arch_setup.c
+++ b/bl1/aarch64/bl1_arch_setup.c
@@ -28,9 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <arch.h>
 #include <arch_helpers.h>
-#include <platform.h>
-#include <assert.h>
 
 /*******************************************************************************
  * Function that does the first bit of architectural setup that affects
diff --git a/bl1/aarch64/bl1_exceptions.S b/bl1/aarch64/bl1_exceptions.S
index e57f228..68d088b 100644
--- a/bl1/aarch64/bl1_exceptions.S
+++ b/bl1/aarch64/bl1_exceptions.S
@@ -29,11 +29,9 @@
  */
 
 #include <arch.h>
+#include <asm_macros.S>
 #include <bl_common.h>
-#include <bl1.h>
-#include <platform.h>
 #include <runtime_svc.h>
-#include <asm_macros.S>
 
 	.globl	bl1_exceptions
 
diff --git a/bl1/bl1_main.c b/bl1/bl1_main.c
index 05af75a..de7bc31 100644
--- a/bl1/bl1_main.c
+++ b/bl1/bl1_main.c
@@ -28,13 +28,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <platform.h>
-#include <semihosting.h>
+#include <assert.h>
+#include <bl_common.h>
 #include <bl1.h>
+#include <platform.h>
+#include <stdio.h>
 #include "bl1_private.h"
 
 /*******************************************************************************
diff --git a/bl2/aarch64/bl2_arch_setup.c b/bl2/aarch64/bl2_arch_setup.c
index 7ecf669..0eafd15 100644
--- a/bl2/aarch64/bl2_arch_setup.c
+++ b/bl2/aarch64/bl2_arch_setup.c
@@ -28,8 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <arch.h>
 #include <arch_helpers.h>
-#include <platform.h>
 
 /*******************************************************************************
  * Place holder function to perform any S-EL1 specific architectural setup. At
diff --git a/bl2/aarch64/bl2_entrypoint.S b/bl2/aarch64/bl2_entrypoint.S
index 6bc779a..b8af9a5 100644
--- a/bl2/aarch64/bl2_entrypoint.S
+++ b/bl2/aarch64/bl2_entrypoint.S
@@ -28,9 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <bl_common.h>
 #include <arch.h>
 #include <asm_macros.S>
+#include <bl_common.h>
 
 
 	.globl	bl2_entrypoint
diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c
index 6f6ea51..ac28559 100644
--- a/bl2/bl2_main.c
+++ b/bl2/bl2_main.c
@@ -28,16 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <semihosting.h>
+#include <assert.h>
 #include <bl_common.h>
 #include <bl2.h>
 #include <debug.h>
+#include <platform.h>
+#include <stdio.h>
 #include "bl2_private.h"
 
 /*******************************************************************************
diff --git a/bl31/aarch64/bl31_arch_setup.c b/bl31/aarch64/bl31_arch_setup.c
index 793b895..acaa6b5 100644
--- a/bl31/aarch64/bl31_arch_setup.c
+++ b/bl31/aarch64/bl31_arch_setup.c
@@ -28,9 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <arch.h>
 #include <arch_helpers.h>
-#include <platform.h>
 #include <assert.h>
+#include <bl_common.h>
+#include <bl31.h>
+#include <platform.h>
 
 /*******************************************************************************
  * This duplicates what the primary cpu did after a cold boot in BL1. The same
diff --git a/bl31/aarch64/bl31_entrypoint.S b/bl31/aarch64/bl31_entrypoint.S
index c04bc18..39fa605 100644
--- a/bl31/aarch64/bl31_entrypoint.S
+++ b/bl31/aarch64/bl31_entrypoint.S
@@ -28,10 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <bl_common.h>
-#include <platform.h>
 #include <arch.h>
 #include <asm_macros.S>
+#include <bl_common.h>
 #include <cm_macros.S>
 
 
diff --git a/bl31/aarch64/context.S b/bl31/aarch64/context.S
index 2b2e7bf..45d4a22 100644
--- a/bl31/aarch64/context.S
+++ b/bl31/aarch64/context.S
@@ -28,8 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <context.h>
+#include <arch.h>
 #include <asm_macros.S>
+#include <context.h>
 
 /* -----------------------------------------------------
  * The following function strictly follows the AArch64
diff --git a/bl31/aarch64/runtime_exceptions.S b/bl31/aarch64/runtime_exceptions.S
index b89a768..53cc176 100644
--- a/bl31/aarch64/runtime_exceptions.S
+++ b/bl31/aarch64/runtime_exceptions.S
@@ -29,11 +29,11 @@
  */
 
 #include <arch.h>
-#include <runtime_svc.h>
-#include <platform.h>
-#include <context.h>
 #include <asm_macros.S>
 #include <cm_macros.S>
+#include <context.h>
+#include <platform.h>
+#include <runtime_svc.h>
 
 	.globl	runtime_exceptions
 	.globl	el3_exit
diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c
index 907c487..cf826d0 100644
--- a/bl31/bl31_main.c
+++ b/bl31/bl31_main.c
@@ -28,17 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <semihosting.h>
+#include <assert.h>
 #include <bl_common.h>
 #include <bl31.h>
-#include <runtime_svc.h>
 #include <context_mgmt.h>
+#include <runtime_svc.h>
+#include <stdio.h>
 
 
 /*******************************************************************************
diff --git a/bl31/context_mgmt.c b/bl31/context_mgmt.c
index 09b3bb8..8d1396e 100644
--- a/bl31/context_mgmt.c
+++ b/bl31/context_mgmt.c
@@ -28,15 +28,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <platform.h>
+#include <assert.h>
 #include <bl_common.h>
-#include <runtime_svc.h>
+#include <context.h>
 #include <context_mgmt.h>
+#include <platform.h>
+#include <runtime_svc.h>
 
 /*******************************************************************************
  * Data structure which holds the pointers to non-secure and secure security
diff --git a/bl31/runtime_svc.c b/bl31/runtime_svc.c
index 8ec2f0b..9a68e50 100644
--- a/bl31/runtime_svc.c
+++ b/bl31/runtime_svc.c
@@ -28,20 +28,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
+#include <debug.h>
 #include <errno.h>
-#include <assert.h>
-#include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <semihosting.h>
-#include <bl_common.h>
-#include <psci.h>
 #include <runtime_svc.h>
-#include <context.h>
-#include <debug.h>
-#include <context_mgmt.h>
+#include <string.h>
 
 /*******************************************************************************
  * The 'rt_svc_descs' array holds the runtime service descriptors exported by
diff --git a/bl32/tsp/aarch64/tsp_entrypoint.S b/bl32/tsp/aarch64/tsp_entrypoint.S
index 8bfe454..97d54f6 100644
--- a/bl32/tsp/aarch64/tsp_entrypoint.S
+++ b/bl32/tsp/aarch64/tsp_entrypoint.S
@@ -28,10 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <bl_common.h>
 #include <arch.h>
-#include <tsp.h>
 #include <asm_macros.S>
+#include <tsp.h>
 
 
 	.globl	tsp_entrypoint
diff --git a/bl32/tsp/aarch64/tsp_request.S b/bl32/tsp/aarch64/tsp_request.S
index da7d6e6..6aa0873 100644
--- a/bl32/tsp/aarch64/tsp_request.S
+++ b/bl32/tsp/aarch64/tsp_request.S
@@ -28,8 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <tsp.h>
 #include <asm_macros.S>
+#include <tsp.h>
 
 	.globl tsp_get_magic
 
diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c
index 083c430..a667ffc 100644
--- a/bl32/tsp/tsp_main.c
+++ b/bl32/tsp/tsp_main.c
@@ -28,13 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <bl32.h>
-#include <tsp.h>
 #include <arch_helpers.h>
-#include <stdio.h>
-#include <platform.h>
+#include <bl_common.h>
+#include <bl32.h>
 #include <debug.h>
+#include <platform.h>
 #include <spinlock.h>
+#include <stdio.h>
+#include <tsp.h>
 
 /*******************************************************************************
  * Lock to control access to the console
diff --git a/common/aarch64/early_exceptions.S b/common/aarch64/early_exceptions.S
index 41bff97..90f5421 100644
--- a/common/aarch64/early_exceptions.S
+++ b/common/aarch64/early_exceptions.S
@@ -28,11 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch.h>
-#include <bl_common.h>
-#include <platform.h>
-#include <runtime_svc.h>
 #include <asm_macros.S>
+#include <runtime_svc.h>
 
 	.globl	early_exceptions
 
diff --git a/common/bl_common.c b/common/bl_common.c
index e96bfa0..af2b7b7 100644
--- a/common/bl_common.c
+++ b/common/bl_common.c
@@ -28,17 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <semihosting.h>
+#include <assert.h>
 #include <bl_common.h>
-#include <io_storage.h>
 #include <debug.h>
+#include <io_storage.h>
+#include <platform.h>
+#include <stdio.h>
 
 unsigned long page_align(unsigned long value, unsigned dir)
 {
diff --git a/drivers/arm/cci400/cci400.c b/drivers/arm/cci400/cci400.c
index 4ca55b1..02f7f95 100644
--- a/drivers/arm/cci400/cci400.c
+++ b/drivers/arm/cci400/cci400.c
@@ -28,9 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <assert.h>
-#include <platform.h>
 #include <cci400.h>
+#include <mmio.h>
+#include <platform.h>
 
 static inline unsigned long get_slave_iface_base(unsigned long mpidr)
 {
diff --git a/drivers/arm/gic/gic_v3.c b/drivers/arm/gic/gic_v3.c
index d658a61..f429662 100644
--- a/drivers/arm/gic/gic_v3.c
+++ b/drivers/arm/gic/gic_v3.c
@@ -28,11 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdint.h>
 #include <arch.h>
-#include <platform.h>
-#include <gic_v3.h>
 #include <debug.h>
+#include <gic_v3.h>
 
 uintptr_t gicv3_get_rdist(uintptr_t gicr_base, uint64_t mpidr)
 {
diff --git a/drivers/arm/pl011/pl011.c b/drivers/arm/pl011/pl011.c
index 8288cd8..f12bd23 100644
--- a/drivers/arm/pl011/pl011.c
+++ b/drivers/arm/pl011/pl011.c
@@ -28,9 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <assert.h>
 #include <platform.h>
 #include <pl011.h>
-#include <assert.h>
 
 void pl011_setbaudrate(unsigned long base_addr, unsigned int baudrate)
 {
diff --git a/drivers/arm/pl011/pl011_console.c b/drivers/arm/pl011/pl011_console.c
index 1a684ff..3b0e237 100644
--- a/drivers/arm/pl011/pl011_console.c
+++ b/drivers/arm/pl011/pl011_console.c
@@ -28,10 +28,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <assert.h>
 #include <console.h>
 #include <platform.h>
 #include <pl011.h>
-#include <assert.h>
 
 static unsigned long uart_base;
 
diff --git a/drivers/arm/tzc400/tzc400.c b/drivers/arm/tzc400/tzc400.c
index 56c6dea..c1716db 100644
--- a/drivers/arm/tzc400/tzc400.c
+++ b/drivers/arm/tzc400/tzc400.c
@@ -29,10 +29,10 @@
  */
 
 #include <assert.h>
-#include <arch_helpers.h>
-#include <tzc400.h>
-#include <mmio.h>
 #include <debug.h>
+#include <mmio.h>
+#include <stddef.h>
+#include <tzc400.h>
 
 static uint32_t tzc_read_build_config(uint64_t base)
 {
diff --git a/drivers/io/io_fip.c b/drivers/io/io_fip.c
index 482e068..b2dcfcc 100644
--- a/drivers/io/io_fip.c
+++ b/drivers/io/io_fip.c
@@ -28,17 +28,17 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdint.h>
-#include <uuid.h>
-#include <errno.h>
-#include <string.h>
 #include <assert.h>
-#include <platform.h>
+#include <debug.h>
+#include <errno.h>
 #include <firmware_image_package.h>
-#include <io_storage.h>
 #include <io_driver.h>
 #include <io_fip.h>
-#include <debug.h>
+#include <io_storage.h>
+#include <platform.h>
+#include <stdint.h>
+#include <string.h>
+#include <uuid.h>
 
 /* Useful for printing UUIDs when debugging.*/
 #define PRINT_UUID2(x)								\
diff --git a/drivers/io/io_memmap.c b/drivers/io/io_memmap.c
index 2e70e96..a40e612 100644
--- a/drivers/io/io_memmap.c
+++ b/drivers/io/io_memmap.c
@@ -29,10 +29,10 @@
  */
 
 #include <assert.h>
-#include <string.h>
-#include <io_storage.h>
-#include <io_driver.h>
 #include <debug.h>
+#include <io_driver.h>
+#include <io_storage.h>
+#include <string.h>
 
 /* As we need to be able to keep state for seek, only one file can be open
  * at a time. Make this a structure and point to the entity->info. When we
diff --git a/drivers/io/io_semihosting.c b/drivers/io/io_semihosting.c
index 89c844b..a37693d 100644
--- a/drivers/io/io_semihosting.c
+++ b/drivers/io/io_semihosting.c
@@ -29,8 +29,8 @@
  */
 
 #include <assert.h>
-#include <io_storage.h>
 #include <io_driver.h>
+#include <io_storage.h>
 #include <semihosting.h>
 
 
diff --git a/include/bl1/bl1.h b/include/bl1/bl1.h
index 1750a1f..d8afae4 100644
--- a/include/bl1/bl1.h
+++ b/include/bl1/bl1.h
@@ -31,16 +31,16 @@
 #ifndef __BL1_H__
 #define __BL1_H__
 
-#include <bl_common.h>
 
-#ifndef __ASSEMBLY__
+/******************************************
+ * Forward declarations
+ *****************************************/
+struct meminfo;
 
 /******************************************
  * Function prototypes
  *****************************************/
 extern void bl1_platform_setup(void);
-extern meminfo_t *bl1_plat_sec_mem_layout(void);
-
-#endif /*__ASSEMBLY__*/
+extern struct meminfo *bl1_plat_sec_mem_layout(void);
 
 #endif /* __BL1_H__ */
diff --git a/include/bl2/bl2.h b/include/bl2/bl2.h
index 9a5094f..25b6f9c 100644
--- a/include/bl2/bl2.h
+++ b/include/bl2/bl2.h
@@ -31,18 +31,22 @@
 #ifndef __BL2_H__
 #define __BL2_H__
 
-#include <bl_common.h>
-
 /******************************************
  * Data declarations
  *****************************************/
 extern unsigned long long bl2_entrypoint;
 
 /******************************************
+ * Forward declarations
+ *****************************************/
+struct meminfo;
+struct bl31_args;
+
+/******************************************
  * Function prototypes
  *****************************************/
 extern void bl2_platform_setup(void);
-extern meminfo_t *bl2_plat_sec_mem_layout(void);
-extern bl31_args_t *bl2_get_bl31_args_ptr(void);
+extern struct meminfo *bl2_plat_sec_mem_layout(void);
+extern struct bl31_args *bl2_get_bl31_args_ptr(void);
 
 #endif /* __BL2_H__ */
diff --git a/include/bl31/bl31.h b/include/bl31/bl31.h
index 6dd7596..b60e32c 100644
--- a/include/bl31/bl31.h
+++ b/include/bl31/bl31.h
@@ -31,13 +31,19 @@
 #ifndef __BL31_H__
 #define __BL31_H__
 
-#include <bl_common.h>
+#include <stdint.h>
 
 /*******************************************************************************
  * Data declarations
  ******************************************************************************/
 extern unsigned long bl31_entrypoint;
 
+/******************************************
+ * Forward declarations
+ *****************************************/
+struct meminfo;
+struct el_change_info;
+
 /*******************************************************************************
  * Function prototypes
  ******************************************************************************/
@@ -46,9 +52,10 @@
 extern void bl31_set_next_image_type(uint32_t type);
 extern uint32_t bl31_get_next_image_type(void);
 extern void bl31_prepare_next_image_entry();
-extern el_change_info_t *bl31_get_next_image_info(uint32_t type);
+extern struct el_change_info *bl31_get_next_image_info(uint32_t type);
 extern void bl31_platform_setup(void);
-extern meminfo_t *bl31_plat_get_bl32_mem_layout(void);
-extern meminfo_t *bl31_plat_sec_mem_layout(void);
-extern void bl31_register_bl32_init(int32_t (*)(meminfo_t *));
+extern struct meminfo *bl31_plat_get_bl32_mem_layout(void);
+extern struct meminfo *bl31_plat_sec_mem_layout(void);
+extern void bl31_register_bl32_init(int32_t (*)(struct meminfo *));
+
 #endif /* __BL31_H__ */
diff --git a/include/bl31/cm_macros.S b/include/bl31/cm_macros.S
index 9eeec18..d264956 100644
--- a/include/bl31/cm_macros.S
+++ b/include/bl31/cm_macros.S
@@ -27,6 +27,11 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  */
+
+#include <arch.h>
+#include <context.h>
+
+
 	/* ---------------------------------------------
 	 * Zero out the callee saved register to prevent
 	 * leakage of secure state into the normal world
diff --git a/include/bl31/context.h b/include/bl31/context.h
index c7eda7d..989b2e6 100644
--- a/include/bl31/context.h
+++ b/include/bl31/context.h
@@ -31,9 +31,6 @@
 #ifndef __CONTEXT_H__
 #define __CONTEXT_H__
 
-#include <arch.h>
-#include <cassert.h>
-
 /*******************************************************************************
  * Constants that allow assembler code to access members of and the 'gp_regs'
  * structure at their correct offsets.
@@ -171,6 +168,9 @@
 
 #ifndef __ASSEMBLY__
 
+#include <cassert.h>
+#include <stdint.h>
+
 /*
  * Common constants to help define the 'cpu_context' structure and its
  * members below.
diff --git a/include/bl31/context_mgmt.h b/include/bl31/context_mgmt.h
index 35f7c8c..efcdcd2 100644
--- a/include/bl31/context_mgmt.h
+++ b/include/bl31/context_mgmt.h
@@ -31,9 +31,8 @@
 #ifndef __CM_H__
 #define __CM_H__
 
-#include <context.h>
+#include <stdint.h>
 
-#ifndef __ASSEMBLY__
 /*******************************************************************************
  * Function & variable prototypes
  ******************************************************************************/
@@ -51,5 +50,5 @@
 extern void cm_set_el3_elr(uint32_t security_state, uint64_t entrypoint);
 extern void cm_set_next_eret_context(uint32_t security_state);
 extern void cm_init_exception_stack(uint64_t mpidr, uint32_t security_state);
-#endif /*__ASSEMBLY__*/
+
 #endif /* __CM_H__ */
diff --git a/include/bl31/runtime_svc.h b/include/bl31/runtime_svc.h
index ac85fa3..12b5db8 100644
--- a/include/bl31/runtime_svc.h
+++ b/include/bl31/runtime_svc.h
@@ -30,8 +30,6 @@
 
 #ifndef __RUNTIME_SVC_H__
 #define __RUNTIME_SVC_H__
-#include <psci.h>
-#include <cassert.h>
 
 /*******************************************************************************
  * Bit definitions inside the function id as per the SMC calling convention
@@ -122,6 +120,10 @@
 
 #ifndef __ASSEMBLY__
 
+#include <cassert.h>
+#include <context.h>
+#include <stdint.h>
+
 /* Various flags passed to SMC handlers */
 #define SMC_FROM_SECURE		(0 << 0)
 #define SMC_FROM_NON_SECURE	(1 << 0)
diff --git a/include/bl31/services/psci.h b/include/bl31/services/psci.h
index ab7b7bd..570fe5b 100644
--- a/include/bl31/services/psci.h
+++ b/include/bl31/services/psci.h
@@ -31,6 +31,7 @@
 #ifndef __PSCI_H__
 #define __PSCI_H__
 
+
 /*******************************************************************************
  * Defines for runtime services func ids
  ******************************************************************************/
@@ -131,6 +132,10 @@
 #define PSCI_NUM_AFFS		32ull
 
 #ifndef __ASSEMBLY__
+
+#include <stdint.h>
+
+
 /*******************************************************************************
  * Structure populated by platform specific code to export routines which
  * perform common low level pm functions
diff --git a/include/bl32/bl32.h b/include/bl32/bl32.h
index e469881..3239487 100644
--- a/include/bl32/bl32.h
+++ b/include/bl32/bl32.h
@@ -31,15 +31,18 @@
 #ifndef __BL32_H__
 #define __BL32_H__
 
-#ifndef __ASSEMBLY__
 #include <stdint.h>
 
-#include <bl_common.h>
+/******************************************
+ * Forward declarations
+ *****************************************/
+struct meminfo;
 
+/******************************************
+ * Function prototypes
+ *****************************************/
 extern void bl32_platform_setup(void);
-extern meminfo_t *bl32_plat_sec_mem_layout(void);
+extern struct meminfo *bl32_plat_sec_mem_layout(void);
 extern uint64_t bl32_main(void);
 
-#endif /* __ASSEMBLY__ */
-
 #endif /* __BL32_H__ */
diff --git a/include/bl32/payloads/tsp.h b/include/bl32/payloads/tsp.h
index 4ac7a1a..1f542d5 100644
--- a/include/bl32/payloads/tsp.h
+++ b/include/bl32/payloads/tsp.h
@@ -31,9 +31,6 @@
 #ifndef __TSP_H__
 #define __TSP_H__
 
-#include <platform.h>
-#include <cassert.h>
-
 /*
  * SMC function IDs that TSP uses to signal various forms of completions
  * to the secure payload dispatcher.
@@ -86,6 +83,9 @@
 #define TSP_ARGS_END		0x40
 
 #ifndef __ASSEMBLY__
+
+#include <cassert.h>
+#include <platform.h>	/* For CACHE_WRITEBACK_GRANULE */
 #include <stdint.h>
 
 typedef void (*tsp_generic_fptr_t)(uint64_t arg0,
diff --git a/include/common/asm_macros.S b/include/common/asm_macros.S
index 8bcb7d2..6cf1a19 100644
--- a/include/common/asm_macros.S
+++ b/include/common/asm_macros.S
@@ -28,6 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <arch.h>
+
+
 	.macro	func_prologue
 	stp	x29, x30, [sp, #-0x10]!
 	mov	x29,sp
diff --git a/include/common/bl_common.h b/include/common/bl_common.h
index 1eb6d79..9fba9c0 100644
--- a/include/common/bl_common.h
+++ b/include/common/bl_common.h
@@ -58,7 +58,8 @@
 
 
 #ifndef __ASSEMBLY__
-#include <stdio.h>
+
+#include <cdefs.h> /* For __dead2 */
 
 /*******************************************************************************
  * Structure used for telling the next BL how much of a particular type of
diff --git a/include/common/debug.h b/include/common/debug.h
index f829477..e4fa31e 100644
--- a/include/common/debug.h
+++ b/include/common/debug.h
@@ -31,9 +31,6 @@
 #ifndef __DEBUG_H__
 #define __DEBUG_H__
 
-/* Do not try to call this from ASM code. */
-#ifndef __ASSEMBLY__
-
 #include <stdio.h>
 
 /* If building the project with DEBUG disabled the INFO and WARN macros
@@ -66,5 +63,4 @@
 		;
 }
 
-#endif /* __ASSEMBLY__ */
 #endif /* __DEBUG_H__ */
diff --git a/include/drivers/arm/pl011.h b/include/drivers/arm/pl011.h
index 5ad2fc7..28aef54 100644
--- a/include/drivers/arm/pl011.h
+++ b/include/drivers/arm/pl011.h
@@ -31,6 +31,9 @@
 #ifndef __PL011_H__
 #define __PL011_H__
 
+#include <mmio.h>
+
+
 /* PL011 Registers */
 #define UARTDR                    0x000
 #define UARTRSR                   0x004
diff --git a/include/drivers/arm/tzc400.h b/include/drivers/arm/tzc400.h
index 7ac82ae..b4aa3ba 100644
--- a/include/drivers/arm/tzc400.h
+++ b/include/drivers/arm/tzc400.h
@@ -147,8 +147,6 @@
 /* Filters are bit mapped 0 to 3. */
 #define TZC400_COMPONENT_ID	0xb105f00d
 
-#ifndef __ASSEMBLY__
-
 /*******************************************************************************
  * Function & variable prototypes
  ******************************************************************************/
@@ -205,6 +203,5 @@
 void tzc_disable_filters(const tzc_instance_t *controller);
 void tzc_set_action(const tzc_instance_t *controller, tzc_action_t action);
 
-#endif /*__ASSEMBLY__*/
 
 #endif /* __TZC400__ */
diff --git a/include/drivers/io_driver.h b/include/drivers/io_driver.h
index cade5e7..cc01d3b 100644
--- a/include/drivers/io_driver.h
+++ b/include/drivers/io_driver.h
@@ -31,7 +31,9 @@
 #ifndef __IO_DRIVER_H__
 #define __IO_DRIVER_H__
 
+#include <io_storage.h>
 #include <platform.h>   /* For MAX_IO_DEVICES */
+#include <stdint.h>
 
 
 /* Generic IO entity structure,representing an accessible IO construct on the
diff --git a/include/drivers/io_fip.h b/include/drivers/io_fip.h
index 56dd1e0..212570d 100644
--- a/include/drivers/io_fip.h
+++ b/include/drivers/io_fip.h
@@ -31,6 +31,8 @@
 #ifndef __IO_FIP_H__
 #define __IO_FIP_H__
 
+struct io_dev_connector;
+
 int register_io_dev_fip(struct io_dev_connector **dev_con);
 
 #endif /* __IO_FIP_H__ */
diff --git a/include/drivers/io_memmap.h b/include/drivers/io_memmap.h
index 5fa7bc9..0e59ecb 100644
--- a/include/drivers/io_memmap.h
+++ b/include/drivers/io_memmap.h
@@ -31,6 +31,8 @@
 #ifndef __IO_MEMMAP_H__
 #define __IO_MEMMAP_H__
 
+struct io_dev_connector;
+
 int register_io_dev_memmap(struct io_dev_connector **dev_con);
 
 #endif /* __IO_MEMMAP_H__ */
diff --git a/include/drivers/io_semihosting.h b/include/drivers/io_semihosting.h
index 7dc632d..eab290a 100644
--- a/include/drivers/io_semihosting.h
+++ b/include/drivers/io_semihosting.h
@@ -31,6 +31,8 @@
 #ifndef __IO_SH_H__
 #define __IO_SH_H__
 
+struct io_dev_connector;
+
 int register_io_dev_sh(struct io_dev_connector **dev_con);
 
 #endif /* __IO_SH_H__ */
diff --git a/include/lib/aarch64/arch.h b/include/lib/aarch64/arch.h
index 32167eb..d7e65b3 100644
--- a/include/lib/aarch64/arch.h
+++ b/include/lib/aarch64/arch.h
@@ -31,7 +31,6 @@
 #ifndef __ARCH_H__
 #define __ARCH_H__
 
-#include <bl_common.h>
 
 /*******************************************************************************
  * MIDR bit definitions
diff --git a/include/lib/aarch64/arch_helpers.h b/include/lib/aarch64/arch_helpers.h
index f55c003..565b1b4 100644
--- a/include/lib/aarch64/arch_helpers.h
+++ b/include/lib/aarch64/arch_helpers.h
@@ -31,10 +31,8 @@
 #ifndef __ARCH_HELPERS_H__
 #define __ARCH_HELPERS_H__
 
-#include <arch.h>
+#include <cdefs.h> /* For __dead2 */
 
-#ifndef __ASSEMBLY__
-#include <stdio.h>
 
 /*******************************************************************************
  * Aarch64 translation tables manipulation helper prototypes
@@ -268,6 +266,5 @@
 extern void write_cptr_el2(unsigned long);
 extern void write_cptr_el3(unsigned long);
 
-#endif /*__ASSEMBLY__*/
 
 #endif /* __ARCH_HELPERS_H__ */
diff --git a/include/lib/bakery_lock.h b/include/lib/bakery_lock.h
index 0def067..e6744a5 100644
--- a/include/lib/bakery_lock.h
+++ b/include/lib/bakery_lock.h
@@ -35,7 +35,6 @@
 
 #define BAKERY_LOCK_MAX_CPUS		PLATFORM_CORE_COUNT
 
-#ifndef __ASSEMBLY__
 typedef struct bakery_lock {
 	int owner;
 	volatile char entering[BAKERY_LOCK_MAX_CPUS];
@@ -48,6 +47,5 @@
 void bakery_lock_get(unsigned long mpidr, bakery_lock_t *bakery);
 void bakery_lock_release(unsigned long mpidr, bakery_lock_t *bakery);
 int bakery_lock_try(unsigned long mpidr, bakery_lock_t *bakery);
-#endif /*__ASSEMBLY__*/
 
 #endif /* __BAKERY_LOCK_H__ */
diff --git a/include/lib/io_storage.h b/include/lib/io_storage.h
index 59fd3f4..b6c5f9f 100644
--- a/include/lib/io_storage.h
+++ b/include/lib/io_storage.h
@@ -31,11 +31,8 @@
 #ifndef __IO_H__
 #define __IO_H__
 
-#ifndef __ASSEMBLY__
+#include <stdio.h> /* For ssize_t */
 
-#include <stdint.h>
-#include <stdio.h>	/* For ssize_t */
-
 
 /* Device type which can be used to enable policy decisions about which device
  * to access */
@@ -128,5 +125,4 @@
 int io_close(io_handle handle);
 
 
-#endif /* __ASSEMBLY__ */
 #endif /* __IO_H__ */
diff --git a/include/lib/mmio.h b/include/lib/mmio.h
index c79c3f5..d3c2cae 100644
--- a/include/lib/mmio.h
+++ b/include/lib/mmio.h
@@ -31,8 +31,6 @@
 #ifndef __MMIO_H__
 #define __MMIO_H__
 
-#ifndef __ASSEMBLY__
-
 #include <stdint.h>
 
 extern void mmio_write_8(uintptr_t addr, uint8_t value);
@@ -44,6 +42,4 @@
 extern void mmio_write_64(uintptr_t addr, uint64_t value);
 extern uint64_t mmio_read_64(uintptr_t addr);
 
-#endif /*__ASSEMBLY__*/
-
 #endif /* __MMIO_H__ */
diff --git a/include/lib/semihosting.h b/include/lib/semihosting.h
index e688618..9d0b39f 100644
--- a/include/lib/semihosting.h
+++ b/include/lib/semihosting.h
@@ -31,6 +31,9 @@
 #ifndef __SEMIHOSTING_H__
 #define __SEMIHOSTING_H__
 
+#include <stdio.h> /* For ssize_t */
+
+
 #define SEMIHOSTING_SYS_OPEN            0x01
 #define SEMIHOSTING_SYS_CLOSE           0x02
 #define SEMIHOSTING_SYS_WRITE0          0x04
diff --git a/lib/aarch64/cache_helpers.S b/lib/aarch64/cache_helpers.S
index 2696d90..2649ad0 100644
--- a/lib/aarch64/cache_helpers.S
+++ b/lib/aarch64/cache_helpers.S
@@ -28,7 +28,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch_helpers.h>
+#include <arch.h>
 #include <asm_macros.S>
 
 	.globl	dcisw
diff --git a/lib/aarch64/misc_helpers.S b/lib/aarch64/misc_helpers.S
index e3b4ab5..e7b2331 100644
--- a/lib/aarch64/misc_helpers.S
+++ b/lib/aarch64/misc_helpers.S
@@ -28,8 +28,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch_helpers.h>
-#include <runtime_svc.h>
+#include <arch.h>
 #include <asm_macros.S>
 
 	.globl	enable_irq
diff --git a/lib/aarch64/sysreg_helpers.S b/lib/aarch64/sysreg_helpers.S
index 8e816f0..61468f9 100644
--- a/lib/aarch64/sysreg_helpers.S
+++ b/lib/aarch64/sysreg_helpers.S
@@ -28,7 +28,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch_helpers.h>
+#include <arch.h>
 #include <asm_macros.S>
 
 	.globl	read_vbar_el1
diff --git a/lib/aarch64/tlb_helpers.S b/lib/aarch64/tlb_helpers.S
index 4244974..ec1558b 100644
--- a/lib/aarch64/tlb_helpers.S
+++ b/lib/aarch64/tlb_helpers.S
@@ -28,7 +28,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch_helpers.h>
 #include <asm_macros.S>
 
 	.globl	tlbialle1
diff --git a/lib/aarch64/xlat_helpers.c b/lib/aarch64/xlat_helpers.c
index 87d24ec..d401ffc 100644
--- a/lib/aarch64/xlat_helpers.c
+++ b/lib/aarch64/xlat_helpers.c
@@ -28,9 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <string.h>
-#include <assert.h>
 #include <arch.h>
+#include <assert.h>
 
 /*******************************************************************************
  * Helper to create a level 1/2 table descriptor which points to a level 2/3
diff --git a/lib/io_storage.c b/lib/io_storage.c
index c3b94bb..01ca1c6 100644
--- a/lib/io_storage.c
+++ b/lib/io_storage.c
@@ -28,11 +28,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#include <stddef.h>
 #include <assert.h>
-#include <io_storage.h>
 #include <io_driver.h>
+#include <io_storage.h>
+#include <stddef.h>
 
 
 #define MAX_DEVICES(plat_data)						\
diff --git a/lib/locks/bakery/bakery_lock.c b/lib/locks/bakery/bakery_lock.c
index 3cb9248..6d4ab87 100644
--- a/lib/locks/bakery/bakery_lock.c
+++ b/lib/locks/bakery/bakery_lock.c
@@ -28,11 +28,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <arch_helpers.h>
 #include <assert.h>
-#include <string.h>
-
 #include <bakery_lock.h>
-#include <arch_helpers.h>
+#include <string.h>
 
 /*
  * Functions in this file implement Bakery Algorithm for mutual exclusion.
diff --git a/lib/semihosting/semihosting.c b/lib/semihosting/semihosting.c
index 3232cd5..1bce377 100644
--- a/lib/semihosting/semihosting.c
+++ b/lib/semihosting/semihosting.c
@@ -29,10 +29,9 @@
  */
 
 #include <assert.h>
-#include <string.h>
 #include <errno.h>
-#include <stdio.h>
 #include <semihosting.h>
+#include <string.h>
 
 #ifndef SEMIHOSTING_SUPPORTED
 #define SEMIHOSTING_SUPPORTED  1
diff --git a/plat/common/aarch64/platform_helpers.S b/plat/common/aarch64/platform_helpers.S
index 29268ba..7e20121 100644
--- a/plat/common/aarch64/platform_helpers.S
+++ b/plat/common/aarch64/platform_helpers.S
@@ -29,8 +29,8 @@
  */
 
 #include <arch.h>
-#include <platform.h>
 #include <asm_macros.S>
+#include <platform.h>
 
 
 	.weak	platform_get_core_pos
diff --git a/plat/common/aarch64/platform_mp_stack.S b/plat/common/aarch64/platform_mp_stack.S
index 1438814..ebbf509 100644
--- a/plat/common/aarch64/platform_mp_stack.S
+++ b/plat/common/aarch64/platform_mp_stack.S
@@ -29,8 +29,8 @@
  */
 
 #include <arch.h>
-#include <platform.h>
 #include <asm_macros.S>
+#include <platform.h>
 
 
 	.local	pcpu_dv_mem_stack
diff --git a/plat/common/aarch64/platform_up_stack.S b/plat/common/aarch64/platform_up_stack.S
index b321a4e..880793d 100644
--- a/plat/common/aarch64/platform_up_stack.S
+++ b/plat/common/aarch64/platform_up_stack.S
@@ -29,8 +29,8 @@
  */
 
 #include <arch.h>
-#include <platform.h>
 #include <asm_macros.S>
+#include <platform.h>
 
 
 	.local	pcpu_dv_mem_stack
diff --git a/plat/fvp/aarch64/bl1_plat_helpers.S b/plat/fvp/aarch64/bl1_plat_helpers.S
index 64f230d..92075ea 100644
--- a/plat/fvp/aarch64/bl1_plat_helpers.S
+++ b/plat/fvp/aarch64/bl1_plat_helpers.S
@@ -29,9 +29,9 @@
  */
 
 #include <arch.h>
-#include <platform.h>
-#include <gic_v2.h>
 #include <asm_macros.S>
+#include <gic_v2.h>
+#include <platform.h>
 #include "../drivers/pwrc/fvp_pwrc.h"
 
 	.globl	platform_get_entrypoint
diff --git a/plat/fvp/aarch64/plat_common.c b/plat/fvp/aarch64/plat_common.c
index 40e6b32..c8e529d 100644
--- a/plat/fvp/aarch64/plat_common.c
+++ b/plat/fvp/aarch64/plat_common.c
@@ -28,9 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
+#include <assert.h>
+#include <bl_common.h>
 #include <debug.h>
+#include <mmio.h>
 #include <platform.h>
 #include <xlat_tables.h>
 
diff --git a/plat/fvp/aarch64/plat_helpers.S b/plat/fvp/aarch64/plat_helpers.S
index ab826f4..0057903 100644
--- a/plat/fvp/aarch64/plat_helpers.S
+++ b/plat/fvp/aarch64/plat_helpers.S
@@ -29,8 +29,9 @@
  */
 
 #include <arch.h>
-#include <platform.h>
 #include <asm_macros.S>
+#include <bl_common.h>
+#include <platform.h>
 
 	.globl	plat_report_exception
 
diff --git a/plat/fvp/bl1_plat_setup.c b/plat/fvp/bl1_plat_setup.c
index 818c4e3..e92303d 100644
--- a/plat/fvp/bl1_plat_setup.c
+++ b/plat/fvp/bl1_plat_setup.c
@@ -28,12 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <assert.h>
 #include <arch_helpers.h>
-#include <platform.h>
+#include <assert.h>
+#include <bl_common.h>
 #include <bl1.h>
 #include <console.h>
 #include <cci400.h>
+#include <mmio.h>
+#include <platform.h>
 
 /*******************************************************************************
  * Declarations of linker defined symbols which will help us find the layout
diff --git a/plat/fvp/bl2_plat_setup.c b/plat/fvp/bl2_plat_setup.c
index 8517497..a4960aa 100644
--- a/plat/fvp/bl2_plat_setup.c
+++ b/plat/fvp/bl2_plat_setup.c
@@ -28,12 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <assert.h>
 #include <arch_helpers.h>
-#include <platform.h>
-#include <bl2.h>
+#include <assert.h>
 #include <bl_common.h>
+#include <bl2.h>
 #include <console.h>
+#include <platform.h>
 
 /*******************************************************************************
  * Declarations of linker defined symbols which will help us find the layout
diff --git a/plat/fvp/bl31_plat_setup.c b/plat/fvp/bl31_plat_setup.c
index 5abe236..aa7b2d8 100644
--- a/plat/fvp/bl31_plat_setup.c
+++ b/plat/fvp/bl31_plat_setup.c
@@ -28,9 +28,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <platform.h>
 #include <arch.h>
+#include <bl_common.h>
+#include <bl31.h>
 #include <console.h>
+#include <mmio.h>
+#include <platform.h>
+#include <stddef.h>
 #include "drivers/pwrc/fvp_pwrc.h"
 
 /*******************************************************************************
diff --git a/plat/fvp/bl32_plat_setup.c b/plat/fvp/bl32_plat_setup.c
index 3226ea2..b71800e 100644
--- a/plat/fvp/bl32_plat_setup.c
+++ b/plat/fvp/bl32_plat_setup.c
@@ -28,13 +28,11 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <platform.h>
-#include <bl32.h>
 #include <bl_common.h>
+#include <bl32.h>
 #include <console.h>
+#include <platform.h>
 
 /*******************************************************************************
  * Declarations of linker defined symbols which will help us find the layout
diff --git a/plat/fvp/drivers/pwrc/fvp_pwrc.c b/plat/fvp/drivers/pwrc/fvp_pwrc.c
index 175d41c..7a7f516 100644
--- a/plat/fvp/drivers/pwrc/fvp_pwrc.c
+++ b/plat/fvp/drivers/pwrc/fvp_pwrc.c
@@ -28,13 +28,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <arch_helpers.h>
-#include <platform.h>
 #include <bakery_lock.h>
+#include <mmio.h>
 #include "fvp_pwrc.h"
 
 /*
diff --git a/plat/fvp/plat_gic.c b/plat/fvp/plat_gic.c
index be892ac..8457af1 100644
--- a/plat/fvp/plat_gic.c
+++ b/plat/fvp/plat_gic.c
@@ -28,12 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdint.h>
 #include <arch_helpers.h>
-#include <platform.h>
+#include <debug.h>
 #include <gic_v2.h>
 #include <gic_v3.h>
-#include <debug.h>
+#include <platform.h>
+#include <stdint.h>
 
 
 /*******************************************************************************
diff --git a/plat/fvp/plat_io_storage.c b/plat/fvp/plat_io_storage.c
index 371f567..3727d26 100644
--- a/plat/fvp/plat_io_storage.c
+++ b/plat/fvp/plat_io_storage.c
@@ -29,15 +29,15 @@
  */
 
 #include <assert.h>
-#include <string.h>
-#include <platform.h>
-#include <io_storage.h>
+#include <debug.h>
 #include <io_driver.h>
-#include <io_semihosting.h>
-#include <semihosting.h>	/* For FOPEN_MODE_... */
 #include <io_fip.h>
 #include <io_memmap.h>
-#include <debug.h>
+#include <io_storage.h>
+#include <io_semihosting.h>
+#include <platform.h>
+#include <semihosting.h>	/* For FOPEN_MODE_... */
+#include <string.h>
 
 /* IO devices */
 static io_plat_data_t io_data;
diff --git a/plat/fvp/plat_pm.c b/plat/fvp/plat_pm.c
index da940c1..c80d315 100644
--- a/plat/fvp/plat_pm.c
+++ b/plat/fvp/plat_pm.c
@@ -28,18 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <bl_common.h>
-#include <bl31.h>
+#include <assert.h>
 #include <bakery_lock.h>
 #include <cci400.h>
-#include <gic_v2.h>
-/* Only included for error codes */
+#include <mmio.h>
+#include <platform.h>
 #include <psci.h>
 #include "drivers/pwrc/fvp_pwrc.h"
 
diff --git a/plat/fvp/plat_topology.c b/plat/fvp/plat_topology.c
index 99f3259..04b409e 100644
--- a/plat/fvp/plat_topology.c
+++ b/plat/fvp/plat_topology.c
@@ -28,7 +28,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <string.h>
 #include <assert.h>
 #include <platform.h>
 /* TODO: Reusing psci error codes & state information. Get our own! */
diff --git a/plat/fvp/platform.h b/plat/fvp/platform.h
index 098f499..1ffdc98 100644
--- a/plat/fvp/platform.h
+++ b/plat/fvp/platform.h
@@ -32,10 +32,6 @@
 #define __PLATFORM_H__
 
 #include <arch.h>
-#include <mmio.h>
-#include <psci.h>
-#include <bl_common.h>
-#include <io_storage.h>
 
 
 /*******************************************************************************
@@ -340,12 +336,22 @@
 
 #ifndef __ASSEMBLY__
 
+#include <stdint.h>
+
+
 typedef volatile struct mailbox {
 	unsigned long value
 	__attribute__((__aligned__(CACHE_WRITEBACK_GRANULE)));
 } mailbox_t;
 
 /*******************************************************************************
+ * Forward declarations
+ ******************************************************************************/
+struct plat_pm_ops;
+struct meminfo;
+struct io_dev_info;
+
+/*******************************************************************************
  * Function and variable prototypes
  ******************************************************************************/
 extern unsigned long *bl1_normal_ram_base;
@@ -364,11 +370,11 @@
 extern void bl1_plat_arch_setup(void);
 extern void bl2_plat_arch_setup(void);
 extern void bl31_plat_arch_setup(void);
-extern int platform_setup_pm(plat_pm_ops_t **);
+extern int platform_setup_pm(struct plat_pm_ops **);
 extern unsigned int platform_get_core_pos(unsigned long mpidr);
 extern void disable_mmu(void);
 extern void enable_mmu(void);
-extern void configure_mmu(meminfo_t *,
+extern void configure_mmu(struct meminfo *,
 			  unsigned long,
 			  unsigned long,
 			  unsigned long,
@@ -395,7 +401,7 @@
 /* Declarations for plat_io_storage.c */
 extern void io_setup(void);
 extern int plat_get_image_source(const char *image_name,
-		io_dev_handle *dev_handle, void **image_spec);
+		struct io_dev_info **dev_handle, void **image_spec);
 
 /* Declarations for plat_security.c */
 extern void plat_security_setup(void);
diff --git a/services/spd/tspd/tspd_common.c b/services/spd/tspd/tspd_common.c
index 181f2c8..13023d2 100644
--- a/services/spd/tspd/tspd_common.c
+++ b/services/spd/tspd/tspd_common.c
@@ -28,15 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <platform.h>
+#include <assert.h>
 #include <bl_common.h>
-#include <runtime_svc.h>
 #include <context_mgmt.h>
+#include <platform.h>
+#include <string.h>
 #include "tspd_private.h"
 
 /*******************************************************************************
diff --git a/services/spd/tspd/tspd_helpers.S b/services/spd/tspd/tspd_helpers.S
index f9a32aa..dd3b07b 100644
--- a/services/spd/tspd/tspd_helpers.S
+++ b/services/spd/tspd/tspd_helpers.S
@@ -28,9 +28,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <context.h>
 #include <asm_macros.S>
-#include <cm_macros.S>
 #include "tspd_private.h"
 
 	.global	tspd_enter_sp
diff --git a/services/spd/tspd/tspd_main.c b/services/spd/tspd/tspd_main.c
index c8fc9f1..9fda307 100644
--- a/services/spd/tspd/tspd_main.c
+++ b/services/spd/tspd/tspd_main.c
@@ -38,18 +38,14 @@
  * handle the request locally or delegate it to the Secure Payload. It is also
  * responsible for initialising and maintaining communication with the SP.
  ******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
+#include <assert.h>
+#include <bl_common.h>
+#include <bl31.h>
 #include <context_mgmt.h>
 #include <runtime_svc.h>
-#include <bl31.h>
+#include <stddef.h>
 #include <tsp.h>
-#include <psci.h>
-#include <debug.h>
 #include <uuid.h>
 #include "tspd_private.h"
 
diff --git a/services/spd/tspd/tspd_pm.c b/services/spd/tspd/tspd_pm.c
index cc01a72..2447d9e 100644
--- a/services/spd/tspd/tspd_pm.c
+++ b/services/spd/tspd/tspd_pm.c
@@ -28,18 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
+#include <assert.h>
+#include <bl_common.h>
 #include <context_mgmt.h>
-#include <runtime_svc.h>
-#include <bl31.h>
-#include <bl32.h>
-#include <psci.h>
 #include <debug.h>
+#include <tsp.h>
 #include "tspd_private.h"
 
 /*******************************************************************************
diff --git a/services/spd/tspd/tspd_private.h b/services/spd/tspd/tspd_private.h
index 8b76876..81484e1 100644
--- a/services/spd/tspd/tspd_private.h
+++ b/services/spd/tspd/tspd_private.h
@@ -28,14 +28,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __SPD_PRIVATE_H__
-#define __SPD_PRIVATE_H__
+#ifndef __TSPD_PRIVATE_H__
+#define __TSPD_PRIVATE_H__
 
-#include <context.h>
 #include <arch.h>
+#include <context.h>
+#include <platform.h>
 #include <psci.h>
-#include <tsp.h>
-#include <cassert.h>
 
 /*******************************************************************************
  * Secure Payload PM state information e.g. SP is suspended, uninitialised etc
@@ -91,6 +90,9 @@
 
 #ifndef __ASSEMBLY__
 
+#include <cassert.h>
+#include <stdint.h>
+
 /* AArch64 callee saved general purpose register context structure. */
 DEFINE_REG_STRUCT(c_rt_regs, TSPD_C_RT_CTX_ENTRIES);
 
@@ -121,6 +123,11 @@
 extern const spd_pm_ops_t tspd_pm;
 
 /*******************************************************************************
+ * Forward declarations
+ ******************************************************************************/
+struct entry_info;
+
+/*******************************************************************************
  * Function & Data prototypes
  ******************************************************************************/
 extern uint64_t tspd_enter_sp(uint64_t *c_rt_ctx);
@@ -132,7 +139,7 @@
 					uint64_t mpidr,
 					tsp_context_t *tsp_ctx);
 extern tsp_context_t tspd_sp_context[TSPD_CORE_COUNT];
-extern entry_info_t *tsp_entry_info;
+extern struct entry_info *tsp_entry_info;
 #endif /*__ASSEMBLY__*/
 
-#endif /* __SPD_PRIVATE_H__ */
+#endif /* __TSPD_PRIVATE_H__ */
diff --git a/services/std_svc/psci/psci_afflvl_off.c b/services/std_svc/psci/psci_afflvl_off.c
index b395912..e007bc3 100644
--- a/services/std_svc/psci/psci_afflvl_off.c
+++ b/services/std_svc/psci/psci_afflvl_off.c
@@ -28,14 +28,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <debug.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <psci.h>
+#include <assert.h>
+#include <string.h>
 #include "psci_private.h"
 
 typedef int (*afflvl_off_handler_t)(unsigned long, aff_map_node_t *);
diff --git a/services/std_svc/psci/psci_afflvl_on.c b/services/std_svc/psci/psci_afflvl_on.c
index a1c12a8..8f9bb4d 100644
--- a/services/std_svc/psci/psci_afflvl_on.c
+++ b/services/std_svc/psci/psci_afflvl_on.c
@@ -28,18 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
+#include <arch.h>
+#include <arch_helpers.h>
 #include <assert.h>
+#include <bl_common.h>
 #include <bl31.h>
-#include <debug.h>
-#include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <psci.h>
 #include <context_mgmt.h>
 #include <runtime_svc.h>
+#include <stddef.h>
 #include "psci_private.h"
 
 typedef int (*afflvl_on_handler_t)(unsigned long,
diff --git a/services/std_svc/psci/psci_afflvl_suspend.c b/services/std_svc/psci/psci_afflvl_suspend.c
index a8d0989..dc12f7a 100644
--- a/services/std_svc/psci/psci_afflvl_suspend.c
+++ b/services/std_svc/psci/psci_afflvl_suspend.c
@@ -28,16 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
 #include <assert.h>
-#include <debug.h>
+#include <bl_common.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <psci.h>
+#include <context.h>
 #include <context_mgmt.h>
 #include <runtime_svc.h>
+#include <stddef.h>
 #include "psci_private.h"
 
 typedef int (*afflvl_suspend_handler_t)(unsigned long,
diff --git a/services/std_svc/psci/psci_common.c b/services/std_svc/psci/psci_common.c
index 1ce28dc..1d5c362 100644
--- a/services/std_svc/psci/psci_common.c
+++ b/services/std_svc/psci/psci_common.c
@@ -28,15 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
-#include <psci.h>
+#include <assert.h>
+#include <bl_common.h>
+#include <context.h>
 #include <context_mgmt.h>
-#include <runtime_svc.h>
 #include <debug.h>
 #include "psci_private.h"
 
diff --git a/services/std_svc/psci/psci_entry.S b/services/std_svc/psci/psci_entry.S
index 51d9b57..e2c690d 100644
--- a/services/std_svc/psci/psci_entry.S
+++ b/services/std_svc/psci/psci_entry.S
@@ -29,11 +29,9 @@
  */
 
 #include <arch.h>
-#include <platform.h>
-#include <runtime_svc.h>
 #include <asm_macros.S>
 #include <cm_macros.S>
-#include "psci_private.h"
+#include <psci.h>
 
 	.globl	psci_aff_on_finish_entry
 	.globl	psci_aff_suspend_finish_entry
diff --git a/services/std_svc/psci/psci_main.c b/services/std_svc/psci/psci_main.c
index fd20ad5..1bcf216 100644
--- a/services/std_svc/psci/psci_main.c
+++ b/services/std_svc/psci/psci_main.c
@@ -28,15 +28,11 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
+#include <assert.h>
 #include <runtime_svc.h>
 #include <debug.h>
-#include <context_mgmt.h>
 #include "psci_private.h"
 
 /*******************************************************************************
diff --git a/services/std_svc/psci/psci_private.h b/services/std_svc/psci/psci_private.h
index e34ccfc..b0b5cc9 100644
--- a/services/std_svc/psci/psci_private.h
+++ b/services/std_svc/psci/psci_private.h
@@ -33,8 +33,8 @@
 
 #include <arch.h>
 #include <bakery_lock.h>
+#include <psci.h>
 
-#ifndef __ASSEMBLY__
 /*******************************************************************************
  * The following two data structures hold the generic information to bringup
  * a suspended/hotplugged out cpu
@@ -156,6 +156,5 @@
 			       int);
 extern unsigned int psci_afflvl_suspend_finish(unsigned long, int, int);
 
-#endif /*__ASSEMBLY__*/
 
 #endif /* __PSCI_PRIVATE_H__ */
diff --git a/services/std_svc/psci/psci_setup.c b/services/std_svc/psci/psci_setup.c
index 960c4b8..71d3f1e 100644
--- a/services/std_svc/psci/psci_setup.c
+++ b/services/std_svc/psci/psci_setup.c
@@ -28,14 +28,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
+#include <arch.h>
 #include <arch_helpers.h>
-#include <console.h>
-#include <platform.h>
+#include <assert.h>
+#include <bl_common.h>
+#include <context.h>
 #include <context_mgmt.h>
-#include <runtime_svc.h>
+#include <platform.h>
+#include <stddef.h>
 #include "psci_private.h"
 
 /*******************************************************************************
diff --git a/services/std_svc/std_svc_setup.c b/services/std_svc/std_svc_setup.c
index 40d7096..6cb0319 100644
--- a/services/std_svc/std_svc_setup.c
+++ b/services/std_svc/std_svc_setup.c
@@ -28,13 +28,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdint.h>
-#include <uuid.h>
-#include <context_mgmt.h>
+#include <debug.h>
+#include <psci.h>
 #include <runtime_svc.h>
 #include <std_svc.h>
-#include <psci.h>
-#include <debug.h>
+#include <stdint.h>
+#include <uuid.h>
 
 /* Standard Service UUID */
 DEFINE_SVC_UUID(arm_svc_uid,