[U-Boot] [PATCH] dm: video: make ANSI escape sequence support optional

Rob Clark robdclark at gmail.com
Sat Sep 30 16:20:13 UTC 2017


On Sat, Sep 30, 2017 at 4:19 AM, Anatolij Gustschin <agust at denx.de> wrote:
> As mentioned in review comments for ANSI escape sequence
> support patches, this should be optional to reduce code
> size. Disable escape sequence support when CONFIG_VIDEO_ANSI
> is not enabled.

Assuming the later version of the patch was applied there should be,
at the top of vidconsole_escape_char:

       if (!IS_ENABLED(CONFIG_VIDEO_ANSI))
               goto error;

which (at least if not building with -O0) should be enough to strip
the rest out, with somewhat less ifdef than this approach..

BR,
-R


> Signed-off-by: Anatolij Gustschin <agust at denx.de>
> ---
> This patch is based on basic ANSI escape seq. support series:
> https://www.mail-archive.com/u-boot@lists.denx.de/msg263777.html
>
>  drivers/video/vidconsole-uclass.c | 6 ++++++
>  include/video_console.h           | 4 ++++
>  2 files changed, 10 insertions(+)
>
> diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
> index 5f63c12d6c..f62e9f9308 100644
> --- a/drivers/video/vidconsole-uclass.c
> +++ b/drivers/video/vidconsole-uclass.c
> @@ -108,6 +108,7 @@ static void vidconsole_newline(struct udevice *dev)
>         video_sync(dev->parent);
>  }
>
> +#if CONFIG_IS_ENABLED(VIDEO_ANSI)
>  static const struct {
>         unsigned r;
>         unsigned g;
> @@ -299,22 +300,27 @@ error:
>         /* something went wrong, just revert to normal mode: */
>         priv->escape = 0;
>  }
> +#endif
>
>  int vidconsole_put_char(struct udevice *dev, char ch)
>  {
>         struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
>         int ret;
>
> +#if CONFIG_IS_ENABLED(VIDEO_ANSI)
>         if (priv->escape) {
>                 vidconsole_escape_char(dev, ch);
>                 return 0;
>         }
> +#endif
>
>         switch (ch) {
> +#if CONFIG_IS_ENABLED(VIDEO_ANSI)
>         case '\x1b':
>                 priv->escape_len = 0;
>                 priv->escape = 1;
>                 break;
> +#endif
>         case '\a':
>                 /* beep */
>                 break;
> diff --git a/include/video_console.h b/include/video_console.h
> index 9dce234bd9..f07f43c1e2 100644
> --- a/include/video_console.h
> +++ b/include/video_console.h
> @@ -7,6 +7,8 @@
>  #ifndef __video_console_h
>  #define __video_console_h
>
> +#include <linux/kconfig.h>
> +
>  #define VID_FRAC_DIV   256
>
>  #define VID_TO_PIXEL(x)        ((x) / VID_FRAC_DIV)
> @@ -45,6 +47,7 @@ struct vidconsole_priv {
>         int xsize_frac;
>         int xstart_frac;
>         int last_ch;
> +#if CONFIG_IS_ENABLED(VIDEO_ANSI)
>         /*
>          * ANSI escape sequences are accumulated character by character,
>          * starting after the ESC char (0x1b) until the entire sequence
> @@ -53,6 +56,7 @@ struct vidconsole_priv {
>         int escape;
>         int escape_len;
>         char escape_buf[32];
> +#endif
>  };
>
>  /**
> --
> 2.11.0
>


More information about the U-Boot mailing list