x86: video: Allow coreboot video to be used on any x86 board

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>
This commit is contained in:
Simon Glass 2021-03-15 18:00:27 +13:00
parent bcac36185b
commit 19987c9834
2 changed files with 13 additions and 5 deletions

View 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

View 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;
}