]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
x86: video: Allow coreboot video to be used on any x86 board
authorSimon Glass <sjg@chromium.org>
Mon, 15 Mar 2021 05:00:27 +0000 (18:00 +1300)
committerSimon Glass <sjg@chromium.org>
Sat, 27 Mar 2021 02:04:30 +0000 (15:04 +1300)
When booting from coreboot we need this driver for the video to work.
Update the driver to be usable on any board.

The driver disables itself if it sees that is not booted from coreboot.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/video/Kconfig
drivers/video/coreboot.c

index 667157c2e978422db914194127f87f32f306030b..63ae2ba43c490f79214bc474871bd24002245702 100644 (file)
@@ -241,7 +241,7 @@ config VIDCONSOLE_AS_NAME
 
 config VIDEO_COREBOOT
        bool "Enable coreboot framebuffer driver support"
-       depends on X86 && SYS_COREBOOT
+       depends on X86
        help
          Turn on this option to enable a framebuffer driver when U-Boot is
          loaded by coreboot where the graphics device is configured by
index 55f72fe886ff308d2e0dd71afd598cc466e318ff..7237542c0765f35d7cb8a969042c0cb959831fa9 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <dm.h>
+#include <init.h>
 #include <vbe.h>
 #include <video.h>
 #include <asm/cb_sysinfo.h>
@@ -17,7 +18,7 @@ static int save_vesa_mode(struct cb_framebuffer *fb,
         * running on the serial console.
         */
        if (!fb)
-               return -ENXIO;
+               return log_msg_ret("save", -ENXIO);
 
        vesa->x_resolution = fb->x_resolution;
        vesa->y_resolution = fb->y_resolution;
@@ -44,16 +45,23 @@ static int coreboot_video_probe(struct udevice *dev)
        struct vesa_mode_info *vesa = &mode_info.vesa;
        int ret;
 
+       if (ll_boot_init())
+               return log_msg_ret("ll", -ENODEV);
+
        printf("Video: ");
 
        /* Initialize vesa_mode_info structure */
        ret = save_vesa_mode(fb, vesa);
-       if (ret)
+       if (ret) {
+               ret = log_msg_ret("save", ret);
                goto err;
+       }
 
        ret = vbe_setup_video_priv(vesa, uc_priv, plat);
-       if (ret)
+       if (ret) {
+               ret = log_msg_ret("setup", ret);
                goto err;
+       }
 
        printf("%dx%dx%d\n", uc_priv->xsize, uc_priv->ysize,
               vesa->bits_per_pixel);
@@ -61,7 +69,7 @@ static int coreboot_video_probe(struct udevice *dev)
        return 0;
 
 err:
-       printf("No video mode configured in coreboot!\n");
+       printf("No video mode configured in coreboot (err=%d)\n", ret);
        return ret;
 }