[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