Move BL porting functions into platform.h
authorDan Handley <dan.handley@arm.com>
Thu, 15 May 2014 13:11:36 +0000 (14:11 +0100)
committerAchin Gupta <achin.gupta@arm.com>
Fri, 23 May 2014 16:18:54 +0000 (17:18 +0100)
Some platform porting functions were in BL specific header files.
These have been moved to platform.h so that all porting functions
are in the same place. The functions are now grouped by BL.
Obsolete BL headers files have been removed.

Also, the weak declaration of the init_bl2_mem_layout() function
has been moved out the header file and into the source file
(bl_common.c) using the more succinct #pragma syntax. This
mitigates the risk of 2 weak definitions being created and the
wrong one being picked up by the compiler.

Change-Id: Ib19934939fd755f3e5a5a5bceec88da684308a83

15 files changed:
bl1/bl1_main.c
bl2/bl2_main.c
bl31/bl31_main.c
bl32/tsp/tsp_main.c
common/bl_common.c
include/bl1/bl1.h [deleted file]
include/bl2/bl2.h [deleted file]
include/bl31/bl31.h
include/bl32/bl32.h [deleted file]
include/common/bl_common.h
include/plat/common/platform.h
plat/fvp/bl1_plat_setup.c
plat/fvp/bl2_plat_setup.c
plat/fvp/bl32_plat_setup.c
plat/fvp/fvp_private.h

index 6028f4f12e0b35ed7cd5743a394e8d1608f23b41..6771142e447ca8b1c3644f1dd6ec6f9d5f4294db 100644 (file)
@@ -32,7 +32,6 @@
 #include <arch_helpers.h>
 #include <assert.h>
 #include <bl_common.h>
-#include <bl1.h>
 #include <debug.h>
 #include <platform.h>
 #include <platform_def.h>
index 55ae3c0e0566bb6c4bbd14adf7e56b68ff70eb9c..46c70a123261f06a9626e85d43843346192ef1fe 100644 (file)
@@ -32,7 +32,6 @@
 #include <arch_helpers.h>
 #include <assert.h>
 #include <bl_common.h>
-#include <bl2.h>
 #include <debug.h>
 #include <platform.h>
 #include <platform_def.h>
index ff7caf1dddf0b928ea3f94d1b8299267badb080a..71c64643ef65a1ffe3f4d9879fb4974aff9fe0c1 100644 (file)
@@ -34,6 +34,7 @@
 #include <bl_common.h>
 #include <bl31.h>
 #include <context_mgmt.h>
+#include <platform.h>
 #include <runtime_svc.h>
 #include <stdio.h>
 
index 05737aef6f85dbc9ca3056104aed6d6d10ee47b3..eaabe613c4308c251db7917ab35672ca27c49a0e 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <arch_helpers.h>
 #include <bl_common.h>
-#include <bl32.h>
 #include <debug.h>
 #include <platform.h>
 #include <platform_def.h>
index 911ad4c1299f812da68efc9d00e885f688e435fb..3bc314c6ea1ce68ba4aedc61af09bd65522affc9 100644 (file)
@@ -74,9 +74,10 @@ void change_security_state(unsigned int target_security_state)
 
 
 /*******************************************************************************
- * The next function is a weak definition. Platform specific
- * code can override it if it wishes to.
+ * The next function has a weak definition. Platform specific code can override
+ * it if it wishes to.
  ******************************************************************************/
