[PATCH 2/4] EFI: console: query_console_size: multiplex adaptation

Artem Lapkin email2tema at gmail.com
Wed Aug 4 12:22:15 CEST 2021


Multiplexed adaptation of the query_console_size() function;
automatically determine the minimal console area that will fit all
outputs properly.

Signed-off-by: Artem Lapkin <art at khadas.com>
---
 lib/efi_loader/efi_console.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 3b012e1a66..ef5cf21bf7 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -340,14 +340,18 @@ static int __maybe_unused query_vidconsole(int *rows, int *cols)
 static void query_console_size(void)
 {
 	int rows = 25, cols = 80;
-	int ret = -ENODEV;
 
-	if (IS_ENABLED(CONFIG_DM_VIDEO))
-		ret = query_vidconsole(&rows, &cols);
-	if (ret)
-		ret = query_console_serial(&rows, &cols);
-	if (ret)
+	if (IS_ENABLED(CONFIG_DM_VIDEO) &&
+	    !query_vidconsole(&rows, &cols)) {
+		int rows_serial, cols_serial;
+
+		if (!query_console_serial(&rows_serial, &cols_serial)) {
+			rows = min(rows, rows_serial);
+			cols = min(cols, cols_serial);
+		}
+	} else if (query_console_serial(&rows, &cols)) {
 		return;
+	}
 
 	/* Test if we can have Mode 1 */
 	if (cols >= 80 && rows >= 50) {
-- 
2.25.1



More information about the U-Boot mailing list