From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Wed, 18 Nov 2020 15:24:07 +0100 Subject: [PATCH 3/8] spl: atf: provide a bl2_plat_get_bl31_params_default() In-Reply-To: <89b88c5f-0f22-05b2-d940-df7bb9b3be5a@xilinx.com> References: <20201116214731.29128-1-michael@walle.cc> <20201116214731.29128-4-michael@walle.cc> <89b88c5f-0f22-05b2-d940-df7bb9b3be5a@xilinx.com> Message-ID: <907ab2a7-5db3-e945-e9d6-d879a3462bfd@xilinx.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 18. 11. 20 15:23, Michal Simek wrote: > > > On 16. 11. 20 22:47, Michael Walle wrote: >> 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 >> --- >> common/spl/spl_atf.c | 14 +++++++++++--- >> include/spl.h | 35 +++++++++++++++++++++++++++-------- >> 2 files changed, 38 insertions(+), 11 deletions(-) >> >> diff --git a/common/spl/spl_atf.c b/common/spl/spl_atf.c >> index df0a198d55..63af6a6207 100644 >> --- a/common/spl/spl_atf.c >> +++ b/common/spl/spl_atf.c >> @@ -18,9 +18,9 @@ >> #include >> #include >> >> -__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"); >> diff --git a/include/spl.h b/include/spl.h >> index b72dfc7e3d..dccf515511 100644 >> --- a/include/spl.h >> +++ b/include/spl.h >> @@ -526,18 +526,17 @@ 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. >> + * 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(). >> + * >> + * 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 >> */ >> @@ -545,6 +544,26 @@ 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 >> * >> > > Last two functions. This is not kernel-doc format. Please fix it. > include/spl.h:529: info: Scanning doc for bl2_plat_get_bl31_params > include/spl.h:545: warning: Function parameter or member 'bl32_entry' > not described in 'bl2_plat_get_bl31_params' > include/spl.h:545: warning: Function parameter or member 'bl33_entry' > not described in 'bl2_plat_get_bl31_params' > include/spl.h:545: warning: Function parameter or member 'fdt_addr' not > described in 'bl2_plat_get_bl31_params' > include/spl.h:545: warning: No description found for return value of > 'bl2_plat_get_bl31_params' > include/spl.h:548: info: Scanning doc for bl2_plat_get_bl31_params_default > include/spl.h:559: warning: contents before sections > include/spl.h:566: warning: Function parameter or member 'bl32_entry' > not described in 'bl2_plat_get_bl31_params_default' > include/spl.h:566: warning: Function parameter or member 'bl33_entry' > not described in 'bl2_plat_get_bl31_params_default' > include/spl.h:566: warning: Function parameter or member 'fdt_addr' not > described in 'bl2_plat_get_bl31_params_default' > include/spl.h:566: warning: No description found for return value of > 'bl2_plat_get_bl31_params_default' > > > ./scripts/kernel-doc -v -man common/spl/spl_atf.c > /dev/null This one sorry. ./scripts/kernel-doc -v -man include/spl.h > /dev/null M