Merge tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial driver updates from Greg KH: "Here's the big tty/serial driver update for 3.19-rc1. There are a number of TTY core changes/fixes in here from Peter Hurley that have all been teted in linux-next for a long time now. There are also the normal serial driver updates as well, full details in the changelog below" * tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (219 commits) serial: pxa: hold port.lock when reporting modem line changes tty-hvsi_lib: Deletion of an unnecessary check before the function call "tty_kref_put" tty: Deletion of unnecessary checks before two function calls n_tty: Fix read_buf race condition, increment read_head after pushing data serial: of-serial: add PM suspend/resume support Revert "serial: of-serial: add PM suspend/resume support" Revert "serial: of-serial: fix up PM ops on no_console_suspend and port type" serial: 8250: don't attempt a trylock if in sysrq serial: core: Add big-endian iotype serial: samsung: use port->fifosize instead of hardcoded values serial: samsung: prefer to use fifosize from driver data serial: samsung: fix style problems serial: samsung: wait for transfer completion before clock disable serial: icom: fix error return code serial: tegra: clean up tty-flag assignments serial: Fix io address assign flow with Fintek PCI-to-UART Product serial: mxs-auart: fix tx_empty against shift register serial: mxs-auart: fix gpio change detection on interrupt serial: mxs-auart: Fix mxs_auart_set_ldisc() serial: 8250_dw: Use 64-bit access for OCTEON. ...
This commit is contained in:
@@ -416,9 +416,6 @@ extern int __kernel_text_address(unsigned long addr);
|
||||
extern int kernel_text_address(unsigned long addr);
|
||||
extern int func_ptr_is_kernel_text(void *ptr);
|
||||
|
||||
struct pid;
|
||||
extern struct pid *session_of_pgrp(struct pid *pgrp);
|
||||
|
||||
unsigned long int_sqrt(unsigned long);
|
||||
|
||||
extern void bust_spinlocks(int yes);
|
||||
|
||||
@@ -97,13 +97,10 @@ struct uart_8250_port {
|
||||
unsigned char msr_saved_flags;
|
||||
|
||||
struct uart_8250_dma *dma;
|
||||
struct serial_rs485 rs485;
|
||||
|
||||
/* 8250 specific callbacks */
|
||||
int (*dl_read)(struct uart_8250_port *);
|
||||
void (*dl_write)(struct uart_8250_port *, int);
|
||||
int (*rs485_config)(struct uart_8250_port *,
|
||||
struct serial_rs485 *rs485);
|
||||
};
|
||||
|
||||
static inline struct uart_8250_port *up_to_u8250p(struct uart_port *up)
|
||||
|
||||
@@ -116,6 +116,4 @@
|
||||
UART_FIFO_PARERR_MASK | \
|
||||
UART_FIFO_BRKDET_MASK)
|
||||
|
||||
#define UART_REG_SIZE 24
|
||||
|
||||
#endif /* _LINUX_SERIAL_BCM63XX_H */
|
||||
|
||||
@@ -63,7 +63,7 @@ struct uart_ops {
|
||||
void (*flush_buffer)(struct uart_port *);
|
||||
void (*set_termios)(struct uart_port *, struct ktermios *new,
|
||||
struct ktermios *old);
|
||||
void (*set_ldisc)(struct uart_port *, int new);
|
||||
void (*set_ldisc)(struct uart_port *, struct ktermios *);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned int oldstate);
|
||||
|
||||
@@ -131,6 +131,8 @@ struct uart_port {
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned int old);
|
||||
void (*handle_break)(struct uart_port *);
|
||||
int (*rs485_config)(struct uart_port *,
|
||||
struct serial_rs485 *rs485);
|
||||
unsigned int irq; /* irq number */
|
||||
unsigned long irqflags; /* irq flags */
|
||||
unsigned int uartclk; /* base uart clock */
|
||||
@@ -140,12 +142,13 @@ struct uart_port {
|
||||
unsigned char iotype; /* io access style */
|
||||
unsigned char unused1;
|
||||
|
||||
#define UPIO_PORT (0)
|
||||
#define UPIO_HUB6 (1)
|
||||
#define UPIO_MEM (2)
|
||||
#define UPIO_MEM32 (3)
|
||||
#define UPIO_AU (4) /* Au1x00 and RT288x type IO */
|
||||
#define UPIO_TSI (5) /* Tsi108/109 type IO */
|
||||
#define UPIO_PORT (0) /* 8b I/O port access */
|
||||
#define UPIO_HUB6 (1) /* Hub6 ISA card */
|
||||
#define UPIO_MEM (2) /* 8b MMIO access */
|
||||
#define UPIO_MEM32 (3) /* 32b little endian */
|
||||
#define UPIO_MEM32BE (4) /* 32b big endian */
|
||||
#define UPIO_AU (5) /* Au1x00 and RT288x type IO */
|
||||
#define UPIO_TSI (6) /* Tsi108/109 type IO */
|
||||
|
||||
unsigned int read_status_mask; /* driver specific */
|
||||
unsigned int ignore_status_mask; /* driver specific */
|
||||
@@ -160,21 +163,33 @@ struct uart_port {
|
||||
/* flags must be updated while holding port mutex */
|
||||
upf_t flags;
|
||||
|
||||
#define UPF_FOURPORT ((__force upf_t) (1 << 1))
|
||||
#define UPF_SAK ((__force upf_t) (1 << 2))
|
||||
#define UPF_SPD_MASK ((__force upf_t) (0x1030))
|
||||
#define UPF_SPD_HI ((__force upf_t) (0x0010))
|
||||
#define UPF_SPD_VHI ((__force upf_t) (0x0020))
|
||||
#define UPF_SPD_CUST ((__force upf_t) (0x0030))
|
||||
#define UPF_SPD_SHI ((__force upf_t) (0x1000))
|
||||
#define UPF_SPD_WARP ((__force upf_t) (0x1010))
|
||||
#define UPF_SKIP_TEST ((__force upf_t) (1 << 6))
|
||||
#define UPF_AUTO_IRQ ((__force upf_t) (1 << 7))
|
||||
#define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
|
||||
#define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
|
||||
#define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
|
||||
/*
|
||||
* These flags must be equivalent to the flags defined in
|
||||
* include/uapi/linux/tty_flags.h which are the userspace definitions
|
||||
* assigned from the serial_struct flags in uart_set_info()
|
||||
* [for bit definitions in the UPF_CHANGE_MASK]
|
||||
*
|
||||
* Bits [0..UPF_LAST_USER] are userspace defined/visible/changeable
|
||||
* except bit 15 (UPF_NO_TXEN_TEST) which is masked off.
|
||||
* The remaining bits are serial-core specific and not modifiable by
|
||||
* userspace.
|
||||
*/
|
||||
#define UPF_FOURPORT ((__force upf_t) ASYNC_FOURPORT /* 1 */ )
|
||||
#define UPF_SAK ((__force upf_t) ASYNC_SAK /* 2 */ )
|
||||
#define UPF_SPD_HI ((__force upf_t) ASYNC_SPD_HI /* 4 */ )
|
||||
#define UPF_SPD_VHI ((__force upf_t) ASYNC_SPD_VHI /* 5 */ )
|
||||
#define UPF_SPD_CUST ((__force upf_t) ASYNC_SPD_CUST /* 0x0030 */ )
|
||||
#define UPF_SPD_WARP ((__force upf_t) ASYNC_SPD_WARP /* 0x1010 */ )
|
||||
#define UPF_SPD_MASK ((__force upf_t) ASYNC_SPD_MASK /* 0x1030 */ )
|
||||
#define UPF_SKIP_TEST ((__force upf_t) ASYNC_SKIP_TEST /* 6 */ )
|
||||
#define UPF_AUTO_IRQ ((__force upf_t) ASYNC_AUTO_IRQ /* 7 */ )
|
||||
#define UPF_HARDPPS_CD ((__force upf_t) ASYNC_HARDPPS_CD /* 11 */ )
|
||||
#define UPF_SPD_SHI ((__force upf_t) ASYNC_SPD_SHI /* 12 */ )
|
||||
#define UPF_LOW_LATENCY ((__force upf_t) ASYNC_LOW_LATENCY /* 13 */ )
|
||||
#define UPF_BUGGY_UART ((__force upf_t) ASYNC_BUGGY_UART /* 14 */ )
|
||||
#define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15))
|
||||
#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
|
||||
#define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ )
|
||||
|
||||
/* Port has hardware-assisted h/w flow control (iow, auto-RTS *not* auto-CTS) */
|
||||
#define UPF_HARD_FLOW ((__force upf_t) (1 << 21))
|
||||
/* Port has hardware-assisted s/w flow control */
|
||||
@@ -190,9 +205,14 @@ struct uart_port {
|
||||
#define UPF_DEAD ((__force upf_t) (1 << 30))
|
||||
#define UPF_IOREMAP ((__force upf_t) (1 << 31))
|
||||
|
||||
#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
|
||||
#define __UPF_CHANGE_MASK 0x17fff
|
||||
#define UPF_CHANGE_MASK ((__force upf_t) __UPF_CHANGE_MASK)
|
||||
#define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
|
||||
|
||||
#if __UPF_CHANGE_MASK > ASYNC_FLAGS
|
||||
#error Change mask not equivalent to userspace-visible bit defines
|
||||
#endif
|
||||
|
||||
/* status must be updated while holding port lock */
|
||||
upstat_t status;
|
||||
|
||||
@@ -214,6 +234,7 @@ struct uart_port {
|
||||
unsigned char unused[2];
|
||||
struct attribute_group *attr_group; /* port specific attributes */
|
||||
const struct attribute_group **tty_groups; /* all attributes (serial core use only) */
|
||||
struct serial_rs485 rs485;
|
||||
void *private_data; /* generic platform data pointer */
|
||||
};
|
||||
|
||||
@@ -367,7 +388,7 @@ static inline int uart_tx_stopped(struct uart_port *port)
|
||||
|
||||
static inline bool uart_cts_enabled(struct uart_port *uport)
|
||||
{
|
||||
return uport->status & UPSTAT_CTS_ENABLE;
|
||||
return !!(uport->status & UPSTAT_CTS_ENABLE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -284,7 +284,7 @@ struct tty_struct {
|
||||
|
||||
#define N_TTY_BUF_SIZE 4096
|
||||
|
||||
unsigned char closing:1;
|
||||
int closing;
|
||||
unsigned char *write_buf;
|
||||
int write_cnt;
|
||||
/* If the tty has a pending do_SAK, queue it here - akpm */
|
||||
@@ -316,12 +316,10 @@ struct tty_file_private {
|
||||
#define TTY_EXCLUSIVE 3 /* Exclusive open mode */
|
||||
#define TTY_DEBUG 4 /* Debugging */
|
||||
#define TTY_DO_WRITE_WAKEUP 5 /* Call write_wakeup after queuing new */
|
||||
#define TTY_CLOSING 7 /* ->close() in progress */
|
||||
#define TTY_LDISC_OPEN 11 /* Line discipline is open */
|
||||
#define TTY_PTY_LOCK 16 /* pty private */
|
||||
#define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */
|
||||
#define TTY_HUPPED 18 /* Post driver->hangup() */
|
||||
#define TTY_HUPPING 21 /* ->hangup() in progress */
|
||||
#define TTY_LDISC_HALTED 22 /* Line discipline is halted */
|
||||
|
||||
#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
|
||||
@@ -437,14 +435,13 @@ extern int is_ignored(int sig);
|
||||
extern int tty_signal(int sig, struct tty_struct *tty);
|
||||
extern void tty_hangup(struct tty_struct *tty);
|
||||
extern void tty_vhangup(struct tty_struct *tty);
|
||||
extern void tty_unhangup(struct file *filp);
|
||||
extern int tty_hung_up_p(struct file *filp);
|
||||
extern void do_SAK(struct tty_struct *tty);
|
||||
extern void __do_SAK(struct tty_struct *tty);
|
||||
extern void no_tty(void);
|
||||
extern void tty_flush_to_ldisc(struct tty_struct *tty);
|
||||
extern void tty_buffer_free_all(struct tty_port *port);
|
||||
extern void tty_buffer_flush(struct tty_struct *tty);
|
||||
extern void tty_buffer_flush(struct tty_struct *tty, struct tty_ldisc *ld);
|
||||
extern void tty_buffer_init(struct tty_port *port);
|
||||
extern speed_t tty_termios_baud_rate(struct ktermios *termios);
|
||||
extern speed_t tty_termios_input_baud_rate(struct ktermios *termios);
|
||||
@@ -498,9 +495,6 @@ extern int tty_init_termios(struct tty_struct *tty);
|
||||
extern int tty_standard_install(struct tty_driver *driver,
|
||||
struct tty_struct *tty);
|
||||
|
||||
extern struct tty_struct *tty_pair_get_tty(struct tty_struct *tty);
|
||||
extern struct tty_struct *tty_pair_get_pty(struct tty_struct *tty);
|
||||
|
||||
extern struct mutex tty_mutex;
|
||||
extern spinlock_t tty_files_lock;
|
||||
|
||||
@@ -562,7 +556,7 @@ extern int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc);
|
||||
extern int tty_unregister_ldisc(int disc);
|
||||
extern int tty_set_ldisc(struct tty_struct *tty, int ldisc);
|
||||
extern int tty_ldisc_setup(struct tty_struct *tty, struct tty_struct *o_tty);
|
||||
extern void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty);
|
||||
extern void tty_ldisc_release(struct tty_struct *tty);
|
||||
extern void tty_ldisc_init(struct tty_struct *tty);
|
||||
extern void tty_ldisc_deinit(struct tty_struct *tty);
|
||||
extern void tty_ldisc_begin(void);
|
||||
@@ -623,14 +617,6 @@ extern int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file,
|
||||
extern long n_tty_compat_ioctl_helper(struct tty_struct *tty, struct file *file,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
|
||||
/* serial.c */
|
||||
|
||||
extern void serial_console_init(void);
|
||||
|
||||
/* pcxx.c */
|
||||
|
||||
extern int pcxe_open(struct tty_struct *tty, struct file *filp);
|
||||
|
||||
/* vt.c */
|
||||
|
||||
extern int vt_ioctl(struct tty_struct *tty,
|
||||
@@ -643,11 +629,9 @@ extern long vt_compat_ioctl(struct tty_struct *tty,
|
||||
/* functions for preparation of BKL removal */
|
||||
extern void __lockfunc tty_lock(struct tty_struct *tty);
|
||||
extern void __lockfunc tty_unlock(struct tty_struct *tty);
|
||||
extern void __lockfunc tty_lock_pair(struct tty_struct *tty,
|
||||
struct tty_struct *tty2);
|
||||
extern void __lockfunc tty_unlock_pair(struct tty_struct *tty,
|
||||
struct tty_struct *tty2);
|
||||
|
||||
extern void __lockfunc tty_lock_slave(struct tty_struct *tty);
|
||||
extern void __lockfunc tty_unlock_slave(struct tty_struct *tty);
|
||||
extern void tty_set_lock_subclass(struct tty_struct *tty);
|
||||
/*
|
||||
* this shall be called only from where BTM is held (like close)
|
||||
*
|
||||
|
||||
@@ -54,7 +54,8 @@
|
||||
#define PORT_ALTR_16550_F32 26 /* Altera 16550 UART with 32 FIFOs */
|
||||
#define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */
|
||||
#define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */
|
||||
#define PORT_MAX_8250 28 /* max port ID */
|
||||
#define PORT_RT2880 29 /* Ralink RT2880 internal UART */
|
||||
#define PORT_MAX_8250 29 /* max port ID */
|
||||
|
||||
/*
|
||||
* ARM specific type numbers. These are not currently guaranteed
|
||||
|
||||
@@ -359,6 +359,7 @@
|
||||
#define UART_OMAP_SYSC 0x15 /* System configuration register */
|
||||
#define UART_OMAP_SYSS 0x16 /* System status register */
|
||||
#define UART_OMAP_WER 0x17 /* Wake-up enable register */
|
||||
#define UART_OMAP_TX_LVL 0x1a /* TX FIFO level register */
|
||||
|
||||
/*
|
||||
* These are the definitions for the MDR1 register
|
||||
|
||||
@@ -6,27 +6,31 @@
|
||||
* shared by the tty_port flags structures.
|
||||
*
|
||||
* Define ASYNCB_* for convenient use with {test,set,clear}_bit.
|
||||
*
|
||||
* Bits [0..ASYNCB_LAST_USER] are userspace defined/visible/changeable
|
||||
* [x] in the bit comments indicates the flag is defunct and no longer used.
|
||||
*/
|
||||
#define ASYNCB_HUP_NOTIFY 0 /* Notify getty on hangups and closes
|
||||
* on the callout port */
|
||||
#define ASYNCB_FOURPORT 1 /* Set OU1, OUT2 per AST Fourport settings */
|
||||
#define ASYNCB_SAK 2 /* Secure Attention Key (Orange book) */
|
||||
#define ASYNCB_SPLIT_TERMIOS 3 /* Separate termios for dialin/callout */
|
||||
#define ASYNCB_SPLIT_TERMIOS 3 /* [x] Separate termios for dialin/callout */
|
||||
#define ASYNCB_SPD_HI 4 /* Use 56000 instead of 38400 bps */
|
||||
#define ASYNCB_SPD_VHI 5 /* Use 115200 instead of 38400 bps */
|
||||
#define ASYNCB_SKIP_TEST 6 /* Skip UART test during autoconfiguration */
|
||||
#define ASYNCB_AUTO_IRQ 7 /* Do automatic IRQ during
|
||||
* autoconfiguration */
|
||||
#define ASYNCB_SESSION_LOCKOUT 8 /* Lock out cua opens based on session */
|
||||
#define ASYNCB_PGRP_LOCKOUT 9 /* Lock out cua opens based on pgrp */
|
||||
#define ASYNCB_CALLOUT_NOHUP 10 /* Don't do hangups for cua device */
|
||||
#define ASYNCB_SESSION_LOCKOUT 8 /* [x] Lock out cua opens based on session */
|
||||
#define ASYNCB_PGRP_LOCKOUT 9 /* [x] Lock out cua opens based on pgrp */
|
||||
#define ASYNCB_CALLOUT_NOHUP 10 /* [x] Don't do hangups for cua device */
|
||||
#define ASYNCB_HARDPPS_CD 11 /* Call hardpps when CD goes high */
|
||||
#define ASYNCB_SPD_SHI 12 /* Use 230400 instead of 38400 bps */
|
||||
#define ASYNCB_LOW_LATENCY 13 /* Request low latency behaviour */
|
||||
#define ASYNCB_BUGGY_UART 14 /* This is a buggy UART, skip some safety
|
||||
* checks. Note: can be dangerous! */
|
||||
#define ASYNCB_AUTOPROBE 15 /* Port was autoprobed by PCI or PNP code */
|
||||
#define ASYNCB_LAST_USER 15
|
||||
#define ASYNCB_AUTOPROBE 15 /* [x] Port was autoprobed by PCI/PNP code */
|
||||
#define ASYNCB_MAGIC_MULTIPLIER 16 /* Use special CLK or divisor */
|
||||
#define ASYNCB_LAST_USER 16
|
||||
|
||||
/* Internal flags used only by kernel */
|
||||
#define ASYNCB_INITIALIZED 31 /* Serial port was initialized */
|
||||
@@ -57,8 +61,11 @@
|
||||
#define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY)
|
||||
#define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
|
||||
#define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
|
||||
#define ASYNC_MAGIC_MULTIPLIER (1U << ASYNCB_MAGIC_MULTIPLIER)
|
||||
|
||||
#define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1)
|
||||
#define ASYNC_DEPRECATED (ASYNC_SESSION_LOCKOUT | ASYNC_PGRP_LOCKOUT | \
|
||||
ASYNC_CALLOUT_NOHUP | ASYNC_AUTOPROBE)
|
||||
#define ASYNC_USR_MASK (ASYNC_SPD_MASK|ASYNC_CALLOUT_NOHUP| \
|
||||
ASYNC_LOW_LATENCY)
|
||||
#define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI)
|
||||
|
||||
@@ -84,7 +84,4 @@ struct vt_setactivate {
|
||||
|
||||
#define VT_SETACTIVATE 0x560F /* Activate and set the mode of a console */
|
||||
|
||||
|
||||
#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1)
|
||||
|
||||
#endif /* _UAPI_LINUX_VT_H */
|
||||
|
||||
Reference in New Issue
Block a user