]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spl: atf: provide a bl2_plat_get_bl31_params_default()
authorMichael Walle <michael@walle.cc>
Wed, 18 Nov 2020 16:45:56 +0000 (17:45 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 4 Dec 2020 21:09:05 +0000 (16:09 -0500)
Move the actual implementation of the bl2_plat_get_bl31_params() to its
own function. The weak function will just call the default
implementation. This has the advantage that board code can still call
the original implementation if it just want to modify minor things.

Signed-off-by: Michael Walle <michael@walle.cc>
common/spl/spl_atf.c
include/spl.h

index df0a198d550322fe2fb44d0a767e4a9150c24ed2..63af6a62072a1c97825f13612bb4c60bba9ccbcd 100644 (file)
@@ -18,9 +18,9 @@
 #include <spl.h>
 #include <asm/cache.h>
 
-__weak struct bl31_params *bl2_plat_get_bl31_params(uintptr_t bl32_entry,
-                                                   uintptr_t bl33_entry,
-                                                   uintptr_t fdt_addr)
+struct bl31_params *bl2_plat_get_bl31_params_default(uintptr_t bl32_entry,
+                                                    uintptr_t bl33_entry,
+                                                    uintptr_t fdt_addr)
 {
        static struct bl2_to_bl31_params_mem bl31_params_mem;
        struct bl31_params *bl2_to_bl31_params;
@@ -77,6 +77,14 @@ __weak struct bl31_params *bl2_plat_get_bl31_params(uintptr_t bl32_entry,
        return bl2_to_bl31_params;
 }
 
+__weak struct bl31_params *bl2_plat_get_bl31_params(uintptr_t bl32_entry,
+                                                   uintptr_t bl33_entry,
+                                                   uintptr_t fdt_addr)
+{
+       return bl2_plat_get_bl31_params_default(bl32_entry, bl33_entry,
+                                               fdt_addr);
+}
+
 static inline void raw_write_daif(unsigned int daif)
 {
        __asm__ __volatile__("msr DAIF, %0\n\t" : : "r" (daif) : "memory");
index b72dfc7e3d4909d5c8a6a33d1868008cf2fe8b80..fd928377f0751eb6cde86ba67ea80d4c3980b117 100644 (file)
@@ -526,25 +526,44 @@ int spl_ymodem_load_image(struct spl_image_info *spl_image,
 void spl_invoke_atf(struct spl_image_info *spl_image);
 
 /**
- * bl2_plat_get_bl31_params() - prepare params for bl31.
- * @bl32_entry address of BL32 executable (secure)
- * @bl33_entry address of BL33 executable (non secure)
- * @fdt_addr   address of Flat Device Tree
+ * bl2_plat_get_bl31_params() - return params for bl31.
+ * @bl32_entry:        address of BL32 executable (secure)
+ * @bl33_entry:        address of BL33 executable (non secure)
+ * @fdt_addr:  address of Flat Device Tree
  *
- * This function assigns a pointer to the memory that the platform has kept
- * aside to pass platform specific and trusted firmware related information
- * to BL31. This memory is allocated by allocating memory to
- * bl2_to_bl31_params_mem structure which is a superset of all the
- * structure whose information is passed to BL31
- * NOTE: This function should be called only once and should be done
- * before generating params to BL31
+ * This is a weak function which might be overridden by the board code. By
+ * default it will just call bl2_plat_get_bl31_params_default().
  *
- * @return bl31 params structure pointer
+ * If you just want to manipulate or add some parameters, you can override
+ * this function, call bl2_plat_get_bl31_params_default and operate on the
+ * returned bl31 params.
+ *
+ * Return: bl31 params structure pointer
  */
 struct bl31_params *bl2_plat_get_bl31_params(uintptr_t bl32_entry,
                                             uintptr_t bl33_entry,
                                             uintptr_t fdt_addr);
 
+/**
+ * bl2_plat_get_bl31_params_default() - prepare params for bl31.
+ * @bl32_entry:        address of BL32 executable (secure)
+ * @bl33_entry:        address of BL33 executable (non secure)
+ * @fdt_addr:  address of Flat Device Tree
+ *
+ * This is the default implementation of bl2_plat_get_bl31_params(). It assigns
+ * a pointer to the memory that the platform has kept aside to pass platform
+ * specific and trusted firmware related information to BL31. This memory is
+ * allocated by allocating memory to bl2_to_bl31_params_mem structure which is
+ * a superset of all the structure whose information is passed to BL31
+ *
+ * NOTE: The memory is statically allocated, thus this function should be
+ * called only once. All subsequent calls will overwrite any changes.
+ *
+ * Return: bl31 params structure pointer
+ */
+struct bl31_params *bl2_plat_get_bl31_params_default(uintptr_t bl32_entry,
+                                                    uintptr_t bl33_entry,
+                                                    uintptr_t fdt_addr);
 /**
  * spl_optee_entry - entry function for optee
  *