+#pragma weak init_bl2_mem_layout
 
 /*******************************************************************************
  * Function that takes a memory layout into which BL2 has been either top or
diff --git a/include/bl1/bl1.h b/include/bl1/bl1.h
deleted file mode 100644 (file)
index b1bbf24..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __BL1_H__
-#define __BL1_H__
-
-
-/******************************************
- * Forward declarations
- *****************************************/
-struct meminfo;
-
-/******************************************
- * Function prototypes
- *****************************************/
-void bl1_platform_setup(void);
-struct meminfo *bl1_plat_sec_mem_layout(void);
-
-#endif /* __BL1_H__ */
diff --git a/include/bl2/bl2.h b/include/bl2/bl2.h
deleted file mode 100644 (file)
index fffe5a6..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __BL2_H__
-#define __BL2_H__
-
-/******************************************
- * Forward declarations
- *****************************************/
-struct meminfo;
-struct bl31_params;
-struct entry_point_info;
-
-/******************************************
- * Function prototypes
- *****************************************/
-void bl2_platform_setup(void);
-struct meminfo *bl2_plat_sec_mem_layout(void);
-
-/*******************************************************************************
- * This function returns a pointer to the shared memory that the platform has
- * kept aside to pass trusted firmware related information that BL3-1
- * could need
- ******************************************************************************/
-struct bl31_params *bl2_plat_get_bl31_params(void);
-
-/*******************************************************************************
- * This function returns a pointer to the shared memory that the platform
- * has kept to point to entry point information of BL31 to BL2
- ******************************************************************************/
-struct entry_point_info *bl2_plat_get_bl31_ep_info(void);
-
-/************************************************************************
- * This function flushes to main memory all the params that are
- * passed to BL3-1
- **************************************************************************/
-void bl2_plat_flush_bl31_params(void);
-
-#endif /* __BL2_H__ */
index ef32568738f9e30ad004182d694a02b36b13cb5a..8d22dc98bbb4d807258f7c32efb2a8373782e658 100644 (file)
@@ -37,7 +37,6 @@
  * Forward declarations
  *****************************************/
 struct entry_point_info;
-struct bl31_parms;
 
 /*******************************************************************************
  * Function prototypes
@@ -48,9 +47,6 @@ void bl31_set_next_image_type(uint32_t type);
 uint32_t bl31_get_next_image_type(void);
 void bl31_prepare_next_image_entry();
 struct entry_point_info *bl31_get_next_image_info(uint32_t type);
-void bl31_early_platform_setup(struct bl31_params *from_bl2,
-                               void *plat_params_from_bl2);
-void bl31_platform_setup(void);
 void bl31_register_bl32_init(int32_t (*)(void));
 
 #endif /* __BL31_H__ */
