diff options
author | Rob Clark <robdclark@gmail.com> | 2017-09-13 18:05:43 -0400 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2017-09-20 11:28:39 +0200 |
commit | a18c5a8382284037ea8fa4742736a65317476d23 (patch) | |
tree | a4b819db6d2fdc15b947daa13947d561e1b25751 /lib | |
parent | 71cc25c35c34945babbd94935a0e9c4f4ee942b2 (diff) | |
download | u-boot-a18c5a8382284037ea8fa4742736a65317476d23.tar.gz u-boot-a18c5a8382284037ea8fa4742736a65317476d23.tar.xz u-boot-a18c5a8382284037ea8fa4742736a65317476d23.zip |
efi_loader: Correctly figure out size for vidconsole
If stdout is vidconsole, we cannot rely on ANSI escape sequences to
query the size, as vidconsole cannot reply on stdin. Instead special-
case this if stdout is vidconsole.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/efi_loader/efi_console.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 6502081706..d596c58241 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -8,7 +8,10 @@ #include <common.h> #include <charset.h> +#include <dm/device.h> #include <efi_loader.h> +#include <stdio_dev.h> +#include <video_console.h> static bool console_size_queried; @@ -222,12 +225,23 @@ static efi_status_t EFIAPI efi_cout_query_mode( EFI_ENTRY("%p, %ld, %p, %p", this, mode_number, columns, rows); if (!console_size_queried) { + const char *stdout_name = env_get("stdout"); int rows, cols; console_size_queried = true; - if (query_console_serial(&rows, &cols)) + if (stdout_name && !strcmp(stdout_name, "vidconsole") && + IS_ENABLED(CONFIG_DM_VIDEO)) { + struct stdio_dev *stdout_dev = + stdio_get_by_name("vidconsole"); + struct udevice *dev = stdout_dev->priv; + struct vidconsole_priv *priv = + dev_get_uclass_priv(dev); + rows = priv->rows; + cols = priv->cols; + } else if (query_console_serial(&rows, &cols)) { goto out; + } /* Test if we can have Mode 1 */ if (cols >= 80 && rows >= 50) { |