[U-Boot] [PATCH] efi: console: Correctly report modes

Emmanuel Vadot manu at bidouilliste.com
Fri Aug 19 18:12:50 CEST 2016


Hello Alexander,

The UEFI spec say that mode 0 will always be 80x25, mode 1 80x50 and other
size will be mode >=2.
This patch :
- set the default size to 80x25.
- returns EFI_UNSUPPORTED if the queried mode isn't available.

Signed-off-by: Emmanuel Vadot <manu at bidouilliste.com>
---
 lib/efi_loader/efi_console.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 2e0228c..10849f9 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -9,9 +9,9 @@
 #include <common.h>
 #include <efi_loader.h>
 
-/* If we can't determine the console size, default to 80x24 */
+/* If we can't determine the console size, default to 80x25 */
 static int console_columns = 80;
-static int console_rows = 24;
+static int console_rows = 25;
 static bool console_size_queried;
 
 const efi_guid_t efi_guid_console_control = CONSOLE_CONTROL_GUID;
@@ -165,6 +165,8 @@ static efi_status_t EFIAPI efi_cout_query_mode(
 			unsigned long mode_number, unsigned long *columns,
 			unsigned long *rows)
 {
+	unsigned long current_mode;
+
 	EFI_ENTRY("%p, %ld, %p, %p", this, mode_number, columns, rows);
 
 	if (!console_size_queried) {
@@ -196,6 +198,16 @@ static efi_status_t EFIAPI efi_cout_query_mode(
 	}
 
 out:
+	if (console_columns == 80 && console_rows == 25)
+		current_mode = 0;
+	else if (console_columns == 80 && console_rows == 50)
+		current_mode = 1;
+	else
+		current_mode = 2;
+
+	if (mode_number != current_mode)
+		return EFI_EXIT(EFI_UNSUPPORTED);
+
 	if (columns)
 		*columns = console_columns;
 	if (rows)
-- 
2.9.2



More information about the U-Boot mailing list