diff --git a/include/bl32/bl32.h b/include/bl32/bl32.h
deleted file mode 100644 (file)
index ede7c48..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __BL32_H__
-#define __BL32_H__
-
-#include <stdint.h>
-
-/******************************************
- * Forward declarations
- *****************************************/
-struct meminfo;
-
-/******************************************
- * Function prototypes
- *****************************************/
-void bl32_platform_setup(void);
-struct meminfo *bl32_plat_sec_mem_layout(void);
-uint64_t bl32_main(void);
-
-#endif /* __BL32_H__ */
index 79f2329b7b0830f33fc11b1ed755255c08063f2c..2f3bade1ad19c2c937c846f16abba2ee3e045802 100644 (file)
@@ -196,13 +196,6 @@ CASSERT(sizeof(unsigned long) ==
  ******************************************************************************/
 unsigned long page_align(unsigned long, unsigned);
 void change_security_state(unsigned int);
-void init_bl2_mem_layout(meminfo_t *,
-                        meminfo_t *,
-                        unsigned int,
-                        unsigned long) __attribute__((weak));
-void init_bl31_mem_layout(const meminfo_t *,
-                         meminfo_t *,
-                         unsigned int) __attribute__((weak));
 unsigned long image_size(const char *);
 int load_image(meminfo_t *,
                const char *,
@@ -210,7 +203,6 @@ int load_image(meminfo_t *,
                unsigned long,
                image_info_t *,
                entry_point_info_t *);
-unsigned long *get_el_change_mem_ptr(void);
 extern const char build_message[];
 
 #endif /*__ASSEMBLY__*/
index b3f6806eff53b76218ae1499bdd31cd1744efe73..7e2e91201f44348b443c45f9dfa4a0845f10bffd 100644 (file)
@@ -41,33 +41,25 @@ struct plat_pm_ops;
 struct meminfo;
 struct image_info;
 struct entry_point_info;
+struct bl31_params;
 
 /*******************************************************************************
- * Function and variable prototypes
+ * Function declarations
  ******************************************************************************/
-void bl1_plat_arch_setup(void);
-void bl2_plat_arch_setup(void);
-void bl31_plat_arch_setup(void);
-int platform_setup_pm(const struct plat_pm_ops **);
-unsigned int platform_get_core_pos(unsigned long mpidr);
+/*******************************************************************************
+ * Mandatory common functions
+ ******************************************************************************/
+uint64_t plat_get_syscnt_freq(void);
 void enable_mmu_el1(void);
 void enable_mmu_el3(void);
-void configure_mmu_el1(unsigned long total_base,
-                      unsigned long total_size,
-                      unsigned long,
-                      unsigned long,
-                      unsigned long,
-                      unsigned long);
-void configure_mmu_el3(unsigned long total_base,
-                      unsigned long total_size,
-                      unsigned long,
-                      unsigned long,
-                      unsigned long,
-                      unsigned long);
-void plat_report_exception(unsigned long);
+int plat_get_image_source(const char *image_name,
+                       uintptr_t *dev_handle,
+                       uintptr_t *image_spec);
 unsigned long plat_get_ns_image_entrypoint(void);
-unsigned long platform_get_stack(unsigned long mpidr);
-uint64_t plat_get_syscnt_freq(void);
+
+/*******************************************************************************
+ * Mandatory interrupt management functions
+ ******************************************************************************/
 uint32_t ic_get_pending_interrupt_id(void);
 uint32_t ic_get_pending_interrupt_type(void);
 uint32_t ic_acknowledge_interrupt(void);
@@ -76,12 +68,19 @@ void ic_end_of_interrupt(uint32_t id);
 uint32_t plat_interrupt_type_to_line(uint32_t type,
                                     uint32_t security_state);
 
-int plat_get_max_afflvl(void);
-unsigned int plat_get_aff_count(unsigned int, unsigned long);
-unsigned int plat_get_aff_state(unsigned int, unsigned long);
-int plat_get_image_source(const char *image_name,
-                       uintptr_t *dev_handle,
-                       uintptr_t *image_spec);
+/*******************************************************************************
+ * Optional common functions (may be overridden)
+ ******************************************************************************/
+unsigned int platform_get_core_pos(unsigned long mpidr);
+unsigned long platform_get_stack(unsigned long mpidr);
+void plat_report_exception(unsigned long);
+
+/*******************************************************************************
+ * Mandatory BL1 functions
+ ******************************************************************************/
+void bl1_plat_arch_setup(void);
+void bl1_platform_setup(void);
+struct meminfo *bl1_plat_sec_mem_layout(void);
 
 /*
  * Before calling this function BL2 is loaded in memory and its entrypoint
@@ -92,6 +91,40 @@ int plat_get_image_source(const char *image_name,
 void bl1_plat_set_bl2_ep_info(struct image_info *image,
                              struct entry_point_info *ep);
 
+/*******************************************************************************
+ * Optional BL1 functions (may be overridden)
+ ******************************************************************************/
+void init_bl2_mem_layout(struct meminfo *,
+                       struct meminfo *,
+                       unsigned int,
+                       unsigned long);
+
+/*******************************************************************************
+ * Mandatory BL2 functions
+ ******************************************************************************/
+void bl2_plat_arch_setup(void);
+void bl2_platform_setup(void);
+struct meminfo *bl2_plat_sec_mem_layout(void);
+
+/*
+ * This function returns a pointer to the shared memory that the platform has
+ * kept aside to pass trusted firmware related information that BL3-1
+ * could need
+ */
+struct bl31_params *bl2_plat_get_bl31_params(void);
+
+/*
+ * This function returns a pointer to the shared memory that the platform
+ * has kept to point to entry point information of BL31 to BL2
+ */
+struct entry_point_info *bl2_plat_get_bl31_ep_info(void);
+
+/*
+ * This function flushes to main memory all the params that are
+ * passed to BL3-1
+ */
+void bl2_plat_flush_bl31_params(void);
+
 /*
  * Before calling this function BL31 is loaded in memory and its entrypoint
  * is set by load_image. This is a placeholder for the platform to change
@@ -125,5 +158,30 @@ void bl2_plat_get_bl32_meminfo(struct meminfo *mem_info);
 /* Gets the memory layout for BL33 */
 void bl2_plat_get_bl33_meminfo(struct meminfo *mem_info);
 
+/*******************************************************************************
+ * Optional BL2 functions (may be overridden)
+ ******************************************************************************/
+
+/*******************************************************************************
+ * Mandatory BL3-1 functions
+ ******************************************************************************/
+void bl31_early_platform_setup(struct bl31_params *from_bl2,
+                               void *plat_params_from_bl2);
+void bl31_plat_arch_setup(void);
+void bl31_platform_setup(void);
+struct entry_point_info *bl31_get_next_image_info(uint32_t type);
+
+/*******************************************************************************
+ * Mandatory PSCI functions (BL3-1)
+ ******************************************************************************/
+int platform_setup_pm(const struct plat_pm_ops **);
+int plat_get_max_afflvl(void);
+unsigned int plat_get_aff_count(unsigned int, unsigned long);
+unsigned int plat_get_aff_state(unsigned int, unsigned long);
+
+/*******************************************************************************
+ * Mandatory BL3-2 functions (only if platform contains a BL3-2)
+ ******************************************************************************/
+void bl32_platform_setup(void);
 
 #endif /* __PLATFORM_H__ */
index 5fbebc163cfc2c462812104b0e419090907cff04..34e74e259a1808814e78192ad664278089bbe6f2 100644 (file)
@@ -31,7 +31,6 @@
 #include <arch_helpers.h>
 #include <assert.h>
 #include <bl_common.h>
-#include <bl1.h>
 #include <console.h>
 #include <mmio.h>
 #include <platform.h>
index 87efe28f969e6e20ac8e4a29b91556ec0ca2e90f..2cfb8bca9dec10a23319f9872862b4172c097879 100644 (file)
@@ -31,7 +31,6 @@
 #include <arch_helpers.h>
 #include <assert.h>
 #include <bl_common.h>
-#include <bl2.h>
 #include <console.h>
 #include <platform.h>
 #include <platform_def.h>
index 79303142788b3bf130bf3d30b752f75772928752..b583349fcc6153ec3c1cf163e76a43ca0be09dc6 100644 (file)
@@ -28,9 +28,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <arch_helpers.h>
 #include <bl_common.h>
-#include <bl32.h>
 #include <console.h>
 #include <platform.h>
 #include "fvp_def.h"
index cde1fd0abc568e202856aeaadf6e033c12ba50ab..04e8b818256a134096da8485a640ec7c329da38c 100644 (file)
@@ -55,9 +55,26 @@ typedef struct bl2_to_bl31_params_mem {
        entry_point_info_t bl31_ep_info;
 } bl2_to_bl31_params_mem_t;
 
+/*******************************************************************************
+ * Forward declarations
+ ******************************************************************************/
+struct meminfo;
+
 /*******************************************************************************
  * Function and variable prototypes
  ******************************************************************************/
+void configure_mmu_el1(unsigned long total_base,
+                      unsigned long total_size,
+                      unsigned long,
+                      unsigned long,
+                      unsigned long,
+                      unsigned long);
+void configure_mmu_el3(unsigned long total_base,
+                      unsigned long total_size,
+                      unsigned long,
+                      unsigned long,
+                      unsigned long,
+                      unsigned long);
 unsigned long platform_get_cfgvar(unsigned int);
 int platform_config_setup(void);