diff options
Diffstat (limited to 'drivers/tty/serial')
| -rw-r--r-- | drivers/tty/serial/68328serial.c | 29 | ||||
| -rw-r--r-- | drivers/tty/serial/68360serial.c | 1 | ||||
| -rw-r--r-- | drivers/tty/serial/bfin_5xx.c | 15 | ||||
| -rw-r--r-- | drivers/tty/serial/max3100.c | 2 | ||||
| -rw-r--r-- | drivers/tty/serial/max3107.c | 2 | ||||
| -rw-r--r-- | drivers/tty/serial/serial_cs.c | 1 | 
6 files changed, 24 insertions, 26 deletions
diff --git a/drivers/tty/serial/68328serial.c b/drivers/tty/serial/68328serial.c index be0ebce36e54..de0160e3f8c4 100644 --- a/drivers/tty/serial/68328serial.c +++ b/drivers/tty/serial/68328serial.c @@ -262,7 +262,7 @@ static void status_handle(struct m68k_serial *info, unsigned short status)  static void receive_chars(struct m68k_serial *info, unsigned short rx)  { -	struct tty_struct *tty = info->port.tty; +	struct tty_struct *tty = info->tty;  	m68328_uart *uart = &uart_addr[info->line];  	unsigned char ch, flag; @@ -329,7 +329,7 @@ static void transmit_chars(struct m68k_serial *info)  		goto clear_and_return;  	} -	if((info->xmit_cnt <= 0) || info->port.tty->stopped) { +	if((info->xmit_cnt <= 0) || info->tty->stopped) {  		/* That's peculiar... TX ints off */  		uart->ustcnt &= ~USTCNT_TX_INTR_MASK;  		goto clear_and_return; @@ -383,7 +383,7 @@ static void do_softint(struct work_struct *work)  	struct m68k_serial	*info = container_of(work, struct m68k_serial, tqueue);  	struct tty_struct	*tty; -	tty = info->port.tty; +	tty = info->tty;  	if (!tty)  		return;  #if 0 @@ -407,7 +407,7 @@ static void do_serial_hangup(struct work_struct *work)  	struct m68k_serial	*info = container_of(work, struct m68k_serial, tqueue_hangup);  	struct tty_struct	*tty; -	tty = info->port.tty; +	tty = info->tty;  	if (!tty)  		return; @@ -451,8 +451,8 @@ static int startup(struct m68k_serial * info)  	uart->ustcnt = USTCNT_UEN | USTCNT_RXEN | USTCNT_RX_INTR_MASK;  #endif -	if (info->port.tty) -		clear_bit(TTY_IO_ERROR, &info->port.tty->flags); +	if (info->tty) +		clear_bit(TTY_IO_ERROR, &info->tty->flags);  	info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;  	/* @@ -486,8 +486,8 @@ static void shutdown(struct m68k_serial * info)  		info->xmit_buf = 0;  	} -	if (info->port.tty) -		set_bit(TTY_IO_ERROR, &info->port.tty->flags); +	if (info->tty) +		set_bit(TTY_IO_ERROR, &info->tty->flags);  	info->flags &= ~S_INITIALIZED;  	local_irq_restore(flags); @@ -553,9 +553,9 @@ static void change_speed(struct m68k_serial *info)  	unsigned cflag;  	int	i; -	if (!info->port.tty || !info->port.tty->termios) +	if (!info->tty || !info->tty->termios)  		return; -	cflag = info->port.tty->termios->c_cflag; +	cflag = info->tty->termios->c_cflag;  	if (!(port = info->port))  		return; @@ -970,7 +970,6 @@ static void send_break(struct m68k_serial * info, unsigned int duration)  static int rs_ioctl(struct tty_struct *tty, struct file * file,  		    unsigned int cmd, unsigned long arg)  { -	int error;  	struct m68k_serial * info = (struct m68k_serial *)tty->driver_data;  	int retval; @@ -1104,7 +1103,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)  	tty_ldisc_flush(tty);  	tty->closing = 0;  	info->event = 0; -	info->port.tty = NULL; +	info->tty = NULL;  #warning "This is not and has never been valid so fix it"	  #if 0  	if (tty->ldisc.num != ldiscs[N_TTY].num) { @@ -1142,7 +1141,7 @@ void rs_hangup(struct tty_struct *tty)  	info->event = 0;  	info->count = 0;  	info->flags &= ~S_NORMAL_ACTIVE; -	info->port.tty = NULL; +	info->tty = NULL;  	wake_up_interruptible(&info->open_wait);  } @@ -1261,7 +1260,7 @@ int rs_open(struct tty_struct *tty, struct file * filp)  	info->count++;  	tty->driver_data = info; -	info->port.tty = tty; +	info->tty = tty;  	/*  	 * Start up serial port @@ -1338,7 +1337,7 @@ rs68328_init(void)  	    info = &m68k_soft[i];  	    info->magic = SERIAL_MAGIC;  	    info->port = (int) &uart_addr[i]; -	    info->port.tty = NULL; +	    info->tty = NULL;  	    info->irq = uart_irqs[i];  	    info->custom_divisor = 16;  	    info->close_delay = 50; diff --git a/drivers/tty/serial/68360serial.c b/drivers/tty/serial/68360serial.c index 88b13356ec10..bc21eeae8fde 100644 --- a/drivers/tty/serial/68360serial.c +++ b/drivers/tty/serial/68360serial.c @@ -2428,6 +2428,7 @@ static const struct tty_operations rs_360_ops = {  	/* .read_proc = rs_360_read_proc, */  	.tiocmget = rs_360_tiocmget,  	.tiocmset = rs_360_tiocmset, +	.get_icount = rs_360_get_icount,  };  static int __init rs_360_init(void) diff --git a/drivers/tty/serial/bfin_5xx.c b/drivers/tty/serial/bfin_5xx.c index e381b895b04d..9b1ff2b6bb37 100644 --- a/drivers/tty/serial/bfin_5xx.c +++ b/drivers/tty/serial/bfin_5xx.c @@ -370,10 +370,8 @@ static irqreturn_t bfin_serial_rx_int(int irq, void *dev_id)  {  	struct bfin_serial_port *uart = dev_id; -	spin_lock(&uart->port.lock);  	while (UART_GET_LSR(uart) & DR)  		bfin_serial_rx_chars(uart); -	spin_unlock(&uart->port.lock);  	return IRQ_HANDLED;  } @@ -490,9 +488,8 @@ void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart)  {  	int x_pos, pos; -	dma_disable_irq(uart->tx_dma_channel); -	dma_disable_irq(uart->rx_dma_channel); -	spin_lock_bh(&uart->port.lock); +	dma_disable_irq_nosync(uart->rx_dma_channel); +	spin_lock_bh(&uart->rx_lock);  	/* 2D DMA RX buffer ring is used. Because curr_y_count and  	 * curr_x_count can't be read as an atomic operation, @@ -523,8 +520,7 @@ void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart)  		uart->rx_dma_buf.tail = uart->rx_dma_buf.head;  	} -	spin_unlock_bh(&uart->port.lock); -	dma_enable_irq(uart->tx_dma_channel); +	spin_unlock_bh(&uart->rx_lock);  	dma_enable_irq(uart->rx_dma_channel);  	mod_timer(&(uart->rx_dma_timer), jiffies + DMA_RX_FLUSH_JIFFIES); @@ -571,7 +567,7 @@ static irqreturn_t bfin_serial_dma_rx_int(int irq, void *dev_id)  	unsigned short irqstat;  	int x_pos, pos; -	spin_lock(&uart->port.lock); +	spin_lock(&uart->rx_lock);  	irqstat = get_dma_curr_irqstat(uart->rx_dma_channel);  	clear_dma_irqstat(uart->rx_dma_channel); @@ -589,7 +585,7 @@ static irqreturn_t bfin_serial_dma_rx_int(int irq, void *dev_id)  		uart->rx_dma_buf.tail = uart->rx_dma_buf.head;  	} -	spin_unlock(&uart->port.lock); +	spin_unlock(&uart->rx_lock);  	return IRQ_HANDLED;  } @@ -1332,6 +1328,7 @@ static int bfin_serial_probe(struct platform_device *pdev)  		}  #ifdef CONFIG_SERIAL_BFIN_DMA +		spin_lock_init(&uart->rx_lock);  		uart->tx_done	    = 1;  		uart->tx_count	    = 0; diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c index beb1afa27d8d..7b951adac54b 100644 --- a/drivers/tty/serial/max3100.c +++ b/drivers/tty/serial/max3100.c @@ -601,7 +601,7 @@ static int max3100_startup(struct uart_port *port)  	s->rts = 0;  	sprintf(b, "max3100-%d", s->minor); -	s->workqueue = create_freezeable_workqueue(b); +	s->workqueue = create_freezable_workqueue(b);  	if (!s->workqueue) {  		dev_warn(&s->spi->dev, "cannot create workqueue\n");  		return -EBUSY; diff --git a/drivers/tty/serial/max3107.c b/drivers/tty/serial/max3107.c index 910870edf708..750b4f627315 100644 --- a/drivers/tty/serial/max3107.c +++ b/drivers/tty/serial/max3107.c @@ -833,7 +833,7 @@ static int max3107_startup(struct uart_port *port)  	struct max3107_port *s = container_of(port, struct max3107_port, port);  	/* Initialize work queue */ -	s->workqueue = create_freezeable_workqueue("max3107"); +	s->workqueue = create_freezable_workqueue("max3107");  	if (!s->workqueue) {  		dev_err(&s->spi->dev, "Workqueue creation failed\n");  		return -EBUSY; diff --git a/drivers/tty/serial/serial_cs.c b/drivers/tty/serial/serial_cs.c index 93760b2ea172..1ef4df9bf7e4 100644 --- a/drivers/tty/serial/serial_cs.c +++ b/drivers/tty/serial/serial_cs.c @@ -712,6 +712,7 @@ static struct pcmcia_device_id serial_ids[] = {  	PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf),  	PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0e01),  	PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0a05), +	PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0b05),  	PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x1101),  	PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0104, 0x0070),  	PCMCIA_MFC_DEVICE_MANF_CARD(1, 0x0101, 0x0562),  | 
