[PATCH V3 5/8] common: board_f: Pass frame buffer info from SPL to u-boot

Devarsh Thakkar devarsht at ti.com
Wed Jun 14 11:51:03 CEST 2023



On 14/06/23 15:04, Nikhil M Jain wrote:
> U-boot proper can use frame buffer address passed from SPL to reserve
> the memory area used by framebuffer set in SPL so that splash image
> set in SPL continues to get displayed while u-boot proper is running.
> 
> Put the framebuffer address and size in a bloblist to make them
> available at u-boot proper, if in u-boot proper CONFIG_VIDEO is defined.
> 
> Signed-off-by: Nikhil M Jain <n-jain1 at ti.com>

Reviewed-by: Devarsh Thakkar <devarsht at ti.com>
> ---
> V3:
> - Clean up errors appeared in checkpatch.
> 
> V2:
> - Fix commit message.
> - Revert use of #if.
> 
>  common/board_f.c             | 11 ++++++++++-
>  drivers/video/video-uclass.c | 12 ++++++++++++
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/common/board_f.c b/common/board_f.c
> index 1688e27071..8e5dbaf06c 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -411,7 +411,16 @@ __weak int arch_reserve_mmu(void)
>  
>  static int reserve_video(void)
>  {
> -	if (IS_ENABLED(CONFIG_VIDEO)) {
> +	if (IS_ENABLED(CONFIG_SPL_VIDEO) && spl_phase() > PHASE_SPL &&
> +	    CONFIG_IS_ENABLED(BLOBLIST)) {
> +		struct video_handoff *ho;
> +
> +		ho = bloblist_find(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho));
> +		if (!ho)
> +			return log_msg_ret("blf", -ENOENT);
> +		video_reserve_from_bloblist(ho);
> +		gd->relocaddr = ho->fb;
> +	} else if (CONFIG_IS_ENABLED(VIDEO)) {
>  		ulong addr;
>  		int ret;
>  
> diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
> index 68ce681bb9..f8f0dc0311 100644
> --- a/drivers/video/video-uclass.c
> +++ b/drivers/video/video-uclass.c
> @@ -6,12 +6,14 @@
>  #define LOG_CATEGORY UCLASS_VIDEO
>  
>  #include <common.h>
> +#include <bloblist.h>
>  #include <console.h>
>  #include <cpu_func.h>
>  #include <dm.h>
>  #include <log.h>
>  #include <malloc.h>
>  #include <mapmem.h>
> +#include <spl.h>
>  #include <stdio_dev.h>
>  #include <video.h>
>  #include <video_console.h>
> @@ -139,6 +141,16 @@ int video_reserve(ulong *addrp)
>  	debug("Video frame buffers from %lx to %lx\n", gd->video_bottom,
>  	      gd->video_top);
>  
> +	if (spl_phase() == PHASE_SPL && CONFIG_IS_ENABLED(BLOBLIST)) {
> +		struct video_handoff *ho;
> +
> +		ho = bloblist_add(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho), 0);
> +		if (!ho)
> +			return log_msg_ret("blf", -ENOENT);
> +		ho->fb = *addrp;
> +		ho->size = size;
> +	}
> +
>  	return 0;
>  }
>  


More information about the U-Boot mailing list