> From: Alexander Graf <ag...@suse.de>
> Date: Fri, 14 Sep 2018 07:21:56 +0200
> 
> 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.

There are multiple "standards" for these escape sequences so you can't
use them without knowing the terminal type.  So unless you implement a
way to set the terminal type in U-Boot that is a bad idea as sending
random control characters to a terminal that doesn't understand them
you invariably make it unusable.  This should then also include a
"dumb" setting since users may want to redirected the serial line
output to something that isn't a terminal at all.  At that point I
think Heinrich's solution is much simpler and better.

> > 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
> 
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to