On 09/14/2018 07:21 AM, Alexander Graf wrote:
> 
> 
> On 14.09.18 06:41, Heinrich Schuchardt wrote:
>> Correct scrolling in EFI applications like the EFI Shell requires correct
>> setting of the terminal size. Detecting the terminal size over the serial
>> interface is often not supported. The patch introduces the environment
> 
> Can you give examples on when it's not supported? I think most cases
> I've encountered in the last 10 years do support just reading them via
> escape sequences.
> 

I am using KDE. When running qemu-system-aarch64 in konsole or xterm
U-Boot never receives a response to the request.

Best regards

Heinrich

> 
> Alex
> 
>> variables LINES and COLUMNS to set the terminal size manually.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
>> ---
>>  doc/README.uefi              | 14 ++++++++++++++
>>  lib/efi_loader/efi_console.c | 15 ++++++++++++++-
>>  2 files changed, 28 insertions(+), 1 deletion(-)
>>
>> diff --git a/doc/README.uefi b/doc/README.uefi
>> index 6b9759cfed..df0cf5b7ce 100644
>> --- a/doc/README.uefi
>> +++ b/doc/README.uefi
>> @@ -299,6 +299,20 @@ This driver is only available if U-Boot is configured 
>> with
>>      CONFIG_BLK=y
>>      CONFIG_PARTITIONS=y
>>  
>> +## Setting the terminal size
>> +
>> +For correct scrolling the terminal size has to be known.
>> +
>> +The default terminal size is 80x25.
>> +
>> +If the environment variable 'stdout' has the value 'vidconsole', the 
>> terminal
>> +size is determined by querying the video console driver. Else it is tried to
>> +determine the terminal size by sending ESC '[18t' to the console which may
>> +reply with an escape sequence indicating the terminal size.
>> +
>> +It is possible to override the terminal size by setting the environment
>> +variables 'LINES' and 'COLUMNS'.
>> +
>>  ## TODOs as of U-Boot 2018.07
>>  
>>  * unimplemented or incompletely implemented boot services
>> diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
>> index 73f7ecf919..40e33f9fd3 100644
>> --- a/lib/efi_loader/efi_console.c
>> +++ b/lib/efi_loader/efi_console.c
>> @@ -224,6 +224,7 @@ static void query_console_size(void)
>>  {
>>      const char *stdout_name = env_get("stdout");
>>      int rows = 25, cols = 80;
>> +    char *value;
>>  
>>      if (stdout_name && !strcmp(stdout_name, "vidconsole") &&
>>          IS_ENABLED(CONFIG_DM_VIDEO)) {
>> @@ -235,9 +236,21 @@ static void query_console_size(void)
>>              rows = priv->rows;
>>              cols = priv->cols;
>>      } else if (query_console_serial(&rows, &cols)) {
>> -            return;
>> +            rows = 25;
>> +            cols = 80;
>>      }
>>  
>> +    value = env_get("LINES");
>> +    if (value)
>> +            rows = simple_strtoul(value, NULL, 10);
>> +    value = env_get("COLUMNS");
>> +    if (value)
>> +            cols = simple_strtoul(value, NULL, 10);
>> +    if (rows <= 0)
>> +            rows = 25;
>> +    if (cols <= 0)
>> +            cols = 80;
>> +
>>      /* Test if we can have Mode 1 */
>>      if (cols >= 80 && rows >= 50) {
>>              efi_cout_modes[1].present = 1;
>>
> 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to