Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (49 commits) serial8250: ratelimit "too much work" error serial: bfin_sport_uart: speed up sport RX sample rate to be 3% faster serial: abstraction for 8250 legacy ports serial/imx: check that the buffer is non-empty before sending it out serial: mfd: add more baud rates support jsm: Remove the uart port on errors Alchemy: Add UART PM methods. 8250: allow platforms to override PM hook. altera_uart: Don't use plain integer as NULL pointer altera_uart: Fix missing prototype for registering an early console altera_uart: Fixup type usage of port flags altera_uart: Make it possible to use Altera UART and 8250 ports together altera_uart: Add support for different address strides altera_uart: Add support for getting mapbase and IRQ from resources altera_uart: Add support for polling mode (IRQ-less) serial: Factor out uart_poll_timeout() from 8250 driver serial: mark the 8250 driver as maintained serial: 8250: Don't delay after transmitter is ready. tty: MAINTAINERS: add drivers/serial/jsm/ as maintained driver vcs: invoke the vt update callback when /dev/vcs* is written to ...
This commit is contained in:
@@ -5,10 +5,15 @@
|
||||
#ifndef __ALTUART_H
|
||||
#define __ALTUART_H
|
||||
|
||||
#include <linux/init.h>
|
||||
|
||||
struct altera_uart_platform_uart {
|
||||
unsigned long mapbase; /* Physical address base */
|
||||
unsigned int irq; /* Interrupt vector */
|
||||
unsigned int uartclk; /* UART clock rate */
|
||||
unsigned int bus_shift; /* Bus shift (address stride) */
|
||||
};
|
||||
|
||||
int __init early_altera_uart_setup(struct altera_uart_platform_uart *platp);
|
||||
|
||||
#endif /* __ALTUART_H */
|
||||
|
||||
@@ -39,5 +39,6 @@ extern void putconsxy(struct vc_data *vc, unsigned char *p);
|
||||
|
||||
extern u16 vcs_scr_readw(struct vc_data *vc, const u16 *org);
|
||||
extern void vcs_scr_writew(struct vc_data *vc, u16 val, u16 *org);
|
||||
extern void vcs_scr_updated(struct vc_data *vc);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -35,6 +35,8 @@ struct plat_serial8250_port {
|
||||
void (*set_termios)(struct uart_port *,
|
||||
struct ktermios *new,
|
||||
struct ktermios *old);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned old);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -76,5 +78,11 @@ extern int serial8250_find_port_for_earlycon(void);
|
||||
extern int setup_early_serial8250_console(char *cmdline);
|
||||
extern void serial8250_do_set_termios(struct uart_port *port,
|
||||
struct ktermios *termios, struct ktermios *old);
|
||||
extern void serial8250_do_pm(struct uart_port *port, unsigned int state,
|
||||
unsigned int oldstate);
|
||||
|
||||
extern void serial8250_set_isa_configurator(void (*v)
|
||||
(int port, struct uart_port *up,
|
||||
unsigned short *capabilities));
|
||||
|
||||
#endif
|
||||
|
||||
@@ -289,6 +289,8 @@ struct uart_port {
|
||||
void (*set_termios)(struct uart_port *,
|
||||
struct ktermios *new,
|
||||
struct ktermios *old);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned int old);
|
||||
unsigned int irq; /* irq number */
|
||||
unsigned long irqflags; /* irq flags */
|
||||
unsigned int uartclk; /* base uart clock */
|
||||
@@ -411,6 +413,14 @@ unsigned int uart_get_baud_rate(struct uart_port *port, struct ktermios *termios
|
||||
unsigned int max);
|
||||
unsigned int uart_get_divisor(struct uart_port *port, unsigned int baud);
|
||||
|
||||
/* Base timer interval for polling */
|
||||
static inline int uart_poll_timeout(struct uart_port *port)
|
||||
{
|
||||
int timeout = port->timeout;
|
||||
|
||||
return timeout > 6 ? (timeout / 2 - 2) : 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Console helpers.
|
||||
*/
|
||||
|
||||
+2
-1
@@ -256,6 +256,7 @@ struct tty_operations;
|
||||
struct tty_struct {
|
||||
int magic;
|
||||
struct kref kref;
|
||||
struct device *dev;
|
||||
struct tty_driver *driver;
|
||||
const struct tty_operations *ops;
|
||||
int index;
|
||||
@@ -465,7 +466,7 @@ extern void proc_clear_tty(struct task_struct *p);
|
||||
extern struct tty_struct *get_current_tty(void);
|
||||
extern void tty_default_fops(struct file_operations *fops);
|
||||
extern struct tty_struct *alloc_tty_struct(void);
|
||||
extern void tty_add_file(struct tty_struct *tty, struct file *file);
|
||||
extern int tty_add_file(struct tty_struct *tty, struct file *file);
|
||||
extern void free_tty_struct(struct tty_struct *tty);
|
||||
extern void initialize_tty_struct(struct tty_struct *tty,
|
||||
struct tty_driver *driver, int idx);
|
||||
|
||||
@@ -224,6 +224,12 @@
|
||||
* unless the tty also has a valid tty->termiox pointer.
|
||||
*
|
||||
* Optional: Called under the termios lock
|
||||
*
|
||||
* int (*get_icount)(struct tty_struct *tty, struct serial_icounter *icount);
|
||||
*
|
||||
* Called when the device receives a TIOCGICOUNT ioctl. Passed a kernel
|
||||
* structure to complete. This method is optional and will only be called
|
||||
* if provided (otherwise EINVAL will be returned).
|
||||
*/
|
||||
|
||||
#include <linux/fs.h>
|
||||
@@ -232,6 +238,7 @@
|
||||
|
||||
struct tty_struct;
|
||||
struct tty_driver;
|
||||
struct serial_icounter_struct;
|
||||
|
||||
struct tty_operations {
|
||||
struct tty_struct * (*lookup)(struct tty_driver *driver,
|
||||
@@ -268,6 +275,8 @@ struct tty_operations {
|
||||
unsigned int set, unsigned int clear);
|
||||
int (*resize)(struct tty_struct *tty, struct winsize *ws);
|
||||
int (*set_termiox)(struct tty_struct *tty, struct termiox *tnew);
|
||||
int (*get_icount)(struct tty_struct *tty,
|
||||
struct serial_icounter_struct *icount);
|
||||
#ifdef CONFIG_CONSOLE_POLL
|
||||
int (*poll_init)(struct tty_driver *driver, int line, char *options);
|
||||
int (*poll_get_char)(struct tty_driver *driver, int line);
|
||||
|
||||
@@ -271,6 +271,8 @@ struct usb_serial_driver {
|
||||
int (*tiocmget)(struct tty_struct *tty, struct file *file);
|
||||
int (*tiocmset)(struct tty_struct *tty, struct file *file,
|
||||
unsigned int set, unsigned int clear);
|
||||
int (*get_icount)(struct tty_struct *tty,
|
||||
struct serial_icounter_struct *icount);
|
||||
/* Called by the tty layer for port level work. There may or may not
|
||||
be an attached tty at this point */
|
||||
void (*dtr_rts)(struct usb_serial_port *port, int on);
|
||||
|
||||
Reference in New Issue
Block a user