]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
video: Add a Kconfig option for SPL video handoff
authorSimon Glass <sjg@chromium.org>
Sun, 30 Jul 2023 17:16:05 +0000 (11:16 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Wed, 9 Aug 2023 15:31:11 +0000 (23:31 +0800)
At present this feature is enabled in SPL if a bloblist is available.
Some platforms may not want to use this, so add an option to allow the
feature to be disabled.

Note that the feature unfortunately only fills in part of the
video-handoff information, so causes failures on x86 platforms. For now,
disable it there.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com> # qemu-x86_64
common/board_f.c
drivers/video/Kconfig
drivers/video/video-uclass.c

index 7d2c380e91e29f817fdc3dc576e1fa1f26da6b17..791c1e601c4d4edf4dc67fb0311334f5898b9439 100644 (file)
@@ -411,8 +411,7 @@ __weak int arch_reserve_mmu(void)
 
 static int reserve_video(void)
 {
-       if (IS_ENABLED(CONFIG_SPL_VIDEO) && spl_phase() > PHASE_SPL &&
-           CONFIG_IS_ENABLED(BLOBLIST)) {
+       if (IS_ENABLED(CONFIG_SPL_VIDEO_HANDOFF) && spl_phase() > PHASE_SPL) {
                struct video_handoff *ho;
 
                ho = bloblist_find(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho));
index e32ce13fb6b984af1999cc81dc6ceae02fe22e55..2a37d026bc2807d54425c663938d64d5372563fa 100644 (file)
@@ -1011,6 +1011,16 @@ config SPL_VIDEO
 if SPL_VIDEO
 source "drivers/video/tidss/Kconfig"
 
+config SPL_VIDEO_HANDOFF
+       bool "Pass the video frame-buffer through to U-Boot proper"
+       depends on SPL_BLOBLIST
+       default y if !X86
+       help
+         Enable this to set up video-handoff information in SPL which can be
+         picked up in U-Boot proper. This includes the frame buffer and
+         various other pieces of information. With this enabled, SPL can set
+         up video and avoid re-initing it later.
+
 config SPL_VIDEO_LOGO
        bool "Show the U-Boot logo on the display at SPL"
        default y if !SPL_SPLASH_SCREEN
index 8f268fc4063f89e4d2d3260cc81d235244cc1172..f743ed74c8182f3d47a4a254e18c1970036f98c3 100644 (file)
@@ -141,7 +141,7 @@ 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)) {
+       if (spl_phase() == PHASE_SPL && CONFIG_IS_ENABLED(VIDEO_HANDOFF)) {
                struct video_handoff *ho;
 
                ho = bloblist_add(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho), 0);