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

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.
Signed-off-by: Anatolij Gustschin agust@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 };
/**

On Sat, Sep 30, 2017 at 4:19 AM, Anatolij Gustschin agust@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@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

On Sat, 30 Sep 2017 10:19:17 +0200 Anatolij Gustschin agust@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.
Signed-off-by: Anatolij Gustschin agust@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(+)
Applied to u-boot-video/master.
-- Anatolij

On Fri, Oct 6, 2017 at 12:15 PM, Anatolij Gustschin agust@denx.de wrote:
On Sat, 30 Sep 2017 10:19:17 +0200 Anatolij Gustschin agust@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.
Signed-off-by: Anatolij Gustschin agust@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(+)
Applied to u-boot-video/master.
Like I mentioned before, we shouldn't really need this patch.. It only makes a trivial difference in size (which you could probably get back by just adding #ifdef VIDEO_ANSI / #endif around the single case statement in vidconsole_put_char())
text data bss dec hex 1937 224 0 2161 871 VIDEO_ANSI disabled with this patch 2002 224 0 2226 8b2 VIDEO_ANSI disabled without this patch 2698 224 0 2922 b6a VIDEO_ANSI enabled
And it makes the code a lot uglier and removes at least compile-time testing when VIDEO_ANSI is disabled.
So I think you should drop/revert this patch
BR, -R

Hi Rob,
On 6 October 2017 at 10:56, Rob Clark robdclark@gmail.com wrote:
On Fri, Oct 6, 2017 at 12:15 PM, Anatolij Gustschin agust@denx.de wrote:
On Sat, 30 Sep 2017 10:19:17 +0200 Anatolij Gustschin agust@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.
Signed-off-by: Anatolij Gustschin agust@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(+)
Applied to u-boot-video/master.
Like I mentioned before, we shouldn't really need this patch.. It only makes a trivial difference in size (which you could probably get back by just adding #ifdef VIDEO_ANSI / #endif around the single case statement in vidconsole_put_char())
text data bss dec hex 1937 224 0 2161 871 VIDEO_ANSI disabled with this patch 2002 224 0 2226 8b2 VIDEO_ANSI disabled without this patch 2698 224 0 2922 b6a VIDEO_ANSI enabled
And it makes the code a lot uglier and removes at least compile-time testing when VIDEO_ANSI is disabled.
So I think you should drop/revert this patch
Seems reasonable to me.
Regards, Simon

Hi Rob, Simon,
On Fri, 6 Oct 2017 11:04:24 -0600 Simon Glass sjg@chromium.org wrote: ...
So I think you should drop/revert this patch
Seems reasonable to me.
OK, I dropped it.
Thanks,
-- Anatolij
participants (3)
-
Anatolij Gustschin
-
Rob Clark
-
Simon Glass