mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 17:57:38 -04:00
Merge tag 'tty-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty / serial driver updates from Greg KH: "Here is the big set of serial and tty driver updates for 6.3-rc1. Once again, Jiri and Ilpo have done a number of core vt and tty/serial layer cleanups that were much needed and appreciated. Other than that, it's just a bunch of little tty/serial driver updates: - qcom-geni-serial driver updates - liteuart driver updates - hvcs driver cleanups - n_gsm updates and additions for new features - more 8250 device support added - fpga/dfl update and additions - imx serial driver updates - fsl_lpuart updates - other tiny fixes and updates for serial drivers All of these have been in linux-next for a while with no reported problems" * tag 'tty-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (143 commits) tty: n_gsm: add keep alive support serial: imx: remove a redundant check dt-bindings: serial: snps-dw-apb-uart: add dma & dma-names properties soc: qcom: geni-se: Move qcom-geni-se.h to linux/soc/qcom/geni-se.h tty: n_gsm: add TIOCMIWAIT support tty: n_gsm: add RING/CD control support tty: n_gsm: mark unusable ioctl structure fields accordingly serial: imx: get rid of registers shadowing serial: imx: refine local variables in rxint() serial: imx: stop using USR2 in FIFO reading loop serial: imx: remove redundant USR2 read from FIFO reading loop serial: imx: do not break from FIFO reading loop prematurely serial: imx: do not sysrq broken chars serial: imx: work-around for hardware RX flood serial: imx: factor-out common code to imx_uart_soft_reset() serial: 8250_pci1xxxx: Add power management functions to quad-uart driver serial: 8250_pci1xxxx: Add RS485 support to quad-uart driver serial: 8250_pci1xxxx: Add driver for quad-uart support serial: 8250_pci: Add serial8250_pci_setup_port definition in 8250_pcilib.c tty: pcn_uart: fix memory leak with using debugfs_lookup() ...
This commit is contained in:
@@ -60,8 +60,9 @@ struct consw {
|
||||
int (*con_switch)(struct vc_data *vc);
|
||||
int (*con_blank)(struct vc_data *vc, int blank, int mode_switch);
|
||||
int (*con_font_set)(struct vc_data *vc, struct console_font *font,
|
||||
unsigned int flags);
|
||||
int (*con_font_get)(struct vc_data *vc, struct console_font *font);
|
||||
unsigned int vpitch, unsigned int flags);
|
||||
int (*con_font_get)(struct vc_data *vc, struct console_font *font,
|
||||
unsigned int vpitch);
|
||||
int (*con_font_default)(struct vc_data *vc,
|
||||
struct console_font *font, char *name);
|
||||
int (*con_resize)(struct vc_data *vc, unsigned int width,
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct uni_pagedict;
|
||||
struct uni_screen;
|
||||
|
||||
#define NPAR 16
|
||||
#define VC_TABSTOPS_COUNT 256U
|
||||
@@ -159,7 +158,7 @@ struct vc_data {
|
||||
struct vc_data **vc_display_fg; /* [!] Ptr to var holding fg console for this display */
|
||||
struct uni_pagedict *uni_pagedict;
|
||||
struct uni_pagedict **uni_pagedict_loc; /* [!] Location of uni_pagedict variable for this console */
|
||||
struct uni_screen *vc_uni_screen; /* unicode screen content */
|
||||
u32 **vc_uni_lines; /* unicode screen content */
|
||||
/* additional information is in vt_kern.h */
|
||||
};
|
||||
|
||||
|
||||
@@ -27,11 +27,15 @@ enum dfl_id_type {
|
||||
* @id: id of the dfl device.
|
||||
* @type: type of DFL FIU of the device. See enum dfl_id_type.
|
||||
* @feature_id: feature identifier local to its DFL FIU type.
|
||||
* @revision: revision of this dfl device feature.
|
||||
* @mmio_res: mmio resource of this dfl device.
|
||||
* @irqs: list of Linux IRQ numbers of this dfl device.
|
||||
* @num_irqs: number of IRQs supported by this dfl device.
|
||||
* @cdev: pointer to DFL FPGA container device this dfl device belongs to.
|
||||
* @id_entry: matched id entry in dfl driver's id table.
|
||||
* @dfh_version: version of DFH for the device
|
||||
* @param_size: size of the block parameters in bytes
|
||||
* @params: pointer to block of parameters copied memory
|
||||
*/
|
||||
struct dfl_device {
|
||||
struct device dev;
|
||||
@@ -44,6 +48,9 @@ struct dfl_device {
|
||||
unsigned int num_irqs;
|
||||
struct dfl_fpga_cdev *cdev;
|
||||
const struct dfl_device_id *id_entry;
|
||||
u8 dfh_version;
|
||||
unsigned int param_size;
|
||||
void *params;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -84,4 +91,5 @@ void dfl_driver_unregister(struct dfl_driver *dfl_drv);
|
||||
module_driver(__dfl_driver, dfl_driver_register, \
|
||||
dfl_driver_unregister)
|
||||
|
||||
void *dfh_find_param(struct dfl_device *dfl_dev, int param_id, size_t *pcount);
|
||||
#endif /* __LINUX_DFL_H */
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
#include <uapi/linux/serial.h>
|
||||
#include <uapi/linux/serial_reg.h>
|
||||
|
||||
#define UART_IER_ALL_INTR (UART_IER_MSI | \
|
||||
UART_IER_RLSI | \
|
||||
UART_IER_THRI | \
|
||||
UART_IER_RDI)
|
||||
|
||||
/* Helper for dealing with UART_LCR_WLEN* defines */
|
||||
#define UART_LCR_WLEN(x) ((x) - 5)
|
||||
|
||||
@@ -23,6 +28,11 @@ static inline bool uart_lsr_tx_empty(u16 lsr)
|
||||
return (lsr & UART_LSR_BOTH_EMPTY) == UART_LSR_BOTH_EMPTY;
|
||||
}
|
||||
|
||||
#define UART_MSR_STATUS_BITS (UART_MSR_DCD | \
|
||||
UART_MSR_RI | \
|
||||
UART_MSR_DSR | \
|
||||
UART_MSR_CTS)
|
||||
|
||||
/*
|
||||
* Counters of the input lines (CTS, DSR, RI, CD) interrupts
|
||||
*/
|
||||
|
||||
@@ -579,6 +579,7 @@ struct uart_port {
|
||||
struct serial_rs485 rs485;
|
||||
struct serial_rs485 rs485_supported; /* Supported mask for serial_rs485 */
|
||||
struct gpio_desc *rs485_term_gpio; /* enable RS485 bus termination */
|
||||
struct gpio_desc *rs485_rx_during_tx_gpio; /* Output GPIO that sets the state of RS485 RX during TX */
|
||||
struct serial_iso7816 iso7816;
|
||||
void *private_data; /* generic platform data pointer */
|
||||
};
|
||||
@@ -781,7 +782,7 @@ static inline int uart_poll_timeout(struct uart_port *port)
|
||||
struct earlycon_device {
|
||||
struct console *con;
|
||||
struct uart_port port;
|
||||
char options[16]; /* e.g., 115200n8 */
|
||||
char options[32]; /* e.g., 115200n8 */
|
||||
unsigned int baud;
|
||||
};
|
||||
|
||||
@@ -896,10 +897,8 @@ static inline bool uart_softcts_mode(struct uart_port *uport)
|
||||
* The following are helper functions for the low level drivers.
|
||||
*/
|
||||
|
||||
extern void uart_handle_dcd_change(struct uart_port *uport,
|
||||
unsigned int status);
|
||||
extern void uart_handle_cts_change(struct uart_port *uport,
|
||||
unsigned int status);
|
||||
extern void uart_handle_dcd_change(struct uart_port *uport, bool active);
|
||||
extern void uart_handle_cts_change(struct uart_port *uport, bool active);
|
||||
|
||||
extern void uart_insert_char(struct uart_port *port, unsigned int status,
|
||||
unsigned int overrun, unsigned int ch, unsigned int flag);
|
||||
|
||||
@@ -103,6 +103,7 @@ struct geni_se {
|
||||
#define SE_DMA_TX_FSM_RST 0xc58
|
||||
#define SE_DMA_RX_IRQ_STAT 0xd40
|
||||
#define SE_DMA_RX_IRQ_CLR 0xd44
|
||||
#define SE_DMA_RX_LEN_IN 0xd54
|
||||
#define SE_DMA_RX_FSM_RST 0xd58
|
||||
#define SE_HW_PARAM_0 0xe24
|
||||
#define SE_HW_PARAM_1 0xe28
|
||||
@@ -235,6 +236,8 @@ struct geni_se {
|
||||
#define RX_SBE BIT(2)
|
||||
#define RX_RESET_DONE BIT(3)
|
||||
#define RX_FLUSH_DONE BIT(4)
|
||||
#define RX_DMA_PARITY_ERR BIT(5)
|
||||
#define RX_DMA_BREAK GENMASK(8, 7)
|
||||
#define RX_GENI_GP_IRQ GENMASK(10, 5)
|
||||
#define RX_GENI_CANCEL_IRQ BIT(11)
|
||||
#define RX_GENI_GP_IRQ_EXT GENMASK(13, 12)
|
||||
@@ -453,7 +453,7 @@ unsigned char tty_get_char_size(unsigned int cflag);
|
||||
unsigned char tty_get_frame_size(unsigned int cflag);
|
||||
|
||||
void tty_termios_copy_hw(struct ktermios *new, const struct ktermios *old);
|
||||
int tty_termios_hw_change(const struct ktermios *a, const struct ktermios *b);
|
||||
bool tty_termios_hw_change(const struct ktermios *a, const struct ktermios *b);
|
||||
int tty_set_termios(struct tty_struct *tty, struct ktermios *kt);
|
||||
|
||||
void tty_wakeup(struct tty_struct *tty);
|
||||
|
||||
@@ -170,7 +170,7 @@ int ldsem_down_write_nested(struct ld_semaphore *sem, int subclass,
|
||||
* send, please arise a tasklet or workqueue to do the real data transfer.
|
||||
* Do not send data in this hook, it may lead to a deadlock.
|
||||
*
|
||||
* @dcd_change: [DRV] ``void ()(struct tty_struct *tty, unsigned int status)``
|
||||
* @dcd_change: [DRV] ``void ()(struct tty_struct *tty, bool active)``
|
||||
*
|
||||
* Tells the discipline that the DCD pin has changed its status. Used
|
||||
* exclusively by the %N_PPS (Pulse-Per-Second) line discipline.
|
||||
@@ -238,7 +238,7 @@ struct tty_ldisc_ops {
|
||||
void (*receive_buf)(struct tty_struct *tty, const unsigned char *cp,
|
||||
const char *fp, int count);
|
||||
void (*write_wakeup)(struct tty_struct *tty);
|
||||
void (*dcd_change)(struct tty_struct *tty, unsigned int status);
|
||||
void (*dcd_change)(struct tty_struct *tty, bool active);
|
||||
int (*receive_buf2)(struct tty_struct *tty, const unsigned char *cp,
|
||||
const char *fp, int count);
|
||||
void (*lookahead_buf)(struct tty_struct *tty, const unsigned char *cp,
|
||||
|
||||
@@ -15,8 +15,8 @@ struct tty_struct;
|
||||
|
||||
/**
|
||||
* struct tty_port_operations -- operations on tty_port
|
||||
* @carrier_raised: return 1 if the carrier is raised on @port
|
||||
* @dtr_rts: raise the DTR line if @raise is nonzero, otherwise lower DTR
|
||||
* @carrier_raised: return true if the carrier is raised on @port
|
||||
* @dtr_rts: raise the DTR line if @active is true, otherwise lower DTR
|
||||
* @shutdown: called when the last close completes or a hangup finishes IFF the
|
||||
* port was initialized. Do not use to free resources. Turn off the device
|
||||
* only. Called under the port mutex to serialize against @activate and
|
||||
@@ -31,8 +31,8 @@ struct tty_struct;
|
||||
* the port itself.
|
||||
*/
|
||||
struct tty_port_operations {
|
||||
int (*carrier_raised)(struct tty_port *port);
|
||||
void (*dtr_rts)(struct tty_port *port, int raise);
|
||||
bool (*carrier_raised)(struct tty_port *port);
|
||||
void (*dtr_rts)(struct tty_port *port, bool active);
|
||||
void (*shutdown)(struct tty_port *port);
|
||||
int (*activate)(struct tty_port *port, struct tty_struct *tty);
|
||||
void (*destruct)(struct tty_port *port);
|
||||
@@ -230,7 +230,7 @@ static inline void tty_port_set_kopened(struct tty_port *port, bool val)
|
||||
|
||||
struct tty_struct *tty_port_tty_get(struct tty_port *port);
|
||||
void tty_port_tty_set(struct tty_port *port, struct tty_struct *tty);
|
||||
int tty_port_carrier_raised(struct tty_port *port);
|
||||
bool tty_port_carrier_raised(struct tty_port *port);
|
||||
void tty_port_raise_dtr_rts(struct tty_port *port);
|
||||
void tty_port_lower_dtr_rts(struct tty_port *port);
|
||||
void tty_port_hangup(struct tty_port *port);
|
||||
|
||||
Reference in New Issue
Block a user