mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-21 23:21:58 +00:00
common: board_f: Pass frame buffer info from SPL to u-boot
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@ti.com> Reviewed-by: Devarsh Thakkar <devarsht@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ccd21ee50e
commit
5bc610a7d9
2 changed files with 22 additions and 1 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue