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-ja...@ti.com>

Reviewed-by: Devarsh Thakkar <devar...@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;
>  }
>  

Reply via email to