Merge 3.4-rc4 into tty-next
This resolves the merge problem with: drivers/tty/serial/pch_uart.c Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
* Copyright (C) 1998 R.E.Wolff@BitWizard.nl
|
||||
*
|
||||
* written for the SX serial driver.
|
||||
* Contains the code that should be shared over all the serial drivers.
|
||||
*
|
||||
* Version 0.1 -- December, 1998.
|
||||
*/
|
||||
@@ -12,45 +11,8 @@
|
||||
#ifndef GENERIC_SERIAL_H
|
||||
#define GENERIC_SERIAL_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/tty.h>
|
||||
|
||||
struct real_driver {
|
||||
void (*disable_tx_interrupts) (void *);
|
||||
void (*enable_tx_interrupts) (void *);
|
||||
void (*disable_rx_interrupts) (void *);
|
||||
void (*enable_rx_interrupts) (void *);
|
||||
void (*shutdown_port) (void*);
|
||||
int (*set_real_termios) (void*);
|
||||
int (*chars_in_buffer) (void*);
|
||||
void (*close) (void*);
|
||||
void (*hungup) (void*);
|
||||
void (*getserial) (void*, struct serial_struct *sp);
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct gs_port {
|
||||
int magic;
|
||||
struct tty_port port;
|
||||
unsigned char *xmit_buf;
|
||||
int xmit_head;
|
||||
int xmit_tail;
|
||||
int xmit_cnt;
|
||||
struct mutex port_write_mutex;
|
||||
unsigned long event;
|
||||
unsigned short closing_wait;
|
||||
int close_delay;
|
||||
struct real_driver *rd;
|
||||
int wakeup_chars;
|
||||
int baud_base;
|
||||
int baud;
|
||||
int custom_divisor;
|
||||
spinlock_t driver_lock;
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#warning Use of this header is deprecated.
|
||||
#warning Since nobody sets the constants defined here for you, you should not, in any case, use them. Including the header is thus pointless.
|
||||
|
||||
/* Flags */
|
||||
/* Warning: serial.h defines some ASYNC_ flags, they say they are "only"
|
||||
@@ -60,8 +22,6 @@ struct gs_port {
|
||||
#define GS_RX_INTEN 0x00400000
|
||||
#define GS_ACTIVE 0x00200000
|
||||
|
||||
|
||||
|
||||
#define GS_TYPE_NORMAL 1
|
||||
|
||||
#define GS_DEBUG_FLUSH 0x00000001
|
||||
@@ -72,24 +32,4 @@ struct gs_port {
|
||||
#define GS_DEBUG_FLOW 0x00000020
|
||||
#define GS_DEBUG_WRITE 0x00000040
|
||||
|
||||
#ifdef __KERNEL__
|
||||
int gs_put_char(struct tty_struct *tty, unsigned char ch);
|
||||
int gs_write(struct tty_struct *tty,
|
||||
const unsigned char *buf, int count);
|
||||
int gs_write_room(struct tty_struct *tty);
|
||||
int gs_chars_in_buffer(struct tty_struct *tty);
|
||||
void gs_flush_buffer(struct tty_struct *tty);
|
||||
void gs_flush_chars(struct tty_struct *tty);
|
||||
void gs_stop(struct tty_struct *tty);
|
||||
void gs_start(struct tty_struct *tty);
|
||||
void gs_hangup(struct tty_struct *tty);
|
||||
int gs_block_til_ready(void *port, struct file *filp);
|
||||
void gs_close(struct tty_struct *tty, struct file *filp);
|
||||
void gs_set_termios (struct tty_struct * tty,
|
||||
struct ktermios * old_termios);
|
||||
int gs_init_port(struct gs_port *port);
|
||||
int gs_setserial(struct gs_port *port, struct serial_struct __user *sp);
|
||||
int gs_getserial(struct gs_port *port, struct serial_struct __user *sp);
|
||||
void gs_got_break(struct gs_port *port);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#define __ISDN_H__
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/tty.h>
|
||||
|
||||
#define ISDN_MAX_DRIVERS 32
|
||||
#define ISDN_MAX_CHANNELS 64
|
||||
@@ -392,21 +393,8 @@ typedef struct isdn_net_dev_s {
|
||||
/*======================= Start of ISDN-tty stuff ===========================*/
|
||||
|
||||
#define ISDN_ASYNC_MAGIC 0x49344C01 /* for paranoia-checking */
|
||||
#define ISDN_ASYNC_INITIALIZED 0x80000000 /* port was initialized */
|
||||
#define ISDN_ASYNC_CALLOUT_ACTIVE 0x40000000 /* Call out device active */
|
||||
#define ISDN_ASYNC_NORMAL_ACTIVE 0x20000000 /* Normal device active */
|
||||
#define ISDN_ASYNC_CLOSING 0x08000000 /* Serial port is closing */
|
||||
#define ISDN_ASYNC_CTS_FLOW 0x04000000 /* Do CTS flow control */
|
||||
#define ISDN_ASYNC_CHECK_CD 0x02000000 /* i.e., CLOCAL */
|
||||
#define ISDN_ASYNC_HUP_NOTIFY 0x0001 /* Notify tty on hangups/closes */
|
||||
#define ISDN_ASYNC_SESSION_LOCKOUT 0x0100 /* Lock cua opens on session */
|
||||
#define ISDN_ASYNC_PGRP_LOCKOUT 0x0200 /* Lock cua opens on pgrp */
|
||||
#define ISDN_ASYNC_CALLOUT_NOHUP 0x0400 /* No hangup for cui */
|
||||
#define ISDN_ASYNC_SPLIT_TERMIOS 0x0008 /* Sep. termios for dialin/out */
|
||||
#define ISDN_SERIAL_XMIT_SIZE 1024 /* Default bufsize for write */
|
||||
#define ISDN_SERIAL_XMIT_MAX 4000 /* Maximum bufsize for write */
|
||||
#define ISDN_SERIAL_TYPE_NORMAL 1
|
||||
#define ISDN_SERIAL_TYPE_CALLOUT 2
|
||||
|
||||
#ifdef CONFIG_ISDN_AUDIO
|
||||
/* For using sk_buffs with audio we need some private variables
|
||||
@@ -448,17 +436,12 @@ typedef struct atemu {
|
||||
/* Private data (similar to async_struct in <linux/serial.h>) */
|
||||
typedef struct modem_info {
|
||||
int magic;
|
||||
struct module *owner;
|
||||
int flags; /* defined in tty.h */
|
||||
struct tty_port port;
|
||||
int x_char; /* xon/xoff character */
|
||||
int mcr; /* Modem control register */
|
||||
int msr; /* Modem status register */
|
||||
int lsr; /* Line status register */
|
||||
int line;
|
||||
int count; /* # of fd on device */
|
||||
int blocked_open; /* # of blocked opens */
|
||||
long session; /* Session of opening process */
|
||||
long pgrp; /* pgrp of opening process */
|
||||
int online; /* 1 = B-Channel is up, drop data */
|
||||
/* 2 = B-Channel is up, deliver d.*/
|
||||
int dialing; /* Dial in progress or ATA */
|
||||
@@ -478,7 +461,6 @@ typedef struct modem_info {
|
||||
int send_outstanding;/* # of outstanding send-requests */
|
||||
int xmit_size; /* max. # of chars in xmit_buf */
|
||||
int xmit_count; /* # of chars in xmit_buf */
|
||||
unsigned char *xmit_buf; /* transmit buffer */
|
||||
struct sk_buff_head xmit_queue; /* transmit queue */
|
||||
atomic_t xmit_lock; /* Semaphore for isdn_tty_write */
|
||||
#ifdef CONFIG_ISDN_AUDIO
|
||||
@@ -496,11 +478,7 @@ typedef struct modem_info {
|
||||
struct T30_s *fax; /* T30 Fax Group 3 data/interface */
|
||||
int faxonline; /* Fax-channel status */
|
||||
#endif
|
||||
struct tty_struct *tty; /* Pointer to corresponding tty */
|
||||
atemu emu; /* AT-emulator data */
|
||||
struct ktermios normal_termios; /* For saving termios structs */
|
||||
struct ktermios callout_termios;
|
||||
wait_queue_head_t open_wait, close_wait;
|
||||
spinlock_t readlock;
|
||||
} modem_info;
|
||||
|
||||
|
||||
17
include/linux/of_serial.h
Normal file
17
include/linux/of_serial.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef __LINUX_OF_SERIAL_H
|
||||
#define __LINUX_OF_SERIAL_H
|
||||
|
||||
/*
|
||||
* FIXME remove this file when tegra finishes conversion to open firmware,
|
||||
* expectation is that all quirks will then be self-contained in
|
||||
* drivers/tty/serial/of_serial.c.
|
||||
*/
|
||||
#ifdef CONFIG_ARCH_TEGRA
|
||||
extern void tegra_serial_handle_break(struct uart_port *port);
|
||||
#else
|
||||
static inline void tegra_serial_handle_break(struct uart_port *port)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_OF_SERIAL */
|
||||
@@ -38,6 +38,7 @@ struct plat_serial8250_port {
|
||||
int (*handle_irq)(struct uart_port *);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned old);
|
||||
void (*handle_break)(struct uart_port *);
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -310,6 +310,7 @@ struct uart_port {
|
||||
int (*handle_irq)(struct uart_port *);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned int old);
|
||||
void (*handle_break)(struct uart_port *);
|
||||
unsigned int irq; /* irq number */
|
||||
unsigned long irqflags; /* irq flags */
|
||||
unsigned int uartclk; /* base uart clock */
|
||||
@@ -533,6 +534,10 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
|
||||
static inline int uart_handle_break(struct uart_port *port)
|
||||
{
|
||||
struct uart_state *state = port->state;
|
||||
|
||||
if (port->handle_break)
|
||||
port->handle_break(port);
|
||||
|
||||
#ifdef SUPPORT_SYSRQ
|
||||
if (port->cons && port->cons->index == port->line) {
|
||||
if (!port->sysrq) {
|
||||
|
||||
Reference in New Issue
Block a user