From: Jiri Slaby Date: Mon, 15 Jun 2020 07:48:46 +0000 (+0200) Subject: vt: extract attribute inversion to vc_invert_attr X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~1513^2~77 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=881c8783e9608be9f86d67705dc7b5adeb3e4808;p=linux.git vt: extract attribute inversion to vc_invert_attr We continue cleaning up do_con_write. This (hopefully) makes the inversion code obvious. Signed-off-by: Jiri Slaby Link: https://lore.kernel.org/r/20200615074910.19267-14-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 5004242d601b..bf171bb1d2fd 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -2658,6 +2658,21 @@ need_more_bytes: return -1; } +static inline unsigned char vc_invert_attr(const struct vc_data *vc) +{ + if (!vc->vc_can_do_color) + return vc->vc_attr ^ 0x08; + + if (vc->vc_hi_font_mask == 0x100) + return (vc->vc_attr & 0x11) | + ((vc->vc_attr & 0xe0) >> 4) | + ((vc->vc_attr & 0x0e) << 4); + + return (vc->vc_attr & 0x88) | + ((vc->vc_attr & 0x70) >> 4) | + ((vc->vc_attr & 0x07) << 4); +} + /* acquires console_lock */ static int do_con_write(struct tty_struct *tty, const unsigned char *buf, int count) { @@ -2776,14 +2791,7 @@ rescan_last_byte: if (!inverse) { vc_attr = vc->vc_attr; } else { - /* invert vc_attr */ - if (!vc->vc_can_do_color) { - vc_attr = (vc->vc_attr) ^ 0x08; - } else if (vc->vc_hi_font_mask == 0x100) { - vc_attr = ((vc->vc_attr) & 0x11) | (((vc->vc_attr) & 0xe0) >> 4) | (((vc->vc_attr) & 0x0e) << 4); - } else { - vc_attr = ((vc->vc_attr) & 0x88) | (((vc->vc_attr) & 0x70) >> 4) | (((vc->vc_attr) & 0x07) << 4); - } + vc_attr = vc_invert_attr(vc); con_flush(vc, draw_from, draw_to, &draw_x); }