Valentin Caron
7316888fa4
serial: stm32: extend max number of U(S)ART to 9
...
STM32MP25x got 9 instances of U(S)ART. So extend STM32_MAX_PORTS to 9, in
order to handle all instances.
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com >
Link: https://lore.kernel.org/r/20240112095300.2004878-3-valentin.caron@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:04:11 -08:00
Valentin Caron
ec240f8893
serial: stm32: implement prescaler tuning to compute low baudrate
...
In the case of high USART input clock and low baud rate, BRR value
is not enough to get correct baud rate. So here we use USART prescaler to
divide USART input clock to get the correct baud rate.
PRESC register is only available since stm32h7.
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com >
Link: https://lore.kernel.org/r/20240112095300.2004878-2-valentin.caron@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:04:11 -08:00
Lukas Bulwahn
5c49b6a4a4
vt: remove superfluous CONFIG_HW_CONSOLE
...
The config HW_CONSOLE is always identical to the config VT and is not
visible in the kernel's build menuconfig. So, CONFIG_HW_CONSOLE is
redundant.
Replace all references to CONFIG_HW_CONSOLE with CONFIG_VT and remove
CONFIG_HW_CONSOLE.
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com >
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com >
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com >
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org >
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org >
Link: https://lore.kernel.org/r/20240108134102.601-1-lukas.bulwahn@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:03:51 -08:00
Douglas Anderson
9e957a1550
serial: qcom-geni: Don't cancel/abort if we can't get the port lock
...
As of commit d7402513c9 ("arm64: smp: IPI_CPU_STOP and
IPI_CPU_CRASH_STOP should try for NMI"), if we've got pseudo-NMI
enabled then we'll use it to stop CPUs at panic time. This is nice,
but it does mean that there's a pretty good chance that we'll end up
stopping a CPU while it holds the port lock for the console
UART. Specifically, I see a CPU get stopped while holding the port
lock nearly 100% of the time on my sc7180-trogdor based Chromebook by
enabling the "buddy" hardlockup detector and then doing:
sysctl -w kernel.hardlockup_all_cpu_backtrace=1
sysctl -w kernel.hardlockup_panic=1
echo HARDLOCKUP > /sys/kernel/debug/provoke-crash/DIRECT
UART drivers are _supposed_ to handle this case OK and this is why
UART drivers check "oops_in_progress" and only do a "trylock" in that
case. However, before we enabled pseudo-NMI to stop CPUs it wasn't a
very well-tested situation.
Now that we're testing the situation a lot, it can be seen that the
Qualcomm GENI UART driver is pretty broken. Specifically, when I run
my test case and look at the console output I just see a bunch of
garbled output like:
[ 201.069084] NMI backtrace[ 201.069084] NM[ 201.069087] CPU: 6
PID: 10296 Comm: dnsproxyd Not tainted 6.7.0-06265-gb13e8c0ede12
#1 01112b9f14923cbd0b[ 201.069090] Hardware name: Google Lazor
([ 201.069092] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DI[
201.069095] pc : smp_call_function_man[ 201.069099]
That's obviously not so great. This happens because each call to the
console driver exits after the data has been written to the FIFO but
before it's actually been flushed out of the serial port. When we have
multiple calls into the console one after the other then (if we can't
get the lock) each call tells the UART to throw away any data in the
FIFO that hadn't been transferred yet.
I've posted up a patch to change the arm64 core to avoid this
situation most of the time [1] much like x86 seems to do, but even if
that patch lands the GENI driver should still be fixed.
>From testing, it appears that we can just delete the cancel/abort in
the case where we weren't able to get the UART lock and the output
looks good. It makes sense that we'd be able to do this since that
means we'll just call into __qcom_geni_serial_console_write() and
__qcom_geni_serial_console_write() looks much like
qcom_geni_serial_poll_put_char() but with a loop. However, it seems
safest to poll the FIFO and make sure it's empty before our
transfer. This should reliably make sure that we're not
interrupting/clobbering any existing transfers.
As part of this change, we'll also avoid re-setting up a TX at the end
of the console write function if we weren't able to get the lock,
since accessing "port->tx_remaining" without the lock is not
safe. This is only needed to re-start userspace initiated transfers.
[1] https://lore.kernel.org/r/20231207170251.1.Id4817adef610302554b8aa42b090d57270dc119c@changeid
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Link: https://lore.kernel.org/r/20240112150307.2.Idb1553d1d22123c377f31eacb4486432f6c9ac8d@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:01:51 -08:00
Douglas Anderson
486676116f
soc: qcom: geni-se: Add M_TX_FIFO_NOT_EMPTY bit definition
...
According to the docs I have, bit 21 of the status register is
asserted when the FIFO is _not_ empty. Add the definition.
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org >
Link: https://lore.kernel.org/r/20240112150307.1.I7dc0993c1e758a1efedd651e7e1670deb1b430fb@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:01:51 -08:00
Geert Uytterhoeven
85725449f3
serial: 8250: Move hp300_setup_serial_console() to <linux/serial_8250.h>
...
If CONFIG_SERIAL_8250_HP300=y and CONFIG_SERIAL_8250_CONSOLE=y (e.g.
m68k/allyesconfig):
drivers/tty/serial/8250/8250_hp300.c:91:12: error: no previous prototype for ‘hp300_setup_serial_console’ [-Werror=missing-prototypes]
91 | int __init hp300_setup_serial_console(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
Fix this by moving the existing prototype in arch/m68k/hp300/config.c to
<linux/serial_8250.h>, so it is visible to both caller and implementor.
While at it, provide a dummy in case CONFIG_SERIAL_8250_CONSOLE is not
enabled, to reduce #ifdef clutter in the caller.
Exposed by commit 0fcb70851f ("Makefile.extrawarn: turn on
missing-prototypes globally").
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org >
Link: https://lore.kernel.org/r/c17469f8e47b2ef49234a85a7a14882ddf374e41.1704892597.git.geert@linux-m68k.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:01:39 -08:00
Roman Žilka
c01e71b49c
tty/vt: UTF-8 parsing update according to RFC 3629, modern Unicode
...
vc_translate_unicode() and vc_sanitize_unicode() parse input to the
UTF-8-enabled console, marking invalid byte sequences and producing Unicode
codepoints. The current algorithm follows ancient Unicode and may accept
invalid byte sequences, pass on non-existent codepoints and reject valid
sequences.
The patch restores the functions' compliance with modern Unicode (v15.1 [1]
+ many previous versions) as well as RFC 3629 [2].
1. Codepoint space is limited to 0x10FFFF.
2. "Noncharacters", such as U+FFFE, U+FFFF, are no longer invalid in
Unicode and will be accepted. Another option was to complete the set of
noncharacters (used to be just those two, now there's more) and preserve
the rejection step. This is indeed what Unicode suggests ([1] chap.
23.7) (not requires), but most codepoints are !iswprint(), so selecting
just the noncharacters seemed arbitrary and futile (and unnecessary).
This is not a security patch. I'm not aware of any present security
implications of the old code.
[1] https://www.unicode.org/versions/Unicode15.1.0
[2] https://datatracker.ietf.org/doc/html/rfc3629
Signed-off-by: Roman Žilka <roman.zilka@gmail.com >
Link: https://lore.kernel.org/r/598ab459-6ba9-4a17-b4a1-08f26a356fc0@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:01:27 -08:00
Lizhe
e9e873eadc
serial: linflexuart: Remove redundant uart type assignment
...
In linflex_config_port() the member variable type will be
assigned again. Remove redundant uart type assignment from
linflex_probe().
Signed-off-by: Lizhe <sensor1010@163.com >
Link: https://lore.kernel.org/r/20240112133923.190852-1-sensor1010@163.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:40:17 -08:00
Francesco Dolcini
fed99212ac
treewide, serdev: change receive_buf() return type to size_t
...
receive_buf() is called from ttyport_receive_buf() that expects values
">= 0" from serdev_controller_receive_buf(), change its return type from
ssize_t to size_t.
The need for this clean-up was noticed while fixing a warning, see
commit 94d0539425 ("Bluetooth: btnxpuart: fix recv_buf() return value").
Changing the callback prototype to return an unsigned seems the best way
to document the API and ensure that is properly used.
GNSS drivers implementation of serdev receive_buf() callback return
directly the return value of gnss_insert_raw(). gnss_insert_raw()
returns a signed int, however this is not an issue since the value
returned is always positive, because of the kfifo_in() implementation.
gnss_insert_raw() could be changed to return also an unsigned, however
this is not implemented here as request by the GNSS maintainer Johan
Hovold.
Suggested-by: Jiri Slaby <jirislaby@kernel.org >
Link: https://lore.kernel.org/all/087be419-ec6b-47ad-851a-5e1e3ea5cfcc@kernel.org/
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com >
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com > #for-iio
Reviewed-by: Johan Hovold <johan@kernel.org >
Reviewed-by: Rob Herring <robh@kernel.org >
Reviewed-by: Alex Elder <elder@linaro.org >
Acked-by: Maximilian Luz <luzmaximilian@gmail.com > # for platform/surface
Acked-by: Lee Jones <lee@kernel.org >
Acked-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com >
Link: https://lore.kernel.org/r/20240122180551.34429-1-francesco@dolcini.it
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:13:53 -08:00
Jiri Slaby (SUSE)
cf066f9334
Documentation: add console.rst
...
Now, that the console kernel-doc is in better shape, include it in the
tty/ docs.
It's not supernice, but it is what it is. At least for the beginning.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: linux-doc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-48-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
60234365ae
tty: vt: fix up kernel-doc
...
selection.c and vt.c still uses tabs in the kernel-doc. This misrenders the
functions in the output -- sphinx misinterprets the description. So
remove these tabs, incl. those around dashes.
'enum' keyword is needed before enum names. Fix that.
Superfluous \n after the comments are also removed. They are not
completely faulty, but this unifies all the kernel-doc in the files.
Finally fix up the cross references.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Reviewed-by: Randy Dunlap <rdunlap@infradead.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-47-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
d1e2221644
tty: vt: document the rest of struct consw
...
There are still members of struct consw which are not documented yet.
Fix that up, so we can generate kernel-doc for that struct.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-46-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
b23bf1a43b
tty: vt: remove unused consw::con_flush_scrollback()
...
consw::con_flush_scrollback() is unused since commit 973c096f6a
(vgacon: remove software scrollback support). Drop it.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-45-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
f441aa3b44
tty: vt: remove consw::con_getxy()
...
After the previous patch, nobody sets that hook. So drop it completely.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-44-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
af757ca6b2
fbcon: remove fbcon_getxy()
...
Again, fbcon_getxy() is the same as the default implementation since the
softscroll removal in commit 50145474f6 (fbcon: remove soft scrollback
code). Drop that.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-43-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
fd1ca81971
tty: vt: make types of screenpos() more consistent
...
* parameter offset: it is expected to be non-negative, so switch to
unsigned
* return type: switch from ushort to explicit u16. This is expected on
most places. And fix the remaining two places too.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-42-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
7cf01c92ad
tty: vt: remove consw::con_screen_pos()
...
After the previous patch, nobody sets that hook. So drop it completely.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-41-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
d62808ba9e
fbcon: remove consw::con_screen_pos()
...
fbcon_screen_pos() performs the same as the default implementation. The
only difference in the default implementation is that is considers both
vc->vc_origin and vc->vc_visible_origin. But given fbcon's softscroll
code was already removed in commit 50145474f6 (fbcon: remove soft
scrollback code), both are always the same.
So remove fbcon_screen_pos() too.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-40-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
42822fabfc
tty: vt: change consw::con_set_origin() return type
...
The return value of consw::con_set_origin() is only true/false, meaining
if vc->vc_origin is set to vc->vc_screenbuf or not.
So switch the type and returned values accordingly.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-39-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
4f59617065
tty: vt: make consw::con_font_default()'s name const
...
It's a name after all and that is not supposed to be changed. So make it
const to make this obvious.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-38-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
fd0f631fff
tty: vt: make font of consw::con_font_set() const
...
Provided the font parameter of consw::con_font_set() is not supposed to
be changed, make it const.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-37-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
77e110936a
tty: vt: make types around consw::con_blank() bool
...
Both the mode_switch parameter and the return value (a redraw needed)
are true/false. So switch them to bool, so that users won't return
-Eerrors or anything else.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-36-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
0a58d83dfb
tty: vt: use enum constants for VESA blanking modes
...
Use the new enum for VESA constants. This improves type checking in
consw::con_blank().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-35-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
15d0fff7d6
tty: vt: use VESA blanking constants
...
There are VESA blanking constants defined in vesa.h. So use them in the
console code instead of constant values.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-34-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
ace4ebf9b7
tty: vt: define a common enum for VESA blanking constants
...
There are currently two places with VESA blanking constants definitions:
fb.h and console.h. Extract/unify the two to a separate header (vesa.h).
Given the fb's is in an uapi header, create the common header in uapi
too.
Note that instead of macros, an enum (vesa_blank_mode) is created. But
the macros are kept too (they now expand to the enum constants), just in
case someone in userspace performs some #ifdeffery.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-kernel@vger.kernel.org
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: Thomas Zimmermann <tzimmermann@suse.de >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-33-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
735a51943f
tty: vt: stop using -1 for blank mode in consw::con_blank()
...
-1 is the same as VESA_VSYNC_SUSPEND in all con_blank() implementations.
So we can remove this special case from vgacon now too.
Despite con_blank() of fbcon looks complicated, the "if
(!fbcon_is_inactive(vc, info))" branch is not taken as we set
"ops->graphics = 1;" few lines above. So what matters there (as in all
other blank implementations except vgacon) is if 'blank' is zero or not.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-32-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
8d5cc8eed7
tty: vt: make consw::con_switch() return a bool
...
The non-zero (true) return value from consw::con_switch() means a redraw
is needed. So make this return type a bool explicitly instead of int.
The latter might imply that -Eerrors are expected. They are not.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-31-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
a292e3fc94
tty: vt: remove CM_* constants
...
There is no difference between CM_MOVE and CM_DRAW. Either of them
enables the cursor. CM_ERASE then disables cursor.
So get rid of all of them and use simple "bool enable".
Note that this propagates down to the fbcon code.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-30-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
9aefbaeb30
fbdev/core: simplify cursor_state setting in fbcon_ops::cursor()
...
There is a switch decicing if cursor should be drawn or not. The whole
switch can be simplified to one line. Do this cleanup as a preparatory
work for the next patch. There, all the CM_* constants are removed.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-29-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
7c5337c9ea
consoles: use if instead of switch-case in consw::con_cursor()
...
This is only a preparation for the following cleanup patch to make it
easier. Provided CM_ERASE is the only different, use 'if' instead of
'switch+case' in all those.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-28-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
bfd7de49d7
tty: vt: sanitize consw::con_putcs() parameters
...
Similar to con_putc() in the previous patch:
* make the pointer to charattr a pointer to u16, and
* make x, y, and count unsigned as they are strictly non-negative.
And again, document that hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-27-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
338c28107b
tty: vt: sanitize consw::con_putc() parameters
...
Make parameters of consw::con_putc() saner:
* x and y are unsigned now, as they cannot be negative, and
* ca is made u16, as it is composed of two 8bit values (character and
attribute). See the con_putcs() hook, u16/ushort is worked on there.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-26-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
8bc03a3009
tty: vt: eliminate unneeded consw::con_putc() implementations
...
All these consw::con_putc() implementations do the same as
consw::con_putcs() (only for one charattr) or even call
consw::con_putcs() on their own.
Drop them, as thanks to the new con_putc() helper in the previous patch,
the console code performs this already -- exactly if consw::con_putc()
is missing (NULL).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-25-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
387ccbdb63
tty: vt: add con_putc() helper
...
And let it call consw::con_putc() if it exists, otherwise
consw::con_putcs(). This is similar to tty_put_char().
It supports dropping unneeded duplication of code like sticon_putc() is
(see the next patch).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-24-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
3ab8a65193
tty: vt: remove checks for count in consw::con_clear() implementations
...
'count' in consw::con_clear() is guaranteed to be positive. csi_X() (the
only caller) takes the minimum of the vc parameter (which is at least 1)
and count of characters till the end of the line. The latter is computed
as a subtraction of vc->vc_cols (count) and vc->state.x (offset). So for
the worst case, full line, it is 1.
Therefore, there is no point in checking zero or negative values (width
is now unsigned anyway).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-23-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
559f01a0ee
tty: vt: sanitize arguments of consw::con_clear()
...
In consw::con_clear():
* Height is always 1, so drop it.
* Offsets and width are always unsigned values, so re-type them as such.
This needs a new __fbcon_clear() in the fbcon code to still handle
height which might not be 1 when called internally.
Note that tests for negative count/width are left in place -- they are
taken care of in the next patches.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-22-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
dae3e6b618
tty: vt: make init parameter of consw::con_init() a bool
...
The 'init' parameter of consw::con_init() is true for the first call of
the hook on a particular console. So make the parameter a bool.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-21-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
7995c30d8d
tty: vt: make consw::con_debug_*() return void
...
The return value of con_debug_enter() and con_debug_leave() is ignored
on many fronts. So just don't propagate errors (the current
implementations return 0 anyway) and make the return type a void.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-20-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
649f6fbe6a
tty: vt: remove extern from functions in selection.h
...
Remove unneeded 'extern' keyword from function prototypes in
selection.h. This makes it more readable as no more wrapping is needed
on many places.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-19-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
bf9e206b8a
tty: vt: define an enum for ascii characters
...
I didn't find definitions for ascii in the kernel yet, so define it for
non-printable characters used here.
Note we use ' ' instead of 32 on one line too.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-18-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
23672a572f
tty: vt: reflow csi_K()
...
Push cases one level left, according to coding style.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-17-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
7eb38a765e
tty: vt: define an enum for CSI+K codes
...
Decrypt the constant values by proper enum names. This time in csi_K().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-16-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
8e6bd49a61
don't pass vc->vc_par[0] to csi_?() handlers
...
Fetch the value directly in the helpers instead.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-15-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
eb881ebab5
use clamp() for counts in csi_?() handlers
...
The count to process is supposed to be between 1 and vc->vc_cols -
vc->state.x (or rows and .y). clamp() can be used exactly for this,
instead of ifs and min().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-14-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
fe4f6beb59
tty: vt: reflow csi_J()
...
Push cases one level left, according to coding style. And reorder local
variables.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-13-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
4b8f936185
tty: vt: define an enum for CSI+J codes
...
Decrypt the constant values by proper enum names. This time in csi_J().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-12-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
76ec3a7a51
tty: vt: use case ranges for CSI+m fg/bg colors
...
Replacing the default case with the iffery by case ranges makes the code
more understandable at last.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-11-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
09e7f9f6c5
tty: vt: define an enum for CSI+m codes
...
It's always confusing to read all those case 0:, case 1: etc. in csi_*
handlers. Define enum entries for all those constants in CSI+m and use
them in csi_m().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-10-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
d4c0c481e4
tty: vt: make vc_is_sel()'s vc const
...
It's only an aid to people reading the header and/or calling
vc_is_sel(). vc is only tested there, so having it const makes sense.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-9-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:52 -08:00
Jiri Slaby (SUSE)
beccdcfa15
tty: vt: pass vc_resize_user as a parameter
...
It is pretty unfortunate to set vc_data::vc_resize_user in two callers
of vc_do_resize(). vc_resize_user is immediately reset there (while
remembering it). So instead of this back and forth, pass 'from_user' as
a parameter.
Notes on 'int user':
* The name changes from 'user' to 'from_user' on some places to be
consistent.
* The type is bool now as 'int user' might evoke user's uid or whatever.
Provided vc_resize() is called on many places and they need not to care
about this parameter, its prototype is kept unchanged. Instead, it is
now an inline calling a new __vc_resize() which implements the above.
This patch makes the situation much more obvious.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-8-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:52 -08:00