TTY/Serial driver patches for 4.21-rc1
Here is the large TTY/Serial driver set of patches for 4.21-rc1.
A number of small serial driver changes along with some good tty core
fixes for long-reported issues with locking. There is also a new
console font added to the tree, for high-res screens, so that should be
helpful for many.
The last patch in the series is a revert of an older one in the tree, it
came late but it resolves a reported issue that linux-next was having
for some people.
Full details are in the shortlog, and all of these, with the exception
of the revert, have been in linux-next for a while with no reported
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-----BEGIN PGP SIGNATURE-----
iGwEABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCXCY+1w8cZ3JlZ0Brcm9h
aC5jb20ACgkQMUfUDdst+yl9PgCXckFuSe66uNMzdq2jsVgLKtMR+ACbBzrLQeMZ
LU8UpaVqDJrrPxVURGY=
=a/Xk
-----END PGP SIGNATURE-----
Merge tag 'tty-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial driver updates from Greg KH:
"Here is the large TTY/Serial driver set of patches for 4.21-rc1.
A number of small serial driver changes along with some good tty core
fixes for long-reported issues with locking. There is also a new
console font added to the tree, for high-res screens, so that should
be helpful for many.
The last patch in the series is a revert of an older one in the tree,
it came late but it resolves a reported issue that linux-next was
having for some people.
Full details are in the shortlog, and all of these, with the exception
of the revert, have been in linux-next for a while with no reported
issues"
* tag 'tty-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (85 commits)
Revert "serial: 8250: Default SERIAL_OF_PLATFORM to SERIAL_8250"
serial: sccnxp: Allow to use non-standard baud rates
serial: sccnxp: Adds a delay between sequential read/write cycles
tty: serial: qcom_geni_serial: Fix UART hang
tty: serial: qcom_geni_serial: Fix wrap around of TX buffer
serial: max310x: Fix tx_empty() callback
dt-bindings: serial: sh-sci: Document r8a774c0 bindings
dt-bindings: serial: sh-sci: Document r8a774a1 bindings
Fonts: New Terminus large console font
dt-bindings: serial: lpuart: add imx8qxp compatible string
serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly
serial: uartps: Fix error path when alloc failed
serial: uartps: Check if the device is a console
serial: uartps: Add the device_init_wakeup
tty: serial: samsung: Increase maximum baudrate
tty: serial: samsung: Properly set flags in autoCTS mode
tty: Use of_node_name_{eq,prefix} for node name comparisons
tty/serial: do not free trasnmit buffer page under port lock
serial: 8250: Rate limit serial port rx interrupts during input overruns
dt-bindings: serial: 8250: Add rate limit for serial port input overruns
...
This commit is contained in:
commit
117eda8f71
55 changed files with 3040 additions and 314 deletions
|
|
@ -32,6 +32,7 @@ struct font_desc {
|
|||
#define ACORN8x8_IDX 8
|
||||
#define MINI4x6_IDX 9
|
||||
#define FONT6x10_IDX 10
|
||||
#define TER16x32_IDX 11
|
||||
|
||||
extern const struct font_desc font_vga_8x8,
|
||||
font_vga_8x16,
|
||||
|
|
@ -43,7 +44,8 @@ extern const struct font_desc font_vga_8x8,
|
|||
font_sun_12x22,
|
||||
font_acorn_8x8,
|
||||
font_mini_4x6,
|
||||
font_6x10;
|
||||
font_6x10,
|
||||
font_ter_16x32;
|
||||
|
||||
/* Find a font with a specific name */
|
||||
|
||||
|
|
|
|||
23
include/linux/lantiq.h
Normal file
23
include/linux/lantiq.h
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#ifndef __LINUX_LANTIQ_H
|
||||
#define __LINUX_LANTIQ_H
|
||||
|
||||
#ifdef CONFIG_LANTIQ
|
||||
#include <lantiq_soc.h>
|
||||
#else
|
||||
|
||||
#ifndef LTQ_EARLY_ASC
|
||||
#define LTQ_EARLY_ASC 0
|
||||
#endif
|
||||
|
||||
#ifndef CPHYSADDR
|
||||
#define CPHYSADDR(a) 0
|
||||
#endif
|
||||
|
||||
static inline struct clk *clk_get_fpi(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif /* CONFIG_LANTIQ */
|
||||
#endif /* __LINUX_LANTIQ_H */
|
||||
|
|
@ -210,7 +210,7 @@ void serdev_device_wait_until_sent(struct serdev_device *, long);
|
|||
int serdev_device_get_tiocm(struct serdev_device *);
|
||||
int serdev_device_set_tiocm(struct serdev_device *, int, int);
|
||||
void serdev_device_write_wakeup(struct serdev_device *);
|
||||
int serdev_device_write(struct serdev_device *, const unsigned char *, size_t, unsigned long);
|
||||
int serdev_device_write(struct serdev_device *, const unsigned char *, size_t, long);
|
||||
void serdev_device_write_flush(struct serdev_device *);
|
||||
int serdev_device_write_room(struct serdev_device *);
|
||||
|
||||
|
|
|
|||
|
|
@ -134,6 +134,10 @@ struct uart_8250_port {
|
|||
void (*dl_write)(struct uart_8250_port *, int);
|
||||
|
||||
struct uart_8250_em485 *em485;
|
||||
|
||||
/* Serial port overrun backoff */
|
||||
struct delayed_work overrun_backoff;
|
||||
u32 overrun_backoff_time_ms;
|
||||
};
|
||||
|
||||
static inline struct uart_8250_port *up_to_u8250p(struct uart_port *up)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/circ_buf.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
|
@ -175,6 +176,7 @@ struct uart_port {
|
|||
struct console *cons; /* struct console, if any */
|
||||
#if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(SUPPORT_SYSRQ)
|
||||
unsigned long sysrq; /* sysrq timeout */
|
||||
unsigned int sysrq_ch; /* char for sysrq */
|
||||
#endif
|
||||
|
||||
/* flags must be updated while holding port mutex */
|
||||
|
|
@ -485,8 +487,42 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
static inline int
|
||||
uart_prepare_sysrq_char(struct uart_port *port, unsigned int ch)
|
||||
{
|
||||
if (port->sysrq) {
|
||||
if (ch && time_before(jiffies, port->sysrq)) {
|
||||
port->sysrq_ch = ch;
|
||||
port->sysrq = 0;
|
||||
return 1;
|
||||
}
|
||||
port->sysrq = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static inline void
|
||||
uart_unlock_and_check_sysrq(struct uart_port *port, unsigned long irqflags)
|
||||
{
|
||||
int sysrq_ch;
|
||||
|
||||
sysrq_ch = port->sysrq_ch;
|
||||
port->sysrq_ch = 0;
|
||||
|
||||
spin_unlock_irqrestore(&port->lock, irqflags);
|
||||
|
||||
if (sysrq_ch)
|
||||
handle_sysrq(sysrq_ch);
|
||||
}
|
||||
#else
|
||||
#define uart_handle_sysrq_char(port,ch) ({ (void)port; 0; })
|
||||
static inline int
|
||||
uart_handle_sysrq_char(struct uart_port *port, unsigned int ch) { return 0; }
|
||||
static inline int
|
||||
uart_prepare_sysrq_char(struct uart_port *port, unsigned int ch) { return 0; }
|
||||
static inline void
|
||||
uart_unlock_and_check_sysrq(struct uart_port *port, unsigned long irqflags)
|
||||
{
|
||||
spin_unlock_irqrestore(&port->lock, irqflags);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -366,6 +366,7 @@ struct tty_file_private {
|
|||
#define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */
|
||||
#define TTY_HUPPED 18 /* Post driver->hangup() */
|
||||
#define TTY_HUPPING 19 /* Hangup in progress */
|
||||
#define TTY_LDISC_CHANGING 20 /* Change pending - non-block IO */
|
||||
#define TTY_LDISC_HALTED 22 /* Line discipline is halted */
|
||||
|
||||
/* Values for tty->flow_change */
|
||||
|
|
@ -383,6 +384,12 @@ static inline void tty_set_flow_change(struct tty_struct *tty, int val)
|
|||
smp_mb();
|
||||
}
|
||||
|
||||
static inline bool tty_io_nonblock(struct tty_struct *tty, struct file *file)
|
||||
{
|
||||
return file->f_flags & O_NONBLOCK ||
|
||||
test_bit(TTY_LDISC_CHANGING, &tty->flags);
|
||||
}
|
||||
|
||||
static inline bool tty_io_error(struct tty_struct *tty)
|
||||
{
|
||||
return test_bit(TTY_IO_ERROR, &tty->flags);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue