diff options
| author | Alan Cox <alan@linux.intel.com> | 2009-09-19 16:13:28 -0400 |
|---|---|---|
| committer | Live-CD User <linux@linux.site> | 2009-09-19 16:13:28 -0400 |
| commit | ebd2c8f6d2ec4012c267ecb95e72a57b8355a705 (patch) | |
| tree | 36a01b2ac2520bf7e0d9362b8da17d3c894da2db | |
| parent | 11d85d7b2ecc72fe752bba55389e7d11907528af (diff) | |
serial: kill off uart_info
We moved this into uart_state, now move the fields out of the separate
structure and kill it off.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
50 files changed, 422 insertions, 432 deletions
diff --git a/arch/mn10300/kernel/asm-offsets.c b/arch/mn10300/kernel/asm-offsets.c index 2646fcbd7d89..82b40079ad76 100644 --- a/arch/mn10300/kernel/asm-offsets.c +++ b/arch/mn10300/kernel/asm-offsets.c | |||
| @@ -95,7 +95,7 @@ void foo(void) | |||
| 95 | OFFSET(__iobase, mn10300_serial_port, _iobase); | 95 | OFFSET(__iobase, mn10300_serial_port, _iobase); |
| 96 | 96 | ||
| 97 | DEFINE(__UART_XMIT_SIZE, UART_XMIT_SIZE); | 97 | DEFINE(__UART_XMIT_SIZE, UART_XMIT_SIZE); |
| 98 | OFFSET(__xmit_buffer, uart_info, xmit.buf); | 98 | OFFSET(__xmit_buffer, uart_state, xmit.buf); |
| 99 | OFFSET(__xmit_head, uart_info, xmit.head); | 99 | OFFSET(__xmit_head, uart_state, xmit.head); |
| 100 | OFFSET(__xmit_tail, uart_info, xmit.tail); | 100 | OFFSET(__xmit_tail, uart_state, xmit.tail); |
| 101 | } | 101 | } |
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c index cb6d85d7ff43..1e3d19397a59 100644 --- a/drivers/serial/21285.c +++ b/drivers/serial/21285.c | |||
| @@ -86,7 +86,7 @@ static void serial21285_enable_ms(struct uart_port *port) | |||
| 86 | static irqreturn_t serial21285_rx_chars(int irq, void *dev_id) | 86 | static irqreturn_t serial21285_rx_chars(int irq, void *dev_id) |
| 87 | { | 87 | { |
| 88 | struct uart_port *port = dev_id; | 88 | struct uart_port *port = dev_id; |
| 89 | struct tty_struct *tty = port->info->port.tty; | 89 | struct tty_struct *tty = port->state->port.tty; |
| 90 | unsigned int status, ch, flag, rxs, max_count = 256; | 90 | unsigned int status, ch, flag, rxs, max_count = 256; |
| 91 | 91 | ||
| 92 | status = *CSR_UARTFLG; | 92 | status = *CSR_UARTFLG; |
| @@ -124,7 +124,7 @@ static irqreturn_t serial21285_rx_chars(int irq, void *dev_id) | |||
| 124 | static irqreturn_t serial21285_tx_chars(int irq, void *dev_id) | 124 | static irqreturn_t serial21285_tx_chars(int irq, void *dev_id) |
| 125 | { | 125 | { |
| 126 | struct uart_port *port = dev_id; | 126 | struct uart_port *port = dev_id; |
| 127 | struct circ_buf *xmit = &port->info->xmit; | 127 | struct circ_buf *xmit = &port->state->xmit; |
| 128 | int count = 256; | 128 | int count = 256; |
| 129 | 129 | ||
| 130 | if (port->x_char) { | 130 | if (port->x_char) { |
| @@ -235,8 +235,8 @@ serial21285_set_termios(struct uart_port *port, struct ktermios *termios, | |||
| 235 | baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); | 235 | baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); |
| 236 | quot = uart_get_divisor(port, baud); | 236 | quot = uart_get_divisor(port, baud); |
| 237 | 237 | ||
| 238 | if (port->info && port->info->port.tty) { | 238 | if (port->state && port->state->port.tty) { |
| 239 | struct tty_struct *tty = port->info->port.tty; | 239 | struct tty_struct *tty = port->state->port.tty; |
| 240 | unsigned int b = port->uartclk / (16 * quot); | 240 | unsigned int b = port->uartclk / (16 * quot); |
| 241 | tty_encode_baud_rate(tty, b, b); | 241 | tty_encode_baud_rate(tty, b, b); |
| 242 | } | 242 | } |
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index 1fd4894d9b51..e415c5eca599 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
| @@ -1382,7 +1382,7 @@ static void serial8250_enable_ms(struct uart_port *port) | |||
| 1382 | static void | 1382 | static void |
| 1383 | receive_chars(struct uart_8250_port *up, unsigned int *status) | 1383 | receive_chars(struct uart_8250_port *up, unsigned int *status) |
| 1384 | { | 1384 | { |
| 1385 | struct tty_struct *tty = up->port.info->port.tty; | 1385 | struct tty_struct *tty = up->port.state->port.tty; |
| 1386 | unsigned char ch, lsr = *status; | 1386 | unsigned char ch, lsr = *status; |
| 1387 | int max_count = 256; | 1387 | int max_count = 256; |
| 1388 | char flag; | 1388 | char flag; |
| @@ -1457,7 +1457,7 @@ ignore_char: | |||
| 1457 | 1457 | ||
| 1458 | static void transmit_chars(struct uart_8250_port *up) | 1458 | static void transmit_chars(struct uart_8250_port *up) |
| 1459 | { | 1459 | { |
| 1460 | struct circ_buf *xmit = &up->port.info->xmit; | 1460 | struct circ_buf *xmit = &up->port.state->xmit; |
| 1461 | int count; | 1461 | int count; |
| 1462 | 1462 | ||
| 1463 | if (up->port.x_char) { | 1463 | if (up->port.x_char) { |
| @@ -1500,7 +1500,7 @@ static unsigned int check_modem_status(struct uart_8250_port *up) | |||
| 1500 | status |= up->msr_saved_flags; | 1500 | status |= up->msr_saved_flags; |
| 1501 | up->msr_saved_flags = 0; | 1501 | up->msr_saved_flags = 0; |
| 1502 | if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI && | 1502 | if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI && |
| 1503 | up->port.info != NULL) { | 1503 | up->port.state != NULL) { |
| 1504 | if (status & UART_MSR_TERI) | 1504 | if (status & UART_MSR_TERI) |
| 1505 | up->port.icount.rng++; | 1505 | up->port.icount.rng++; |
| 1506 | if (status & UART_MSR_DDSR) | 1506 | if (status & UART_MSR_DDSR) |
| @@ -1510,7 +1510,7 @@ static unsigned int check_modem_status(struct uart_8250_port *up) | |||
| 1510 | if (status & UART_MSR_DCTS) | 1510 | if (status & UART_MSR_DCTS) |
| 1511 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); | 1511 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); |
| 1512 | 1512 | ||
| 1513 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 1513 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 1514 | } | 1514 | } |
| 1515 | 1515 | ||
| 1516 | return status; | 1516 | return status; |
| @@ -1764,7 +1764,7 @@ static void serial8250_backup_timeout(unsigned long data) | |||
| 1764 | up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS; | 1764 | up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS; |
| 1765 | spin_unlock_irqrestore(&up->port.lock, flags); | 1765 | spin_unlock_irqrestore(&up->port.lock, flags); |
| 1766 | if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) && | 1766 | if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) && |
| 1767 | (!uart_circ_empty(&up->port.info->xmit) || up->port.x_char) && | 1767 | (!uart_circ_empty(&up->port.state->xmit) || up->port.x_char) && |
| 1768 | (lsr & UART_LSR_THRE)) { | 1768 | (lsr & UART_LSR_THRE)) { |
| 1769 | iir &= ~(UART_IIR_ID | UART_IIR_NO_INT); | 1769 | iir &= ~(UART_IIR_ID | UART_IIR_NO_INT); |
| 1770 | iir |= UART_IIR_THRI; | 1770 | iir |= UART_IIR_THRI; |
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c index 58a4879c7e48..39032413d4a1 100644 --- a/drivers/serial/amba-pl010.c +++ b/drivers/serial/amba-pl010.c | |||
| @@ -117,7 +117,7 @@ static void pl010_enable_ms(struct uart_port *port) | |||
| 117 | 117 | ||
| 118 | static void pl010_rx_chars(struct uart_amba_port *uap) | 118 | static void pl010_rx_chars(struct uart_amba_port *uap) |
| 119 | { | 119 | { |
| 120 | struct tty_struct *tty = uap->port.info->port.tty; | 120 | struct tty_struct *tty = uap->port.state->port.tty; |
| 121 | unsigned int status, ch, flag, rsr, max_count = 256; | 121 | unsigned int status, ch, flag, rsr, max_count = 256; |
| 122 | 122 | ||
| 123 | status = readb(uap->port.membase + UART01x_FR); | 123 | status = readb(uap->port.membase + UART01x_FR); |
| @@ -172,7 +172,7 @@ static void pl010_rx_chars(struct uart_amba_port *uap) | |||
| 172 | 172 | ||
| 173 | static void pl010_tx_chars(struct uart_amba_port *uap) | 173 | static void pl010_tx_chars(struct uart_amba_port *uap) |
| 174 | { | 174 | { |
| 175 | struct circ_buf *xmit = &uap->port.info->xmit; | 175 | struct circ_buf *xmit = &uap->port.state->xmit; |
| 176 | int count; | 176 | int count; |
| 177 | 177 | ||
| 178 | if (uap->port.x_char) { | 178 | if (uap->port.x_char) { |
| @@ -225,7 +225,7 @@ static void pl010_modem_status(struct uart_amba_port *uap) | |||
| 225 | if (delta & UART01x_FR_CTS) | 225 | if (delta & UART01x_FR_CTS) |
| 226 | uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS); | 226 | uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS); |
| 227 | 227 | ||
| 228 | wake_up_interruptible(&uap->port.info->delta_msr_wait); | 228 | wake_up_interruptible(&uap->port.state->delta_msr_wait); |
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | static irqreturn_t pl010_int(int irq, void *dev_id) | 231 | static irqreturn_t pl010_int(int irq, void *dev_id) |
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index 72ba0c6d3551..ef82a34baf0f 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c | |||
| @@ -124,7 +124,7 @@ static void pl011_enable_ms(struct uart_port *port) | |||
| 124 | 124 | ||
| 125 | static void pl011_rx_chars(struct uart_amba_port *uap) | 125 | static void pl011_rx_chars(struct uart_amba_port *uap) |
| 126 | { | 126 | { |
| 127 | struct tty_struct *tty = uap->port.info->port.tty; | 127 | struct tty_struct *tty = uap->port.state->port.tty; |
| 128 | unsigned int status, ch, flag, max_count = 256; | 128 | unsigned int status, ch, flag, max_count = 256; |
| 129 | 129 | ||
| 130 | status = readw(uap->port.membase + UART01x_FR); | 130 | status = readw(uap->port.membase + UART01x_FR); |
| @@ -175,7 +175,7 @@ static void pl011_rx_chars(struct uart_amba_port *uap) | |||
| 175 | 175 | ||
| 176 | static void pl011_tx_chars(struct uart_amba_port *uap) | 176 | static void pl011_tx_chars(struct uart_amba_port *uap) |
| 177 | { | 177 | { |
| 178 | struct circ_buf *xmit = &uap->port.info->xmit; | 178 | struct circ_buf *xmit = &uap->port.state->xmit; |
| 179 | int count; | 179 | int count; |
| 180 | 180 | ||
| 181 | if (uap->port.x_char) { | 181 | if (uap->port.x_char) { |
| @@ -226,7 +226,7 @@ static void pl011_modem_status(struct uart_amba_port *uap) | |||
| 226 | if (delta & UART01x_FR_CTS) | 226 | if (delta & UART01x_FR_CTS) |
| 227 | uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS); | 227 | uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS); |
| 228 | 228 | ||
| 229 | wake_up_interruptible(&uap->port.info->delta_msr_wait); | 229 | wake_up_interruptible(&uap->port.state->delta_msr_wait); |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | static irqreturn_t pl011_int(int irq, void *dev_id) | 232 | static irqreturn_t pl011_int(int irq, void *dev_id) |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 607d43a31048..963e3c12af41 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
| @@ -427,7 +427,7 @@ static void atmel_rx_chars(struct uart_port *port) | |||
| 427 | */ | 427 | */ |
| 428 | static void atmel_tx_chars(struct uart_port *port) | 428 | static void atmel_tx_chars(struct uart_port *port) |
| 429 | { | 429 | { |
| 430 | struct circ_buf *xmit = &port->info->xmit; | 430 | struct circ_buf *xmit = &port->state->xmit; |
| 431 | 431 | ||
| 432 | if (port->x_char && UART_GET_CSR(port) & ATMEL_US_TXRDY) { | 432 | if (port->x_char && UART_GET_CSR(port) & ATMEL_US_TXRDY) { |
| 433 | UART_PUT_CHAR(port, port->x_char); | 433 | UART_PUT_CHAR(port, port->x_char); |
| @@ -560,7 +560,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id) | |||
| 560 | static void atmel_tx_dma(struct uart_port *port) | 560 | static void atmel_tx_dma(struct uart_port *port) |
| 561 | { | 561 | { |
| 562 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); | 562 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); |
| 563 | struct circ_buf *xmit = &port->info->xmit; | 563 | struct circ_buf *xmit = &port->state->xmit; |
| 564 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; | 564 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; |
| 565 | int count; | 565 | int count; |
| 566 | 566 | ||
| @@ -663,14 +663,14 @@ static void atmel_rx_from_ring(struct uart_port *port) | |||
| 663 | * uart_start(), which takes the lock. | 663 | * uart_start(), which takes the lock. |
| 664 | */ | 664 | */ |
| 665 | spin_unlock(&port->lock); | 665 | spin_unlock(&port->lock); |
| 666 | tty_flip_buffer_push(port->info->port.tty); | 666 | tty_flip_buffer_push(port->state->port.tty); |
| 667 | spin_lock(&port->lock); | 667 | spin_lock(&port->lock); |
| 668 | } | 668 | } |
| 669 | 669 | ||
| 670 | static void atmel_rx_from_dma(struct uart_port *port) | 670 | static void atmel_rx_from_dma(struct uart_port *port) |
| 671 | { | 671 | { |
| 672 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); | 672 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); |
| 673 | struct tty_struct *tty = port->info->port.tty; | 673 | struct tty_struct *tty = port->state->port.tty; |
| 674 | struct atmel_dma_buffer *pdc; | 674 | struct atmel_dma_buffer *pdc; |
| 675 | int rx_idx = atmel_port->pdc_rx_idx; | 675 | int rx_idx = atmel_port->pdc_rx_idx; |
| 676 | unsigned int head; | 676 | unsigned int head; |
| @@ -776,7 +776,7 @@ static void atmel_tasklet_func(unsigned long data) | |||
| 776 | if (status_change & ATMEL_US_CTS) | 776 | if (status_change & ATMEL_US_CTS) |
| 777 | uart_handle_cts_change(port, !(status & ATMEL_US_CTS)); | 777 | uart_handle_cts_change(port, !(status & ATMEL_US_CTS)); |
| 778 | 778 | ||
| 779 | wake_up_interruptible(&port->info->delta_msr_wait); | 779 | wake_up_interruptible(&port->state->delta_msr_wait); |
| 780 | 780 | ||
| 781 | atmel_port->irq_status_prev = status; | 781 | atmel_port->irq_status_prev = status; |
| 782 | } | 782 | } |
| @@ -795,7 +795,7 @@ static void atmel_tasklet_func(unsigned long data) | |||
| 795 | static int atmel_startup(struct uart_port *port) | 795 | static int atmel_startup(struct uart_port *port) |
| 796 | { | 796 | { |
| 797 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); | 797 | struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); |
| 798 | struct tty_struct *tty = port->info->port.tty; | 798 | struct tty_struct *tty = port->state->port.tty; |
| 799 | int retval; | 799 | int retval; |
| 800 | 800 | ||
| 801 | /* | 801 | /* |
| @@ -854,7 +854,7 @@ static int atmel_startup(struct uart_port *port) | |||
| 854 | } | 854 | } |
| 855 | if (atmel_use_dma_tx(port)) { | 855 | if (atmel_use_dma_tx(port)) { |
| 856 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; | 856 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; |
| 857 | struct circ_buf *xmit = &port->info->xmit; | 857 | struct circ_buf *xmit = &port->state->xmit; |
| 858 | 858 | ||
| 859 | pdc->buf = xmit->buf; | 859 | pdc->buf = xmit->buf; |
| 860 | pdc->dma_addr = dma_map_single(port->dev, | 860 | pdc->dma_addr = dma_map_single(port->dev, |
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index 4fff4e524034..50abb7e557f4 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c | |||
| @@ -144,7 +144,7 @@ static void bfin_serial_stop_tx(struct uart_port *port) | |||
| 144 | { | 144 | { |
| 145 | struct bfin_serial_port *uart = (struct bfin_serial_port *)port; | 145 | struct bfin_serial_port *uart = (struct bfin_serial_port *)port; |
| 146 | #ifdef CONFIG_SERIAL_BFIN_DMA | 146 | #ifdef CONFIG_SERIAL_BFIN_DMA |
| 147 | struct circ_buf *xmit = &uart->port.info->xmit; | 147 | struct circ_buf *xmit = &uart->port.state->xmit; |
| 148 | #endif | 148 | #endif |
| 149 | 149 | ||
| 150 | while (!(UART_GET_LSR(uart) & TEMT)) | 150 | while (!(UART_GET_LSR(uart) & TEMT)) |
| @@ -171,7 +171,7 @@ static void bfin_serial_stop_tx(struct uart_port *port) | |||
| 171 | static void bfin_serial_start_tx(struct uart_port *port) | 171 | static void bfin_serial_start_tx(struct uart_port *port) |
| 172 | { | 172 | { |
| 173 | struct bfin_serial_port *uart = (struct bfin_serial_port *)port; | 173 | struct bfin_serial_port *uart = (struct bfin_serial_port *)port; |
| 174 | struct tty_struct *tty = uart->port.info->port.tty; | 174 | struct tty_struct *tty = uart->port.state->port.tty; |
| 175 | 175 | ||
| 176 | #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS | 176 | #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS |
| 177 | if (uart->scts && !(bfin_serial_get_mctrl(&uart->port) & TIOCM_CTS)) { | 177 | if (uart->scts && !(bfin_serial_get_mctrl(&uart->port) & TIOCM_CTS)) { |
| @@ -243,10 +243,10 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart) | |||
| 243 | return; | 243 | return; |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | if (!uart->port.info || !uart->port.info->port.tty) | 246 | if (!uart->port.state || !uart->port.state->port.tty) |
| 247 | return; | 247 | return; |
| 248 | #endif | 248 | #endif |
| 249 | tty = uart->port.info->port.tty; | 249 | tty = uart->port.state->port.tty; |
| 250 | 250 | ||
| 251 | if (ANOMALY_05000363) { | 251 | if (ANOMALY_05000363) { |
| 252 | /* The BF533 (and BF561) family of processors have a nice anomaly | 252 | /* The BF533 (and BF561) family of processors have a nice anomaly |
| @@ -331,7 +331,7 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart) | |||
| 331 | 331 | ||
| 332 | static void bfin_serial_tx_chars(struct bfin_serial_port *uart) | 332 | static void bfin_serial_tx_chars(struct bfin_serial_port *uart) |
| 333 | { | 333 | { |
| 334 | struct circ_buf *xmit = &uart->port.info->xmit; | 334 | struct circ_buf *xmit = &uart->port.state->xmit; |
| 335 | 335 | ||
| 336 | if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) { | 336 | if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) { |
| 337 | #ifdef CONFIG_BF54x | 337 | #ifdef CONFIG_BF54x |
| @@ -398,7 +398,7 @@ static irqreturn_t bfin_serial_tx_int(int irq, void *dev_id) | |||
| 398 | #ifdef CONFIG_SERIAL_BFIN_DMA | 398 | #ifdef CONFIG_SERIAL_BFIN_DMA |
| 399 | static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart) | 399 | static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart) |
| 400 | { | 400 | { |
| 401 | struct circ_buf *xmit = &uart->port.info->xmit; | 401 | struct circ_buf *xmit = &uart->port.state->xmit; |
| 402 | 402 | ||
| 403 | uart->tx_done = 0; | 403 | uart->tx_done = 0; |
| 404 | 404 | ||
| @@ -436,7 +436,7 @@ static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart) | |||
| 436 | 436 | ||
| 437 | static void bfin_serial_dma_rx_chars(struct bfin_serial_port *uart) | 437 | static void bfin_serial_dma_rx_chars(struct bfin_serial_port *uart) |
| 438 | { | 438 | { |
| 439 | struct tty_struct *tty = uart->port.info->port.tty; | 439 | struct tty_struct *tty = uart->port.state->port.tty; |
| 440 | int i, flg, status; | 440 | int i, flg, status; |
| 441 | 441 | ||
| 442 | status = UART_GET_LSR(uart); | 442 | status = UART_GET_LSR(uart); |
| @@ -529,7 +529,7 @@ void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart) | |||
| 529 | static irqreturn_t bfin_serial_dma_tx_int(int irq, void *dev_id) | 529 | static irqreturn_t bfin_serial_dma_tx_int(int irq, void *dev_id) |
| 530 | { | 530 | { |
| 531 | struct bfin_serial_port *uart = dev_id; | 531 | struct bfin_serial_port *uart = dev_id; |
| 532 | struct circ_buf *xmit = &uart->port.info->xmit; | 532 | struct circ_buf *xmit = &uart->port.state->xmit; |
| 533 | 533 | ||
| 534 | #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS | 534 | #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS |
| 535 | if (uart->scts && !(bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) { | 535 | if (uart->scts && !(bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) { |
| @@ -965,10 +965,10 @@ static void bfin_serial_set_ldisc(struct uart_port *port) | |||
| 965 | int line = port->line; | 965 | int line = port->line; |
| 966 | unsigned short val; | 966 | unsigned short val; |
| 967 | 967 | ||
| 968 | if (line >= port->info->port.tty->driver->num) | 968 | if (line >= port->state->port.tty->driver->num) |
| 969 | return; | 969 | return; |
| 970 | 970 | ||
| 971 | switch (port->info->port.tty->termios->c_line) { | 971 | switch (port->state->port.tty->termios->c_line) { |
| 972 | case N_IRDA: | 972 | case N_IRDA: |
| 973 | val = UART_GET_GCTL(&bfin_serial_ports[line]); | 973 | val = UART_GET_GCTL(&bfin_serial_ports[line]); |
| 974 | val |= (IREN | RPOLC); | 974 | val |= (IREN | RPOLC); |
diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c index c108b1a0ce98..088bb35475f1 100644 --- a/drivers/serial/bfin_sport_uart.c +++ b/drivers/serial/bfin_sport_uart.c | |||
| @@ -178,7 +178,7 @@ static int sport_uart_setup(struct sport_uart_port *up, int sclk, int baud_rate) | |||
| 178 | static irqreturn_t sport_uart_rx_irq(int irq, void *dev_id) | 178 | static irqreturn_t sport_uart_rx_irq(int irq, void *dev_id) |
| 179 | { | 179 | { |
| 180 | struct sport_uart_port *up = dev_id; | 180 | struct sport_uart_port *up = dev_id; |
| 181 | struct tty_struct *tty = up->port.info->port.tty; | 181 | struct tty_struct *tty = up->port.state->port.tty; |
| 182 | unsigned int ch; | 182 | unsigned int ch; |
| 183 | 183 | ||
| 184 | do { | 184 | do { |
| @@ -205,7 +205,7 @@ static irqreturn_t sport_uart_tx_irq(int irq, void *dev_id) | |||
| 205 | static irqreturn_t sport_uart_err_irq(int irq, void *dev_id) | 205 | static irqreturn_t sport_uart_err_irq(int irq, void *dev_id) |
| 206 | { | 206 | { |
| 207 | struct sport_uart_port *up = dev_id; | 207 | struct sport_uart_port *up = dev_id; |
| 208 | struct tty_struct *tty = up->port.info->port.tty; | 208 | struct tty_struct *tty = up->port.state->port.tty; |
| 209 | unsigned int stat = SPORT_GET_STAT(up); | 209 | unsigned int stat = SPORT_GET_STAT(up); |
| 210 | 210 | ||
| 211 | /* Overflow in RX FIFO */ | 211 | /* Overflow in RX FIFO */ |
| @@ -290,7 +290,7 @@ fail1: | |||
| 290 | 290 | ||
| 291 | static void sport_uart_tx_chars(struct sport_uart_port *up) | 291 | static void sport_uart_tx_chars(struct sport_uart_port *up) |
| 292 | { | 292 | { |
| 293 | struct circ_buf *xmit = &up->port.info->xmit; | 293 | struct circ_buf *xmit = &up->port.state->xmit; |
| 294 | 294 | ||
| 295 | if (SPORT_GET_STAT(up) & TXF) | 295 | if (SPORT_GET_STAT(up) & TXF) |
| 296 | return; | 296 | return; |
diff --git a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c index 80e76426131d..b6acd19b458e 100644 --- a/drivers/serial/clps711x.c +++ b/drivers/serial/clps711x.c | |||
| @@ -93,7 +93,7 @@ static void clps711xuart_enable_ms(struct uart_port *port) | |||
| 93 | static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id) | 93 | static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id) |
| 94 | { | 94 | { |
| 95 | struct uart_port *port = dev_id; | 95 | struct uart_port *port = dev_id; |
| 96 | struct tty_struct *tty = port->info->port.tty; | 96 | struct tty_struct *tty = port->state->port.tty; |
| 97 | unsigned int status, ch, flg; | 97 | unsigned int status, ch, flg; |
| 98 | 98 | ||
| 99 | status = clps_readl(SYSFLG(port)); | 99 | status = clps_readl(SYSFLG(port)); |
| @@ -147,7 +147,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id) | |||
| 147 | static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id) | 147 | static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id) |
| 148 | { | 148 | { |
| 149 | struct uart_port *port = dev_id; | 149 | struct uart_port *port = dev_id; |
| 150 | struct circ_buf *xmit = &port->info->xmit; | 150 | struct circ_buf *xmit = &port->state->xmit; |
| 151 | int count; | 151 | int count; |
| 152 | 152 | ||
| 153 | if (port->x_char) { | 153 | if (port->x_char) { |
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c index f8df0681e160..8d349b23249a 100644 --- a/drivers/serial/cpm_uart/cpm_uart_core.c +++ b/drivers/serial/cpm_uart/cpm_uart_core.c | |||
| @@ -244,7 +244,7 @@ static void cpm_uart_int_rx(struct uart_port *port) | |||
| 244 | int i; | 244 | int i; |
| 245 | unsigned char ch; | 245 | unsigned char ch; |
| 246 | u8 *cp; | 246 | u8 *cp; |
| 247 | struct tty_struct *tty = port->info->port.tty; | 247 | struct tty_struct *tty = port->state->port.tty; |
| 248 | struct uart_cpm_port *pinfo = (struct uart_cpm_port *)port; | 248 | struct uart_cpm_port *pinfo = (struct uart_cpm_port *)port; |
| 249 | cbd_t __iomem *bdp; | 249 | cbd_t __iomem *bdp; |
| 250 | u16 status; | 250 | u16 status; |
diff --git a/drivers/serial/dz.c b/drivers/serial/dz.c index 6042b87797a1..57421d776329 100644 --- a/drivers/serial/dz.c +++ b/drivers/serial/dz.c | |||
| @@ -197,7 +197,7 @@ static inline void dz_receive_chars(struct dz_mux *mux) | |||
| 197 | while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { | 197 | while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { |
| 198 | dport = &mux->dport[LINE(status)]; | 198 | dport = &mux->dport[LINE(status)]; |
| 199 | uport = &dport->port; | 199 | uport = &dport->port; |
| 200 | tty = uport->info->port.tty; /* point to the proper dev */ | 200 | tty = uport->state->port.tty; /* point to the proper dev */ |
| 201 | 201 | ||
| 202 | ch = UCHAR(status); /* grab the char */ | 202 | ch = UCHAR(status); /* grab the char */ |
| 203 | flag = TTY_NORMAL; | 203 | flag = TTY_NORMAL; |
| @@ -249,7 +249,7 @@ static inline void dz_receive_chars(struct dz_mux *mux) | |||
| 249 | } | 249 | } |
| 250 | for (i = 0; i < DZ_NB_PORT; i++) | 250 | for (i = 0; i < DZ_NB_PORT; i++) |
| 251 | if (lines_rx[i]) | 251 | if (lines_rx[i]) |
| 252 | tty_flip_buffer_push(mux->dport[i].port.info->port.tty); | 252 | tty_flip_buffer_push(mux->dport[i].port.state->port.tty); |
| 253 | } | 253 | } |
| 254 | 254 | ||
| 255 | /* | 255 | /* |
| @@ -268,7 +268,7 @@ static inline void dz_transmit_chars(struct dz_mux *mux) | |||
| 268 | 268 | ||
| 269 | status = dz_in(dport, DZ_CSR); | 269 | status = dz_in(dport, DZ_CSR); |
| 270 | dport = &mux->dport[LINE(status)]; | 270 | dport = &mux->dport[LINE(status)]; |
| 271 | xmit = &dport->port.info->xmit; | 271 | xmit = &dport->port.state->xmit; |
| 272 | 272 | ||
| 273 | if (dport->port.x_char) { /* XON/XOFF chars */ | 273 | if (dport->port.x_char) { /* XON/XOFF chars */ |
| 274 | dz_out(dport, DZ_TDR, dport->port.x_char); | 274 | dz_out(dport, DZ_TDR, dport->port.x_char); |
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c index 060f4e3d54c5..f86c47e08a06 100644 --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c | |||
| @@ -627,7 +627,7 @@ static int icom_write(struct uart_port *port) | |||
| 627 | unsigned long data_count; | 627 | unsigned long data_count; |
| 628 | unsigned char cmdReg; | 628 | unsigned char cmdReg; |
| 629 | unsigned long offset; | 629 | unsigned long offset; |
| 630 | int temp_tail = port->info->xmit.tail; | 630 | int temp_tail = port->state->xmit.tail; |
| 631 | 631 | ||
| 632 | trace(ICOM_PORT, "WRITE", 0); | 632 | trace(ICOM_PORT, "WRITE", 0); |
| 633 | 633 | ||
| @@ -638,11 +638,11 @@ static int icom_write(struct uart_port *port) | |||
| 638 | } | 638 | } |
| 639 | 639 | ||
| 640 | data_count = 0; | 640 | data_count = 0; |
| 641 | while ((port->info->xmit.head != temp_tail) && | 641 | while ((port->state->xmit.head != temp_tail) && |
| 642 | (data_count <= XMIT_BUFF_SZ)) { | 642 | (data_count <= XMIT_BUFF_SZ)) { |
| 643 | 643 | ||
| 644 | ICOM_PORT->xmit_buf[data_count++] = | 644 | ICOM_PORT->xmit_buf[data_count++] = |
| 645 | port->info->xmit.buf[temp_tail]; | 645 | port->state->xmit.buf[temp_tail]; |
| 646 | 646 | ||
| 647 | temp_tail++; | 647 | temp_tail++; |
| 648 | temp_tail &= (UART_XMIT_SIZE - 1); | 648 | temp_tail &= (UART_XMIT_SIZE - 1); |
| @@ -694,7 +694,7 @@ static inline void check_modem_status(struct icom_port *icom_port) | |||
| 694 | uart_handle_cts_change(&icom_port->uart_port, | 694 | uart_handle_cts_change(&icom_port->uart_port, |
| 695 | delta_status & ICOM_CTS); | 695 | delta_status & ICOM_CTS); |
| 696 | 696 | ||
| 697 | wake_up_interruptible(&icom_port->uart_port.info-> | 697 | wake_up_interruptible(&icom_port->uart_port.state-> |
| 698 | delta_msr_wait); | 698 | delta_msr_wait); |
| 699 | old_status = status; | 699 | old_status = status; |
| 700 | } | 700 | } |
| @@ -718,10 +718,10 @@ static void xmit_interrupt(u16 port_int_reg, struct icom_port *icom_port) | |||
| 718 | icom_port->uart_port.icount.tx += count; | 718 | icom_port->uart_port.icount.tx += count; |
| 719 | 719 | ||
| 720 | for (i=0; i<count && | 720 | for (i=0; i<count && |
| 721 | !uart_circ_empty(&icom_port->uart_port.info->xmit); i++) { | 721 | !uart_circ_empty(&icom_port->uart_port.state->xmit); i++) { |
| 722 | 722 | ||
| 723 | icom_port->uart_port.info->xmit.tail++; | 723 | icom_port->uart_port.state->xmit.tail++; |
| 724 | icom_port->uart_port.info->xmit.tail &= | 724 | icom_port->uart_port.state->xmit.tail &= |
| 725 | (UART_XMIT_SIZE - 1); | 725 | (UART_XMIT_SIZE - 1); |
| 726 | } | 726 | } |
| 727 | 727 | ||
| @@ -735,7 +735,7 @@ static void xmit_interrupt(u16 port_int_reg, struct icom_port *icom_port) | |||
| 735 | static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port) | 735 | static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port) |
| 736 | { | 736 | { |
| 737 | short int count, rcv_buff; | 737 | short int count, rcv_buff; |
| 738 | struct tty_struct *tty = icom_port->uart_port.info->port.tty; | 738 | struct tty_struct *tty = icom_port->uart_port.state->port.tty; |
| 739 | unsigned short int status; | 739 | unsigned short int status; |
| 740 | struct uart_icount *icount; | 740 | struct uart_icount *icount; |
| 741 | unsigned long offset; | 741 | unsigned long offset; |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 7485afd0df4c..1febeafcb97a 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
| @@ -224,7 +224,7 @@ static void imx_mctrl_check(struct imx_port *sport) | |||
| 224 | if (changed & TIOCM_CTS) | 224 | if (changed & TIOCM_CTS) |
| 225 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); | 225 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); |
| 226 | 226 | ||
| 227 | wake_up_interruptible(&sport->port.info->delta_msr_wait); | 227 | wake_up_interruptible(&sport->port.state->delta_msr_wait); |
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | /* | 230 | /* |
| @@ -236,7 +236,7 @@ static void imx_timeout(unsigned long data) | |||
| 236 | struct imx_port *sport = (struct imx_port *)data; | 236 | struct imx_port *sport = (struct imx_port *)data; |
| 237 | unsigned long flags; | 237 | unsigned long flags; |
| 238 | 238 | ||
| 239 | if (sport->port.info) { | 239 | if (sport->port.state) { |
| 240 | spin_lock_irqsave(&sport->port.lock, flags); | 240 | spin_lock_irqsave(&sport->port.lock, flags); |
| 241 | imx_mctrl_check(sport); | 241 | imx_mctrl_check(sport); |
| 242 | spin_unlock_irqrestore(&sport->port.lock, flags); | 242 | spin_unlock_irqrestore(&sport->port.lock, flags); |
| @@ -323,7 +323,7 @@ static void imx_enable_ms(struct uart_port *port) | |||
| 323 | 323 | ||
| 324 | static inline void imx_transmit_buffer(struct imx_port *sport) | 324 | static inline void imx_transmit_buffer(struct imx_port *sport) |
| 325 | { | 325 | { |
| 326 | struct circ_buf *xmit = &sport->port.info->xmit; | 326 | struct circ_buf *xmit = &sport->port.state->xmit; |
| 327 | 327 | ||
| 328 | while (!(readl(sport->port.membase + UTS) & UTS_TXFULL)) { | 328 | while (!(readl(sport->port.membase + UTS) & UTS_TXFULL)) { |
| 329 | /* send xmit->buf[xmit->tail] | 329 | /* send xmit->buf[xmit->tail] |
| @@ -388,7 +388,7 @@ static irqreturn_t imx_rtsint(int irq, void *dev_id) | |||
| 388 | 388 | ||
| 389 | writel(USR1_RTSD, sport->port.membase + USR1); | 389 | writel(USR1_RTSD, sport->port.membase + USR1); |
| 390 | uart_handle_cts_change(&sport->port, !!val); | 390 | uart_handle_cts_change(&sport->port, !!val); |
| 391 | wake_up_interruptible(&sport->port.info->delta_msr_wait); | 391 | wake_up_interruptible(&sport->port.state->delta_msr_wait); |
| 392 | 392 | ||
| 393 | spin_unlock_irqrestore(&sport->port.lock, flags); | 393 | spin_unlock_irqrestore(&sport->port.lock, flags); |
| 394 | return IRQ_HANDLED; | 394 | return IRQ_HANDLED; |
| @@ -397,7 +397,7 @@ static irqreturn_t imx_rtsint(int irq, void *dev_id) | |||
| 397 | static irqreturn_t imx_txint(int irq, void *dev_id) | 397 | static irqreturn_t imx_txint(int irq, void *dev_id) |
| 398 | { | 398 | { |
| 399 | struct imx_port *sport = dev_id; | 399 | struct imx_port *sport = dev_id; |
| 400 | struct circ_buf *xmit = &sport->port.info->xmit; | 400 | struct circ_buf *xmit = &sport->port.state->xmit; |
| 401 | unsigned long flags; | 401 | unsigned long flags; |
| 402 | 402 | ||
| 403 | spin_lock_irqsave(&sport->port.lock,flags); | 403 | spin_lock_irqsave(&sport->port.lock,flags); |
| @@ -427,7 +427,7 @@ static irqreturn_t imx_rxint(int irq, void *dev_id) | |||
| 427 | { | 427 | { |
| 428 | struct imx_port *sport = dev_id; | 428 | struct imx_port *sport = dev_id; |
| 429 | unsigned int rx,flg,ignored = 0; | 429 | unsigned int rx,flg,ignored = 0; |
| 430 | struct tty_struct *tty = sport->port.info->port.tty; | 430 | struct tty_struct *tty = sport->port.state->port.tty; |
| 431 | unsigned long flags, temp; | 431 | unsigned long flags, temp; |
| 432 | 432 | ||
| 433 | spin_lock_irqsave(&sport->port.lock,flags); | 433 | spin_lock_irqsave(&sport->port.lock,flags); |
| @@ -900,11 +900,11 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, | |||
| 900 | rational_best_approximation(16 * div * baud, sport->port.uartclk, | 900 | rational_best_approximation(16 * div * baud, sport->port.uartclk, |
| 901 | 1 << 16, 1 << 16, &num, &denom); | 901 | 1 << 16, 1 << 16, &num, &denom); |
| 902 | 902 | ||
| 903 | if (port->info && port->info->port.tty) { | 903 | if (port->state && port->state->port.tty) { |
| 904 | tdiv64 = sport->port.uartclk; | 904 | tdiv64 = sport->port.uartclk; |
| 905 | tdiv64 *= num; | 905 | tdiv64 *= num; |
| 906 | do_div(tdiv64, denom * 16 * div); | 906 | do_div(tdiv64, denom * 16 * div); |
| 907 | tty_encode_baud_rate(sport->port.info->port.tty, | 907 | tty_encode_baud_rate(sport->port.state->port.tty, |
| 908 | (speed_t)tdiv64, (speed_t)tdiv64); | 908 | (speed_t)tdiv64, (speed_t)tdiv64); |
| 909 | } | 909 | } |
| 910 | 910 | ||
diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c index ae3699d77dd0..de4ab1bfee8d 100644 --- a/drivers/serial/ioc3_serial.c +++ b/drivers/serial/ioc3_serial.c | |||
| @@ -897,25 +897,25 @@ static void transmit_chars(struct uart_port *the_port) | |||
| 897 | char *start; | 897 | char *start; |
| 898 | struct tty_struct *tty; | 898 | struct tty_struct *tty; |
| 899 | struct ioc3_port *port = get_ioc3_port(the_port); | 899 | struct ioc3_port *port = get_ioc3_port(the_port); |
| 900 | struct uart_info *info; | 900 | struct uart_state *state; |
| 901 | 901 | ||
| 902 | if (!the_port) | 902 | if (!the_port) |
| 903 | return; | 903 | return; |
| 904 | if (!port) | 904 | if (!port) |
| 905 | return; | 905 | return; |
| 906 | 906 | ||
| 907 | info = the_port->info; | 907 | state = the_port->state; |
| 908 | tty = info->port.tty; | 908 | tty = state->port.tty; |
| 909 | 909 | ||
| 910 | if (uart_circ_empty(&info->xmit) || uart_tx_stopped(the_port)) { | 910 | if (uart_circ_empty(&state->xmit) || uart_tx_stopped(the_port)) { |
| 911 | /* Nothing to do or hw stopped */ | 911 | /* Nothing to do or hw stopped */ |
| 912 | set_notification(port, N_ALL_OUTPUT, 0); | 912 | set_notification(port, N_ALL_OUTPUT, 0); |
| 913 | return; | 913 | return; |
| 914 | } | 914 | } |
| 915 | 915 | ||
| 916 | head = info->xmit.head; | 916 | head = state->xmit.head; |
| 917 | tail = info->xmit.tail; | 917 | tail = state->xmit.tail; |
| 918 | start = (char *)&info->xmit.buf[tail]; | 918 | start = (char *)&state->xmit.buf[tail]; |
| 919 | 919 | ||
| 920 | /* write out all the data or until the end of the buffer */ | 920 | /* write out all the data or until the end of the buffer */ |
| 921 | xmit_count = (head < tail) ? (UART_XMIT_SIZE - tail) : (head - tail); | 921 | xmit_count = (head < tail) ? (UART_XMIT_SIZE - tail) : (head - tail); |
| @@ -928,14 +928,14 @@ static void transmit_chars(struct uart_port *the_port) | |||
| 928 | /* advance the pointers */ | 928 | /* advance the pointers */ |
| 929 | tail += result; | 929 | tail += result; |
| 930 | tail &= UART_XMIT_SIZE - 1; | 930 | tail &= UART_XMIT_SIZE - 1; |
| 931 | info->xmit.tail = tail; | 931 | state->xmit.tail = tail; |
| 932 | start = (char *)&info->xmit.buf[tail]; | 932 | start = (char *)&state->xmit.buf[tail]; |
| 933 | } | 933 | } |
| 934 | } | 934 | } |
| 935 | if (uart_circ_chars_pending(&info->xmit) < WAKEUP_CHARS) | 935 | if (uart_circ_chars_pending(&state->xmit) < WAKEUP_CHARS) |
| 936 | uart_write_wakeup(the_port); | 936 | uart_write_wakeup(the_port); |
| 937 | 937 | ||
| 938 | if (uart_circ_empty(&info->xmit)) { | 938 | if (uart_circ_empty(&state->xmit)) { |
| 939 | set_notification(port, N_OUTPUT_LOWAT, 0); | 939 | set_notification(port, N_OUTPUT_LOWAT, 0); |
| 940 | } else { | 940 | } else { |
| 941 | set_notification(port, N_OUTPUT_LOWAT, 1); | 941 | set_notification(port, N_OUTPUT_LOWAT, 1); |
| @@ -956,7 +956,7 @@ ioc3_change_speed(struct uart_port *the_port, | |||
| 956 | unsigned int cflag; | 956 | unsigned int cflag; |
| 957 | int baud; | 957 | int baud; |
| 958 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; | 958 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; |
| 959 | struct uart_info *info = the_port->info; | 959 | struct uart_state *state = the_port->state; |
| 960 | 960 | ||
| 961 | cflag = new_termios->c_cflag; | 961 | cflag = new_termios->c_cflag; |
| 962 | 962 | ||
| @@ -997,14 +997,14 @@ ioc3_change_speed(struct uart_port *the_port, | |||
| 997 | 997 | ||
| 998 | the_port->ignore_status_mask = N_ALL_INPUT; | 998 | the_port->ignore_status_mask = N_ALL_INPUT; |
| 999 | 999 | ||
| 1000 | info->port.tty->low_latency = 1; | 1000 | state->port.tty->low_latency = 1; |
| 1001 | 1001 | ||
| 1002 | if (I_IGNPAR(info->port.tty)) | 1002 | if (I_IGNPAR(state->port.tty)) |
| 1003 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR | 1003 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR |
| 1004 | | N_FRAMING_ERROR); | 1004 | | N_FRAMING_ERROR); |
| 1005 | if (I_IGNBRK(info->port.tty)) { | 1005 | if (I_IGNBRK(state->port.tty)) { |
| 1006 | the_port->ignore_status_mask &= ~N_BREAK; | 1006 | the_port->ignore_status_mask &= ~N_BREAK; |
| 1007 | if (I_IGNPAR(info->port.tty)) | 1007 | if (I_IGNPAR(state->port.tty)) |
| 1008 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; | 1008 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; |
| 1009 | } | 1009 | } |
| 1010 | if (!(cflag & CREAD)) { | 1010 | if (!(cflag & CREAD)) { |
| @@ -1286,7 +1286,7 @@ static inline int do_read(struct uart_port *the_port, char *buf, int len) | |||
| 1286 | uart_handle_dcd_change | 1286 | uart_handle_dcd_change |
| 1287 | (port->ip_port, 0); | 1287 | (port->ip_port, 0); |
| 1288 | wake_up_interruptible | 1288 | wake_up_interruptible |
| 1289 | (&the_port->info-> | 1289 | (&the_port->state-> |
| 1290 | delta_msr_wait); | 1290 | delta_msr_wait); |
| 1291 | } | 1291 | } |
| 1292 | 1292 | ||
| @@ -1392,21 +1392,21 @@ static int receive_chars(struct uart_port *the_port) | |||
| 1392 | struct tty_struct *tty; | 1392 | struct tty_struct *tty; |
| 1393 | unsigned char ch[MAX_CHARS]; | 1393 | unsigned char ch[MAX_CHARS]; |
| 1394 | int read_count = 0, read_room, flip = 0; | 1394 | int read_count = 0, read_room, flip = 0; |
| 1395 | struct uart_info *info = the_port->info; | 1395 | struct uart_state *state = the_port->state; |
| 1396 | struct ioc3_port *port = get_ioc3_port(the_port); | 1396 | struct ioc3_port *port = get_ioc3_port(the_port); |
| 1397 | unsigned long pflags; | 1397 | unsigned long pflags; |
| 1398 | 1398 | ||
| 1399 | /* Make sure all the pointers are "good" ones */ | 1399 | /* Make sure all the pointers are "good" ones */ |
| 1400 | if (!info) | 1400 | if (!state) |
| 1401 | return 0; | 1401 | return 0; |
| 1402 | if (!info->port.tty) | 1402 | if (!state->port.tty) |
| 1403 | return 0; | 1403 | return 0; |
| 1404 | 1404 | ||
| 1405 | if (!(port->ip_flags & INPUT_ENABLE)) | 1405 | if (!(port->ip_flags & INPUT_ENABLE)) |
| 1406 | return 0; | 1406 | return 0; |
| 1407 | 1407 | ||
| 1408 | spin_lock_irqsave(&the_port->lock, pflags); | 1408 | spin_lock_irqsave(&the_port->lock, pflags); |
| 1409 | tty = info->port.tty; | 1409 | tty = state->port.tty; |
| 1410 | 1410 | ||
| 1411 | read_count = do_read(the_port, ch, MAX_CHARS); | 1411 | read_count = do_read(the_port, ch, MAX_CHARS); |
| 1412 | if (read_count > 0) { | 1412 | if (read_count > 0) { |
| @@ -1491,7 +1491,7 @@ ioc3uart_intr_one(struct ioc3_submodule *is, | |||
| 1491 | uart_handle_dcd_change(the_port, | 1491 | uart_handle_dcd_change(the_port, |
| 1492 | shadow & SHADOW_DCD); | 1492 | shadow & SHADOW_DCD); |
| 1493 | wake_up_interruptible | 1493 | wake_up_interruptible |
| 1494 | (&the_port->info->delta_msr_wait); | 1494 | (&the_port->state->delta_msr_wait); |
| 1495 | } else if ((port->ip_notify & N_DDCD) | 1495 | } else if ((port->ip_notify & N_DDCD) |
| 1496 | && !(shadow & SHADOW_DCD)) { | 1496 | && !(shadow & SHADOW_DCD)) { |
| 1497 | /* Flag delta DCD/no DCD */ | 1497 | /* Flag delta DCD/no DCD */ |
| @@ -1511,7 +1511,7 @@ ioc3uart_intr_one(struct ioc3_submodule *is, | |||
| 1511 | uart_handle_cts_change(the_port, shadow | 1511 | uart_handle_cts_change(the_port, shadow |
| 1512 | & SHADOW_CTS); | 1512 | & SHADOW_CTS); |
| 1513 | wake_up_interruptible | 1513 | wake_up_interruptible |
| 1514 | (&the_port->info->delta_msr_wait); | 1514 | (&the_port->state->delta_msr_wait); |
| 1515 | } | 1515 | } |
| 1516 | } | 1516 | } |
| 1517 | 1517 | ||
| @@ -1721,14 +1721,14 @@ static void ic3_shutdown(struct uart_port *the_port) | |||
| 1721 | { | 1721 | { |
| 1722 | unsigned long port_flags; | 1722 | unsigned long port_flags; |
| 1723 | struct ioc3_port *port; | 1723 | struct ioc3_port *port; |
| 1724 | struct uart_info *info; | 1724 | struct uart_state *state; |
| 1725 | 1725 | ||
| 1726 | port = get_ioc3_port(the_port); | 1726 | port = get_ioc3_port(the_port); |
| 1727 | if (!port) | 1727 | if (!port) |
| 1728 | return; | 1728 | return; |
| 1729 | 1729 | ||
| 1730 | info = the_port->info; | 1730 | state = the_port->state; |
| 1731 | wake_up_interruptible(&info->delta_msr_wait); | 1731 | wake_up_interruptible(&state->delta_msr_wait); |
| 1732 | 1732 | ||
| 1733 | spin_lock_irqsave(&the_port->lock, port_flags); | 1733 | spin_lock_irqsave(&the_port->lock, port_flags); |
| 1734 | set_notification(port, N_ALL, 0); | 1734 | set_notification(port, N_ALL, 0); |
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index e5c58fe7e745..2055d323f15f 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c | |||
| @@ -1627,25 +1627,25 @@ static void transmit_chars(struct uart_port *the_port) | |||
| 1627 | char *start; | 1627 | char *start; |
| 1628 | struct tty_struct *tty; | 1628 | struct tty_struct *tty; |
| 1629 | struct ioc4_port *port = get_ioc4_port(the_port, 0); | 1629 | struct ioc4_port *port = get_ioc4_port(the_port, 0); |
| 1630 | struct uart_info *info; | 1630 | struct uart_state *state; |
| 1631 | 1631 | ||
| 1632 | if (!the_port) | 1632 | if (!the_port) |
| 1633 | return; | 1633 | return; |
| 1634 | if (!port) | 1634 | if (!port) |
| 1635 | return; | 1635 | return; |
| 1636 | 1636 | ||
| 1637 | info = the_port->info; | 1637 | state = the_port->state; |
| 1638 | tty = info->port.tty; | 1638 | tty = state->port.tty; |
| 1639 | 1639 | ||
| 1640 | if (uart_circ_empty(&info->xmit) || uart_tx_stopped(the_port)) { | 1640 | if (uart_circ_empty(&state->xmit) || uart_tx_stopped(the_port)) { |
| 1641 | /* Nothing to do or hw stopped */ | 1641 | /* Nothing to do or hw stopped */ |
| 1642 | set_notification(port, N_ALL_OUTPUT, 0); | 1642 | set_notification(port, N_ALL_OUTPUT, 0); |
| 1643 | return; | 1643 | return; |
| 1644 | } | 1644 | } |
| 1645 | 1645 | ||
| 1646 | head = info->xmit.head; | 1646 | head = state->xmit.head; |
| 1647 | tail = info->xmit.tail; | 1647 | tail = state->xmit.tail; |
| 1648 | start = (char *)&info->xmit.buf[tail]; | 1648 | start = (char *)&state->xmit.buf[tail]; |
| 1649 | 1649 | ||
| 1650 | /* write out all the data or until the end of the buffer */ | 1650 | /* write out all the data or until the end of the buffer */ |
| 1651 | xmit_count = (head < tail) ? (UART_XMIT_SIZE - tail) : (head - tail); | 1651 | xmit_count = (head < tail) ? (UART_XMIT_SIZE - tail) : (head - tail); |
| @@ -1658,14 +1658,14 @@ static void transmit_chars(struct uart_port *the_port) | |||
| 1658 | /* advance the pointers */ | 1658 | /* advance the pointers */ |
| 1659 | tail += result; | 1659 | tail += result; |
| 1660 | tail &= UART_XMIT_SIZE - 1; | 1660 | tail &= UART_XMIT_SIZE - 1; |
| 1661 | info->xmit.tail = tail; | 1661 | state->xmit.tail = tail; |
| 1662 | start = (char *)&info->xmit.buf[tail]; | 1662 | start = (char *)&state->xmit.buf[tail]; |
| 1663 | } | 1663 | } |
| 1664 | } | 1664 | } |
| 1665 | if (uart_circ_chars_pending(&info->xmit) < WAKEUP_CHARS) | 1665 | if (uart_circ_chars_pending(&state->xmit) < WAKEUP_CHARS) |
| 1666 | uart_write_wakeup(the_port); | 1666 | uart_write_wakeup(the_port); |
| 1667 | 1667 | ||
| 1668 | if (uart_circ_empty(&info->xmit)) { | 1668 | if (uart_circ_empty(&state->xmit)) { |
| 1669 | set_notification(port, N_OUTPUT_LOWAT, 0); | 1669 | set_notification(port, N_OUTPUT_LOWAT, 0); |
| 1670 | } else { | 1670 | } else { |
| 1671 | set_notification(port, N_OUTPUT_LOWAT, 1); | 1671 | set_notification(port, N_OUTPUT_LOWAT, 1); |
| @@ -1686,7 +1686,7 @@ ioc4_change_speed(struct uart_port *the_port, | |||
| 1686 | int baud, bits; | 1686 | int baud, bits; |
| 1687 | unsigned cflag; | 1687 | unsigned cflag; |
| 1688 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; | 1688 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; |
| 1689 | struct uart_info *info = the_port->info; | 1689 | struct uart_state *state = the_port->state; |
| 1690 | 1690 | ||
| 1691 | cflag = new_termios->c_cflag; | 1691 | cflag = new_termios->c_cflag; |
| 1692 | 1692 | ||
| @@ -1738,14 +1738,14 @@ ioc4_change_speed(struct uart_port *the_port, | |||
| 1738 | 1738 | ||
| 1739 | the_port->ignore_status_mask = N_ALL_INPUT; | 1739 | the_port->ignore_status_mask = N_ALL_INPUT; |
| 1740 | 1740 | ||
| 1741 | info->port.tty->low_latency = 1; | 1741 | state->port.tty->low_latency = 1; |
| 1742 | 1742 | ||
| 1743 | if (I_IGNPAR(info->port.tty)) | 1743 | if (I_IGNPAR(state->port.tty)) |
| 1744 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR | 1744 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR |
| 1745 | | N_FRAMING_ERROR); | 1745 | | N_FRAMING_ERROR); |
| 1746 | if (I_IGNBRK(info->port.tty)) { | 1746 | if (I_IGNBRK(state->port.tty)) { |
| 1747 | the_port->ignore_status_mask &= ~N_BREAK; | 1747 | the_port->ignore_status_mask &= ~N_BREAK; |
| 1748 | if (I_IGNPAR(info->port.tty)) | 1748 | if (I_IGNPAR(state->port.tty)) |
| 1749 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; | 1749 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; |
| 1750 | } | 1750 | } |
| 1751 | if (!(cflag & CREAD)) { | 1751 | if (!(cflag & CREAD)) { |
| @@ -1784,7 +1784,7 @@ ioc4_change_speed(struct uart_port *the_port, | |||
| 1784 | static inline int ic4_startup_local(struct uart_port *the_port) | 1784 | static inline int ic4_startup_local(struct uart_port *the_port) |
| 1785 | { | 1785 | { |
| 1786 | struct ioc4_port *port; | 1786 | struct ioc4_port *port; |
| 1787 | struct uart_info *info; | 1787 | struct uart_state *state; |
| 1788 | 1788 | ||
| 1789 | if (!the_port) | 1789 | if (!the_port) |
| 1790 | return -1; | 1790 | return -1; |
| @@ -1793,7 +1793,7 @@ static inline int ic4_startup_local(struct uart_port *the_port) | |||
| 1793 | if (!port) | 1793 | if (!port) |
| 1794 | return -1; | 1794 | return -1; |
| 1795 | 1795 | ||
| 1796 | info = the_port->info; | 1796 | state = the_port->state; |
| 1797 | 1797 | ||
| 1798 | local_open(port); | 1798 | local_open(port); |
| 1799 | 1799 | ||
| @@ -1801,7 +1801,7 @@ static inline int ic4_startup_local(struct uart_port *the_port) | |||
| 1801 | ioc4_set_proto(port, the_port->mapbase); | 1801 | ioc4_set_proto(port, the_port->mapbase); |
| 1802 | 1802 | ||
| 1803 | /* set the speed of the serial port */ | 1803 | /* set the speed of the serial port */ |
| 1804 | ioc4_change_speed(the_port, info->port.tty->termios, | 1804 | ioc4_change_speed(the_port, state->port.tty->termios, |
| 1805 | (struct ktermios *)0); | 1805 | (struct ktermios *)0); |
| 1806 | 1806 | ||
| 1807 | return 0; | 1807 | return 0; |
| @@ -1882,7 +1882,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
| 1882 | the_port = port->ip_port; | 1882 | the_port = port->ip_port; |
| 1883 | the_port->icount.dcd = 1; | 1883 | the_port->icount.dcd = 1; |
| 1884 | wake_up_interruptible | 1884 | wake_up_interruptible |
| 1885 | (&the_port-> info->delta_msr_wait); | 1885 | (&the_port->state->delta_msr_wait); |
| 1886 | } else if ((port->ip_notify & N_DDCD) | 1886 | } else if ((port->ip_notify & N_DDCD) |
| 1887 | && !(shadow & IOC4_SHADOW_DCD)) { | 1887 | && !(shadow & IOC4_SHADOW_DCD)) { |
| 1888 | /* Flag delta DCD/no DCD */ | 1888 | /* Flag delta DCD/no DCD */ |
| @@ -1904,7 +1904,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
| 1904 | the_port->icount.cts = | 1904 | the_port->icount.cts = |
| 1905 | (shadow & IOC4_SHADOW_CTS) ? 1 : 0; | 1905 | (shadow & IOC4_SHADOW_CTS) ? 1 : 0; |
| 1906 | wake_up_interruptible | 1906 | wake_up_interruptible |
| 1907 | (&the_port->info->delta_msr_wait); | 1907 | (&the_port->state->delta_msr_wait); |
| 1908 | } | 1908 | } |
| 1909 | } | 1909 | } |
| 1910 | 1910 | ||
| @@ -2236,7 +2236,7 @@ static inline int do_read(struct uart_port *the_port, unsigned char *buf, | |||
| 2236 | && port->ip_port) { | 2236 | && port->ip_port) { |
| 2237 | the_port->icount.dcd = 0; | 2237 | the_port->icount.dcd = 0; |
| 2238 | wake_up_interruptible | 2238 | wake_up_interruptible |
| 2239 | (&the_port->info-> | 2239 | (&the_port->state-> |
| 2240 | delta_msr_wait); | 2240 | delta_msr_wait); |
| 2241 | } | 2241 | } |
| 2242 | 2242 | ||
| @@ -2341,17 +2341,17 @@ static void receive_chars(struct uart_port *the_port) | |||
| 2341 | unsigned char ch[IOC4_MAX_CHARS]; | 2341 | unsigned char ch[IOC4_MAX_CHARS]; |
| 2342 | int read_count, request_count = IOC4_MAX_CHARS; | 2342 | int read_count, request_count = IOC4_MAX_CHARS; |
| 2343 | struct uart_icount *icount; | 2343 | struct uart_icount *icount; |
| 2344 | struct uart_info *info = the_port->info; | 2344 | struct uart_state *state = the_port->state; |
| 2345 | unsigned long pflags; | 2345 | unsigned long pflags; |
| 2346 | 2346 | ||
| 2347 | /* Make sure all the pointers are "good" ones */ | 2347 | /* Make sure all the pointers are "good" ones */ |
| 2348 | if (!info) | 2348 | if (!state) |
| 2349 | return; | 2349 | return; |
| 2350 | if (!info->port.tty) | 2350 | if (!state->port.tty) |
| 2351 | return; | 2351 | return; |
| 2352 | 2352 | ||
| 2353 | spin_lock_irqsave(&the_port->lock, pflags); | 2353 | spin_lock_irqsave(&the_port->lock, pflags); |
| 2354 | tty = info->port.tty; | 2354 | tty = state->port.tty; |
| 2355 | 2355 | ||
| 2356 | request_count = tty_buffer_request_room(tty, IOC4_MAX_CHARS); | 2356 | request_count = tty_buffer_request_room(tty, IOC4_MAX_CHARS); |
| 2357 | 2357 | ||
| @@ -2430,19 +2430,19 @@ static void ic4_shutdown(struct uart_port *the_port) | |||
| 2430 | { | 2430 | { |
| 2431 | unsigned long port_flags; | 2431 | unsigned long port_flags; |
| 2432 | struct ioc4_port *port; | 2432 | struct ioc4_port *port; |
| 2433 | struct uart_info *info; | 2433 | struct uart_state *state; |
| 2434 | 2434 | ||
| 2435 | port = get_ioc4_port(the_port, 0); | 2435 | port = get_ioc4_port(the_port, 0); |
| 2436 | if (!port) | 2436 | if (!port) |
| 2437 | return; | 2437 | return; |
| 2438 | 2438 | ||
| 2439 | info = the_port->info; | 2439 | state = the_port->state; |
| 2440 | port->ip_port = NULL; | 2440 | port->ip_port = NULL; |
| 2441 | 2441 | ||
| 2442 | wake_up_interruptible(&info->delta_msr_wait); | 2442 | wake_up_interruptible(&state->delta_msr_wait); |
| 2443 | 2443 | ||
| 2444 | if (info->port.tty) | 2444 | if (state->port.tty) |
| 2445 | set_bit(TTY_IO_ERROR, &info->port.tty->flags); | 2445 | set_bit(TTY_IO_ERROR, &state->port.tty->flags); |
| 2446 | 2446 | ||
| 2447 | spin_lock_irqsave(&the_port->lock, port_flags); | 2447 | spin_lock_irqsave(&the_port->lock, port_flags); |
| 2448 | set_notification(port, N_ALL, 0); | 2448 | set_notification(port, N_ALL, 0); |
| @@ -2538,7 +2538,7 @@ static int ic4_startup(struct uart_port *the_port) | |||
| 2538 | int retval; | 2538 | int retval; |
| 2539 | struct ioc4_port *port; | 2539 | struct ioc4_port *port; |
| 2540 | struct ioc4_control *control; | 2540 | struct ioc4_control *control; |
| 2541 | struct uart_info *info; | 2541 | struct uart_state *state; |
| 2542 | unsigned long port_flags; | 2542 | unsigned long port_flags; |
| 2543 | 2543 | ||
| 2544 | if (!the_port) | 2544 | if (!the_port) |
| @@ -2546,7 +2546,7 @@ static int ic4_startup(struct uart_port *the_port) | |||
| 2546 | port = get_ioc4_port(the_port, 1); | 2546 | port = get_ioc4_port(the_port, 1); |
| 2547 | if (!port) | 2547 | if (!port) |
| 2548 | return -ENODEV; | 2548 | return -ENODEV; |
| 2549 | info = the_port->info; | 2549 | state = the_port->state; |
| 2550 | 2550 | ||
| 2551 | control = port->ip_control; | 2551 | control = port->ip_control; |
| 2552 | if (!control) { | 2552 | if (!control) { |
diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c index 0d9acbd0bb70..2e847deb41dc 100644 --- a/drivers/serial/ip22zilog.c +++ b/drivers/serial/ip22zilog.c | |||
| @@ -256,9 +256,9 @@ static struct tty_struct *ip22zilog_receive_chars(struct uart_ip22zilog_port *up | |||
| 256 | unsigned int r1; | 256 | unsigned int r1; |
| 257 | 257 | ||
| 258 | tty = NULL; | 258 | tty = NULL; |
| 259 | if (up->port.info != NULL && | 259 | if (up->port.state != NULL && |
| 260 | up->port.info->port.tty != NULL) | 260 | up->port.state->port.tty != NULL) |
| 261 | tty = up->port.info->port.tty; | 261 | tty = up->port.state->port.tty; |
| 262 | 262 | ||
| 263 | for (;;) { | 263 | for (;;) { |
| 264 | ch = readb(&channel->control); | 264 | ch = readb(&channel->control); |
| @@ -354,7 +354,7 @@ static void ip22zilog_status_handle(struct uart_ip22zilog_port *up, | |||
| 354 | uart_handle_cts_change(&up->port, | 354 | uart_handle_cts_change(&up->port, |
| 355 | (status & CTS)); | 355 | (status & CTS)); |
| 356 | 356 | ||
| 357 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 357 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | up->prev_status = status; | 360 | up->prev_status = status; |
| @@ -404,9 +404,9 @@ static void ip22zilog_transmit_chars(struct uart_ip22zilog_port *up, | |||
| 404 | return; | 404 | return; |
| 405 | } | 405 | } |
| 406 | 406 | ||
| 407 | if (up->port.info == NULL) | 407 | if (up->port.state == NULL) |
| 408 | goto ack_tx_int; | 408 | goto ack_tx_int; |
| 409 | xmit = &up->port.info->xmit; | 409 | xmit = &up->port.state->xmit; |
| 410 | if (uart_circ_empty(xmit)) | 410 | if (uart_circ_empty(xmit)) |
| 411 | goto ack_tx_int; | 411 | goto ack_tx_int; |
| 412 | if (uart_tx_stopped(&up->port)) | 412 | if (uart_tx_stopped(&up->port)) |
| @@ -607,7 +607,7 @@ static void ip22zilog_start_tx(struct uart_port *port) | |||
| 607 | port->icount.tx++; | 607 | port->icount.tx++; |
| 608 | port->x_char = 0; | 608 | port->x_char = 0; |
| 609 | } else { | 609 | } else { |
| 610 | struct circ_buf *xmit = &port->info->xmit; | 610 | struct circ_buf *xmit = &port->state->xmit; |
| 611 | 611 | ||
| 612 | writeb(xmit->buf[xmit->tail], &channel->data); | 612 | writeb(xmit->buf[xmit->tail], &channel->data); |
| 613 | ZSDELAY(); | 613 | ZSDELAY(); |
diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c index 9dadaa11d266..b4b124e4828f 100644 --- a/drivers/serial/jsm/jsm_neo.c +++ b/drivers/serial/jsm/jsm_neo.c | |||
| @@ -989,7 +989,7 @@ static void neo_param(struct jsm_channel *ch) | |||
| 989 | { 50, B50 }, | 989 | { 50, B50 }, |
| 990 | }; | 990 | }; |
| 991 | 991 | ||
| 992 | cflag = C_BAUD(ch->uart_port.info->port.tty); | 992 | cflag = C_BAUD(ch->uart_port.state->port.tty); |
| 993 | baud = 9600; | 993 | baud = 9600; |
| 994 | for (i = 0; i < ARRAY_SIZE(baud_rates); i++) { | 994 | for (i = 0; i < ARRAY_SIZE(baud_rates); i++) { |
| 995 | if (baud_rates[i].cflag == cflag) { | 995 | if (baud_rates[i].cflag == cflag) { |
diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c index 00f4577d2f7f..7439c0373620 100644 --- a/drivers/serial/jsm/jsm_tty.c +++ b/drivers/serial/jsm/jsm_tty.c | |||
| @@ -147,7 +147,7 @@ static void jsm_tty_send_xchar(struct uart_port *port, char ch) | |||
| 147 | struct ktermios *termios; | 147 | struct ktermios *termios; |
| 148 | 148 | ||
| 149 | spin_lock_irqsave(&port->lock, lock_flags); | 149 | spin_lock_irqsave(&port->lock, lock_flags); |
| 150 | termios = port->info->port.tty->termios; | 150 | termios = port->state->port.tty->termios; |
| 151 | if (ch == termios->c_cc[VSTART]) | 151 | if (ch == termios->c_cc[VSTART]) |
| 152 | channel->ch_bd->bd_ops->send_start_character(channel); | 152 | channel->ch_bd->bd_ops->send_start_character(channel); |
| 153 | 153 | ||
| @@ -245,7 +245,7 @@ static int jsm_tty_open(struct uart_port *port) | |||
| 245 | channel->ch_cached_lsr = 0; | 245 | channel->ch_cached_lsr = 0; |
| 246 | channel->ch_stops_sent = 0; | 246 | channel->ch_stops_sent = 0; |
| 247 | 247 | ||
| 248 | termios = port->info->port.tty->termios; | 248 | termios = port->state->port.tty->termios; |
| 249 | channel->ch_c_cflag = termios->c_cflag; | 249 | channel->ch_c_cflag = termios->c_cflag; |
| 250 | channel->ch_c_iflag = termios->c_iflag; | 250 | channel->ch_c_iflag = termios->c_iflag; |
| 251 | channel->ch_c_oflag = termios->c_oflag; | 251 | channel->ch_c_oflag = termios->c_oflag; |
| @@ -278,7 +278,7 @@ static void jsm_tty_close(struct uart_port *port) | |||
| 278 | jsm_printk(CLOSE, INFO, &channel->ch_bd->pci_dev, "start\n"); | 278 | jsm_printk(CLOSE, INFO, &channel->ch_bd->pci_dev, "start\n"); |
| 279 | 279 | ||
| 280 | bd = channel->ch_bd; | 280 | bd = channel->ch_bd; |
| 281 | ts = port->info->port.tty->termios; | 281 | ts = port->state->port.tty->termios; |
| 282 | 282 | ||
| 283 | channel->ch_flags &= ~(CH_STOPI); | 283 | channel->ch_flags &= ~(CH_STOPI); |
| 284 | 284 | ||
| @@ -530,7 +530,7 @@ void jsm_input(struct jsm_channel *ch) | |||
| 530 | if (!ch) | 530 | if (!ch) |
| 531 | return; | 531 | return; |
| 532 | 532 | ||
| 533 | tp = ch->uart_port.info->port.tty; | 533 | tp = ch->uart_port.state->port.tty; |
| 534 | 534 | ||
| 535 | bd = ch->ch_bd; | 535 | bd = ch->ch_bd; |
| 536 | if(!bd) | 536 | if(!bd) |
| @@ -849,7 +849,7 @@ int jsm_tty_write(struct uart_port *port) | |||
| 849 | u16 tail; | 849 | u16 tail; |
| 850 | u16 tmask; | 850 | u16 tmask; |
| 851 | u32 remain; | 851 | u32 remain; |
| 852 | int temp_tail = port->info->xmit.tail; | 852 | int temp_tail = port->state->xmit.tail; |
| 853 | struct jsm_channel *channel = (struct jsm_channel *)port; | 853 | struct jsm_channel *channel = (struct jsm_channel *)port; |
| 854 | 854 | ||
| 855 | tmask = WQUEUEMASK; | 855 | tmask = WQUEUEMASK; |
| @@ -865,10 +865,10 @@ int jsm_tty_write(struct uart_port *port) | |||
| 865 | data_count = 0; | 865 | data_count = 0; |
| 866 | if (bufcount >= remain) { | 866 | if (bufcount >= remain) { |
| 867 | bufcount -= remain; | 867 | bufcount -= remain; |
| 868 | while ((port->info->xmit.head != temp_tail) && | 868 | while ((port->state->xmit.head != temp_tail) && |
| 869 | (data_count < remain)) { | 869 | (data_count < remain)) { |
| 870 | channel->ch_wqueue[head++] = | 870 | channel->ch_wqueue[head++] = |
| 871 | port->info->xmit.buf[temp_tail]; | 871 | port->state->xmit.buf[temp_tail]; |
| 872 | 872 | ||
| 873 | temp_tail++; | 873 | temp_tail++; |
| 874 | temp_tail &= (UART_XMIT_SIZE - 1); | 874 | temp_tail &= (UART_XMIT_SIZE - 1); |
| @@ -880,10 +880,10 @@ int jsm_tty_write(struct uart_port *port) | |||
| 880 | data_count1 = 0; | 880 | data_count1 = 0; |
| 881 | if (bufcount > 0) { | 881 | if (bufcount > 0) { |
| 882 | remain = bufcount; | 882 | remain = bufcount; |
| 883 | while ((port->info->xmit.head != temp_tail) && | 883 | while ((port->state->xmit.head != temp_tail) && |
| 884 | (data_count1 < remain)) { | 884 | (data_count1 < remain)) { |
| 885 | channel->ch_wqueue[head++] = | 885 | channel->ch_wqueue[head++] = |
| 886 | port->info->xmit.buf[temp_tail]; | 886 | port->state->xmit.buf[temp_tail]; |
| 887 | 887 | ||
| 888 | temp_tail++; | 888 | temp_tail++; |
| 889 | temp_tail &= (UART_XMIT_SIZE - 1); | 889 | temp_tail &= (UART_XMIT_SIZE - 1); |
| @@ -892,7 +892,7 @@ int jsm_tty_write(struct uart_port *port) | |||
| 892 | } | 892 | } |
| 893 | } | 893 | } |
| 894 | 894 | ||
| 895 | port->info->xmit.tail = temp_tail; | 895 | port->state->xmit.tail = temp_tail; |
| 896 | 896 | ||
| 897 | data_count += data_count1; | 897 | data_count += data_count1; |
| 898 | if (data_count) { | 898 | if (data_count) { |
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c index 611c97a15654..bea5c215460c 100644 --- a/drivers/serial/m32r_sio.c +++ b/drivers/serial/m32r_sio.c | |||
| @@ -286,7 +286,7 @@ static void m32r_sio_start_tx(struct uart_port *port) | |||
| 286 | { | 286 | { |
| 287 | #ifdef CONFIG_SERIAL_M32R_PLDSIO | 287 | #ifdef CONFIG_SERIAL_M32R_PLDSIO |
| 288 | struct uart_sio_port *up = (struct uart_sio_port *)port; | 288 | struct uart_sio_port *up = (struct uart_sio_port *)port; |
| 289 | struct circ_buf *xmit = &up->port.info->xmit; | 289 | struct circ_buf *xmit = &up->port.state->xmit; |
| 290 | 290 | ||
| 291 | if (!(up->ier & UART_IER_THRI)) { | 291 | if (!(up->ier & UART_IER_THRI)) { |
| 292 | up->ier |= UART_IER_THRI; | 292 | up->ier |= UART_IER_THRI; |
| @@ -325,7 +325,7 @@ static void m32r_sio_enable_ms(struct uart_port *port) | |||
| 325 | 325 | ||
| 326 | static void receive_chars(struct uart_sio_port *up, int *status) | 326 | static void receive_chars(struct uart_sio_port *up, int *status) |
| 327 | { | 327 | { |
| 328 | struct tty_struct *tty = up->port.info->port.tty; | 328 | struct tty_struct *tty = up->port.state->port.tty; |
| 329 | unsigned char ch; | 329 | unsigned char ch; |
| 330 | unsigned char flag; | 330 | unsigned char flag; |
| 331 | int max_count = 256; | 331 | int max_count = 256; |
| @@ -398,7 +398,7 @@ static void receive_chars(struct uart_sio_port *up, int *status) | |||
| 398 | 398 | ||
| 399 | static void transmit_chars(struct uart_sio_port *up) | 399 | static void transmit_chars(struct uart_sio_port *up) |
| 400 | { | 400 | { |
| 401 | struct circ_buf *xmit = &up->port.info->xmit; | 401 | struct circ_buf *xmit = &up->port.state->xmit; |
| 402 | int count; | 402 | int count; |
| 403 | 403 | ||
| 404 | if (up->port.x_char) { | 404 | if (up->port.x_char) { |
diff --git a/drivers/serial/max3100.c b/drivers/serial/max3100.c index 9fd33e5622bd..75ab00631c41 100644 --- a/drivers/serial/max3100.c +++ b/drivers/serial/max3100.c | |||
| @@ -184,7 +184,7 @@ static void max3100_timeout(unsigned long data) | |||
| 184 | { | 184 | { |
| 185 | struct max3100_port *s = (struct max3100_port *)data; | 185 | struct max3100_port *s = (struct max3100_port *)data; |
| 186 | 186 | ||
| 187 | if (s->port.info) { | 187 | if (s->port.state) { |
| 188 | max3100_dowork(s); | 188 | max3100_dowork(s); |
| 189 | mod_timer(&s->timer, jiffies + s->poll_time); | 189 | mod_timer(&s->timer, jiffies + s->poll_time); |
| 190 | } | 190 | } |
| @@ -261,7 +261,7 @@ static void max3100_work(struct work_struct *w) | |||
| 261 | int rxchars; | 261 | int rxchars; |
| 262 | u16 tx, rx; | 262 | u16 tx, rx; |
| 263 | int conf, cconf, rts, crts; | 263 | int conf, cconf, rts, crts; |
| 264 | struct circ_buf *xmit = &s->port.info->xmit; | 264 | struct circ_buf *xmit = &s->port.state->xmit; |
| 265 | 265 | ||
| 266 | dev_dbg(&s->spi->dev, "%s\n", __func__); | 266 | dev_dbg(&s->spi->dev, "%s\n", __func__); |
| 267 | 267 | ||
| @@ -307,8 +307,8 @@ static void max3100_work(struct work_struct *w) | |||
| 307 | } | 307 | } |
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | if (rxchars > 16 && s->port.info->port.tty != NULL) { | 310 | if (rxchars > 16 && s->port.state->port.tty != NULL) { |
| 311 | tty_flip_buffer_push(s->port.info->port.tty); | 311 | tty_flip_buffer_push(s->port.state->port.tty); |
| 312 | rxchars = 0; | 312 | rxchars = 0; |
| 313 | } | 313 | } |
| 314 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | 314 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) |
| @@ -320,8 +320,8 @@ static void max3100_work(struct work_struct *w) | |||
| 320 | (!uart_circ_empty(xmit) && | 320 | (!uart_circ_empty(xmit) && |
| 321 | !uart_tx_stopped(&s->port)))); | 321 | !uart_tx_stopped(&s->port)))); |
| 322 | 322 | ||
| 323 | if (rxchars > 0 && s->port.info->port.tty != NULL) | 323 | if (rxchars > 0 && s->port.state->port.tty != NULL) |
| 324 | tty_flip_buffer_push(s->port.info->port.tty); | 324 | tty_flip_buffer_push(s->port.state->port.tty); |
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | static irqreturn_t max3100_irq(int irqno, void *dev_id) | 327 | static irqreturn_t max3100_irq(int irqno, void *dev_id) |
| @@ -429,7 +429,7 @@ max3100_set_termios(struct uart_port *port, struct ktermios *termios, | |||
| 429 | int baud = 0; | 429 | int baud = 0; |
| 430 | unsigned cflag; | 430 | unsigned cflag; |
| 431 | u32 param_new, param_mask, parity = 0; | 431 | u32 param_new, param_mask, parity = 0; |
| 432 | struct tty_struct *tty = s->port.info->port.tty; | 432 | struct tty_struct *tty = s->port.state->port.tty; |
| 433 | 433 | ||
| 434 | dev_dbg(&s->spi->dev, "%s\n", __func__); | 434 | dev_dbg(&s->spi->dev, "%s\n", __func__); |
| 435 | if (!tty) | 435 | if (!tty) |
| @@ -529,7 +529,7 @@ max3100_set_termios(struct uart_port *port, struct ktermios *termios, | |||
| 529 | MAX3100_STATUS_OE; | 529 | MAX3100_STATUS_OE; |
| 530 | 530 | ||
| 531 | /* we are sending char from a workqueue so enable */ | 531 | /* we are sending char from a workqueue so enable */ |
| 532 | s->port.info->port.tty->low_latency = 1; | 532 | s->port.state->port.tty->low_latency = 1; |
| 533 | 533 | ||
| 534 | if (s->poll_time > 0) | 534 | if (s->poll_time > 0) |
| 535 | del_timer_sync(&s->timer); | 535 | del_timer_sync(&s->timer); |
diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c index 0eefb07bebaf..b44382442bf1 100644 --- a/drivers/serial/mcf.c +++ b/drivers/serial/mcf.c | |||
| @@ -323,7 +323,7 @@ static void mcf_rx_chars(struct mcf_uart *pp) | |||
| 323 | uart_insert_char(port, status, MCFUART_USR_RXOVERRUN, ch, flag); | 323 | uart_insert_char(port, status, MCFUART_USR_RXOVERRUN, ch, flag); |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | tty_flip_buffer_push(port->info->port.tty); | 326 | tty_flip_buffer_push(port->state->port.tty); |
| 327 | } | 327 | } |
| 328 | 328 | ||
| 329 | /****************************************************************************/ | 329 | /****************************************************************************/ |
| @@ -331,7 +331,7 @@ static void mcf_rx_chars(struct mcf_uart *pp) | |||
| 331 | static void mcf_tx_chars(struct mcf_uart *pp) | 331 | static void mcf_tx_chars(struct mcf_uart *pp) |
| 332 | { | 332 | { |
| 333 | struct uart_port *port = &pp->port; | 333 | struct uart_port *port = &pp->port; |
| 334 | struct circ_buf *xmit = &port->info->xmit; | 334 | struct circ_buf *xmit = &port->state->xmit; |
| 335 | 335 | ||
| 336 | if (port->x_char) { | 336 | if (port->x_char) { |
| 337 | /* Send special char - probably flow control */ | 337 | /* Send special char - probably flow control */ |
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c index abbd146c50d9..d7bcd074d383 100644 --- a/drivers/serial/mpc52xx_uart.c +++ b/drivers/serial/mpc52xx_uart.c | |||
| @@ -745,7 +745,7 @@ static struct uart_ops mpc52xx_uart_ops = { | |||
| 745 | static inline int | 745 | static inline int |
| 746 | mpc52xx_uart_int_rx_chars(struct uart_port *port) | 746 | mpc52xx_uart_int_rx_chars(struct uart_port *port) |
| 747 | { | 747 | { |
| 748 | struct tty_struct *tty = port->info->port.tty; | 748 | struct tty_struct *tty = port->state->port.tty; |
| 749 | unsigned char ch, flag; | 749 | unsigned char ch, flag; |
| 750 | unsigned short status; | 750 | unsigned short status; |
| 751 | 751 | ||
| @@ -812,7 +812,7 @@ mpc52xx_uart_int_rx_chars(struct uart_port *port) | |||
| 812 | static inline int | 812 | static inline int |
| 813 | mpc52xx_uart_int_tx_chars(struct uart_port *port) | 813 | mpc52xx_uart_int_tx_chars(struct uart_port *port) |
| 814 | { | 814 | { |
| 815 | struct circ_buf *xmit = &port->info->xmit; | 815 | struct circ_buf *xmit = &port->state->xmit; |
| 816 | 816 | ||
| 817 | /* Process out of band chars */ | 817 | /* Process out of band chars */ |
| 818 | if (port->x_char) { | 818 | if (port->x_char) { |
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c index 61d3ade5286c..b5496c28e60b 100644 --- a/drivers/serial/mpsc.c +++ b/drivers/serial/mpsc.c | |||
| @@ -936,7 +936,7 @@ static int serial_polled; | |||
| 936 | static int mpsc_rx_intr(struct mpsc_port_info *pi) | 936 | static int mpsc_rx_intr(struct mpsc_port_info *pi) |
| 937 | { | 937 | { |
| 938 | struct mpsc_rx_desc *rxre; | 938 | struct mpsc_rx_desc *rxre; |
| 939 | struct tty_struct *tty = pi->port.info->port.tty; | 939 | struct tty_struct *tty = pi->port.state->port.tty; |
| 940 | u32 cmdstat, bytes_in, i; | 940 | u32 cmdstat, bytes_in, i; |
| 941 | int rc = 0; | 941 | int rc = 0; |
| 942 | u8 *bp; | 942 | u8 *bp; |
| @@ -1109,7 +1109,7 @@ static void mpsc_setup_tx_desc(struct mpsc_port_info *pi, u32 count, u32 intr) | |||
| 1109 | 1109 | ||
| 1110 | static void mpsc_copy_tx_data(struct mpsc_port_info *pi) | 1110 | static void mpsc_copy_tx_data(struct mpsc_port_info *pi) |
| 1111 | { | 1111 | { |
| 1112 | struct circ_buf *xmit = &pi->port.info->xmit; | 1112 | struct circ_buf *xmit = &pi->port.state->xmit; |
| 1113 | u8 *bp; | 1113 | u8 *bp; |
| 1114 | u32 i; | 1114 | u32 i; |
| 1115 | 1115 | ||
diff --git a/drivers/serial/msm_serial.c b/drivers/serial/msm_serial.c index f7c24baa1416..ff18d50c99c1 100644 --- a/drivers/serial/msm_serial.c +++ b/drivers/serial/msm_serial.c | |||
| @@ -88,7 +88,7 @@ static void msm_enable_ms(struct uart_port *port) | |||
| 88 | 88 | ||
| 89 | static void handle_rx(struct uart_port *port) | 89 | static void handle_rx(struct uart_port *port) |
| 90 | { | 90 | { |
| 91 | struct tty_struct *tty = port->info->port.tty; | 91 | struct tty_struct *tty = port->state->port.tty; |
| 92 | unsigned int sr; | 92 | unsigned int sr; |
| 93 | 93 | ||
| 94 | /* | 94 | /* |
| @@ -136,7 +136,7 @@ static void handle_rx(struct uart_port *port) | |||
| 136 | 136 | ||
| 137 | static void handle_tx(struct uart_port *port) | 137 | static void handle_tx(struct uart_port *port) |
| 138 | { | 138 | { |
| 139 | struct circ_buf *xmit = &port->info->xmit; | 139 | struct circ_buf *xmit = &port->state->xmit; |
| 140 | struct msm_port *msm_port = UART_TO_MSM(port); | 140 | struct msm_port *msm_port = UART_TO_MSM(port); |
| 141 | int sent_tx; | 141 | int sent_tx; |
| 142 | 142 | ||
| @@ -169,7 +169,7 @@ static void handle_delta_cts(struct uart_port *port) | |||
| 169 | { | 169 | { |
| 170 | msm_write(port, UART_CR_CMD_RESET_CTS, UART_CR); | 170 | msm_write(port, UART_CR_CMD_RESET_CTS, UART_CR); |
| 171 | port->icount.cts++; | 171 | port->icount.cts++; |
| 172 | wake_up_interruptible(&port->info->delta_msr_wait); | 172 | wake_up_interruptible(&port->state->delta_msr_wait); |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | static irqreturn_t msm_irq(int irq, void *dev_id) | 175 | static irqreturn_t msm_irq(int irq, void *dev_id) |
diff --git a/drivers/serial/mux.c b/drivers/serial/mux.c index 953a5ffa9b44..7571aaa138b0 100644 --- a/drivers/serial/mux.c +++ b/drivers/serial/mux.c | |||
| @@ -199,7 +199,7 @@ static void mux_break_ctl(struct uart_port *port, int break_state) | |||
| 199 | static void mux_write(struct uart_port *port) | 199 | static void mux_write(struct uart_port *port) |
| 200 | { | 200 | { |
| 201 | int count; | 201 | int count; |
| 202 | struct circ_buf *xmit = &port->info->xmit; | 202 | struct circ_buf *xmit = &port->state->xmit; |
| 203 | 203 | ||
| 204 | if(port->x_char) { | 204 | if(port->x_char) { |
| 205 | UART_PUT_CHAR(port, port->x_char); | 205 | UART_PUT_CHAR(port, port->x_char); |
| @@ -243,7 +243,7 @@ static void mux_write(struct uart_port *port) | |||
| 243 | static void mux_read(struct uart_port *port) | 243 | static void mux_read(struct uart_port *port) |
| 244 | { | 244 | { |
| 245 | int data; | 245 | int data; |
| 246 | struct tty_struct *tty = port->info->port.tty; | 246 | struct tty_struct *tty = port->state->port.tty; |
| 247 | __u32 start_count = port->icount.rx; | 247 | __u32 start_count = port->icount.rx; |
| 248 | 248 | ||
| 249 | while(1) { | 249 | while(1) { |
diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c index 3e5dda8518b7..7735c9f35fa0 100644 --- a/drivers/serial/netx-serial.c +++ b/drivers/serial/netx-serial.c | |||
| @@ -140,7 +140,7 @@ static void netx_enable_ms(struct uart_port *port) | |||
| 140 | 140 | ||
| 141 | static inline void netx_transmit_buffer(struct uart_port *port) | 141 | static inline void netx_transmit_buffer(struct uart_port *port) |
| 142 | { | 142 | { |
| 143 | struct circ_buf *xmit = &port->info->xmit; | 143 | struct circ_buf *xmit = &port->state->xmit; |
| 144 | 144 | ||
| 145 | if (port->x_char) { | 145 | if (port->x_char) { |
| 146 | writel(port->x_char, port->membase + UART_DR); | 146 | writel(port->x_char, port->membase + UART_DR); |
| @@ -185,7 +185,7 @@ static unsigned int netx_tx_empty(struct uart_port *port) | |||
| 185 | 185 | ||
| 186 | static void netx_txint(struct uart_port *port) | 186 | static void netx_txint(struct uart_port *port) |
| 187 | { | 187 | { |
| 188 | struct circ_buf *xmit = &port->info->xmit; | 188 | struct circ_buf *xmit = &port->state->xmit; |
| 189 | 189 | ||
| 190 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { | 190 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { |
| 191 | netx_stop_tx(port); | 191 | netx_stop_tx(port); |
| @@ -201,7 +201,7 @@ static void netx_txint(struct uart_port *port) | |||
| 201 | static void netx_rxint(struct uart_port *port) | 201 | static void netx_rxint(struct uart_port *port) |
| 202 | { | 202 | { |
| 203 | unsigned char rx, flg, status; | 203 | unsigned char rx, flg, status; |
| 204 | struct tty_struct *tty = port->info->port.tty; | 204 | struct tty_struct *tty = port->state->port.tty; |
| 205 | 205 | ||
| 206 | while (!(readl(port->membase + UART_FR) & FR_RXFE)) { | 206 | while (!(readl(port->membase + UART_FR) & FR_RXFE)) { |
| 207 | rx = readl(port->membase + UART_DR); | 207 | rx = readl(port->membase + UART_DR); |
diff --git a/drivers/serial/nwpserial.c b/drivers/serial/nwpserial.c index 9e150b19d726..e1ab8ec0a4a6 100644 --- a/drivers/serial/nwpserial.c +++ b/drivers/serial/nwpserial.c | |||
| @@ -126,7 +126,7 @@ static void nwpserial_config_port(struct uart_port *port, int flags) | |||
| 126 | static irqreturn_t nwpserial_interrupt(int irq, void *dev_id) | 126 | static irqreturn_t nwpserial_interrupt(int irq, void *dev_id) |
| 127 | { | 127 | { |
| 128 | struct nwpserial_port *up = dev_id; | 128 | struct nwpserial_port *up = dev_id; |
| 129 | struct tty_struct *tty = up->port.info->port.tty; | 129 | struct tty_struct *tty = up->port.state->port.tty; |
| 130 | irqreturn_t ret; | 130 | irqreturn_t ret; |
| 131 | unsigned int iir; | 131 | unsigned int iir; |
| 132 | unsigned char ch; | 132 | unsigned char ch; |
| @@ -261,7 +261,7 @@ static void nwpserial_start_tx(struct uart_port *port) | |||
| 261 | struct nwpserial_port *up; | 261 | struct nwpserial_port *up; |
| 262 | struct circ_buf *xmit; | 262 | struct circ_buf *xmit; |
| 263 | up = container_of(port, struct nwpserial_port, port); | 263 | up = container_of(port, struct nwpserial_port, port); |
| 264 | xmit = &up->port.info->xmit; | 264 | xmit = &up->port.state->xmit; |
| 265 | 265 | ||
| 266 | if (port->x_char) { | 266 | if (port->x_char) { |
| 267 | nwpserial_putchar(up, up->port.x_char); | 267 | nwpserial_putchar(up, up->port.x_char); |
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c index 9c1243fbd512..ab4c85ba3549 100644 --- a/drivers/serial/pmac_zilog.c +++ b/drivers/serial/pmac_zilog.c | |||
| @@ -242,12 +242,12 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap) | |||
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | /* Sanity check, make sure the old bug is no longer happening */ | 244 | /* Sanity check, make sure the old bug is no longer happening */ |
| 245 | if (uap->port.info == NULL || uap->port.info->port.tty == NULL) { | 245 | if (uap->port.state == NULL || uap->port.state->port.tty == NULL) { |
| 246 | WARN_ON(1); | 246 | WARN_ON(1); |
| 247 | (void)read_zsdata(uap); | 247 | (void)read_zsdata(uap); |
| 248 | return NULL; | 248 | return NULL; |
| 249 | } | 249 | } |
| 250 | tty = uap->port.info->port.tty; | 250 | tty = uap->port.state->port.tty; |
| 251 | 251 | ||
| 252 | while (1) { | 252 | while (1) { |
| 253 | error = 0; | 253 | error = 0; |
| @@ -369,7 +369,7 @@ static void pmz_status_handle(struct uart_pmac_port *uap) | |||
| 369 | uart_handle_cts_change(&uap->port, | 369 | uart_handle_cts_change(&uap->port, |
| 370 | !(status & CTS)); | 370 | !(status & CTS)); |
| 371 | 371 | ||
| 372 | wake_up_interruptible(&uap->port.info->delta_msr_wait); | 372 | wake_up_interruptible(&uap->port.state->delta_msr_wait); |
| 373 | } | 373 | } |
| 374 | 374 | ||
| 375 | if (status & BRK_ABRT) | 375 | if (status & BRK_ABRT) |
| @@ -420,9 +420,9 @@ static void pmz_transmit_chars(struct uart_pmac_port *uap) | |||
| 420 | return; | 420 | return; |
| 421 | } | 421 | } |
| 422 | 422 | ||
| 423 | if (uap->port.info == NULL) | 423 | if (uap->port.state == NULL) |
| 424 | goto ack_tx_int; | 424 | goto ack_tx_int; |
| 425 | xmit = &uap->port.info->xmit; | 425 | xmit = &uap->port.state->xmit; |
| 426 | if (uart_circ_empty(xmit)) { | 426 | if (uart_circ_empty(xmit)) { |
| 427 | uart_write_wakeup(&uap->port); | 427 | uart_write_wakeup(&uap->port); |
| 428 | goto ack_tx_int; | 428 | goto ack_tx_int; |
| @@ -655,7 +655,7 @@ static void pmz_start_tx(struct uart_port *port) | |||
| 655 | port->icount.tx++; | 655 | port->icount.tx++; |
| 656 | port->x_char = 0; | 656 | port->x_char = 0; |
| 657 | } else { | 657 | } else { |
| 658 | struct circ_buf *xmit = &port->info->xmit; | 658 | struct circ_buf *xmit = &port->state->xmit; |
| 659 | 659 | ||
| 660 | write_zsdata(uap, xmit->buf[xmit->tail]); | 660 | write_zsdata(uap, xmit->buf[xmit->tail]); |
| 661 | zssync(uap); | 661 | zssync(uap); |
diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c index 1bb8f1b45767..2da747635275 100644 --- a/drivers/serial/pnx8xxx_uart.c +++ b/drivers/serial/pnx8xxx_uart.c | |||
| @@ -100,7 +100,7 @@ static void pnx8xxx_mctrl_check(struct pnx8xxx_port *sport) | |||
| 100 | if (changed & TIOCM_CTS) | 100 | if (changed & TIOCM_CTS) |
| 101 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); | 101 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); |
| 102 | 102 | ||
| 103 | wake_up_interruptible(&sport->port.info->delta_msr_wait); | 103 | wake_up_interruptible(&sport->port.state->delta_msr_wait); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | /* | 106 | /* |
| @@ -112,7 +112,7 @@ static void pnx8xxx_timeout(unsigned long data) | |||
| 112 | struct pnx8xxx_port *sport = (struct pnx8xxx_port *)data; | 112 | struct pnx8xxx_port *sport = (struct pnx8xxx_port *)data; |
| 113 | unsigned long flags; | 113 | unsigned long flags; |
| 114 | 114 | ||
| 115 | if (sport->port.info) { | 115 | if (sport->port.state) { |
| 116 | spin_lock_irqsave(&sport->port.lock, flags); | 116 | spin_lock_irqsave(&sport->port.lock, flags); |
| 117 | pnx8xxx_mctrl_check(sport); | 117 | pnx8xxx_mctrl_check(sport); |
| 118 | spin_unlock_irqrestore(&sport->port.lock, flags); | 118 | spin_unlock_irqrestore(&sport->port.lock, flags); |
| @@ -181,7 +181,7 @@ static void pnx8xxx_enable_ms(struct uart_port *port) | |||
| 181 | 181 | ||
| 182 | static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) | 182 | static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) |
| 183 | { | 183 | { |
| 184 | struct tty_struct *tty = sport->port.info->port.tty; | 184 | struct tty_struct *tty = sport->port.state->port.tty; |
| 185 | unsigned int status, ch, flg; | 185 | unsigned int status, ch, flg; |
| 186 | 186 | ||
| 187 | status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | | 187 | status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | |
| @@ -243,7 +243,7 @@ static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) | |||
| 243 | 243 | ||
| 244 | static void pnx8xxx_tx_chars(struct pnx8xxx_port *sport) | 244 | static void pnx8xxx_tx_chars(struct pnx8xxx_port *sport) |
| 245 | { | 245 | { |
| 246 | struct circ_buf *xmit = &sport->port.info->xmit; | 246 | struct circ_buf *xmit = &sport->port.state->xmit; |
| 247 | 247 | ||
| 248 | if (sport->port.x_char) { | 248 | if (sport->port.x_char) { |
| 249 | serial_out(sport, PNX8XXX_FIFO, sport->port.x_char); | 249 | serial_out(sport, PNX8XXX_FIFO, sport->port.x_char); |
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index a48a8a13d87b..ad48919c0415 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c | |||
| @@ -96,7 +96,7 @@ static void serial_pxa_stop_rx(struct uart_port *port) | |||
| 96 | 96 | ||
| 97 | static inline void receive_chars(struct uart_pxa_port *up, int *status) | 97 | static inline void receive_chars(struct uart_pxa_port *up, int *status) |
| 98 | { | 98 | { |
| 99 | struct tty_struct *tty = up->port.info->port.tty; | 99 | struct tty_struct *tty = up->port.state->port.tty; |
| 100 | unsigned int ch, flag; | 100 | unsigned int ch, flag; |
| 101 | int max_count = 256; | 101 | int max_count = 256; |
| 102 | 102 | ||
| @@ -161,7 +161,7 @@ static inline void receive_chars(struct uart_pxa_port *up, int *status) | |||
| 161 | 161 | ||
| 162 | static void transmit_chars(struct uart_pxa_port *up) | 162 | static void transmit_chars(struct uart_pxa_port *up) |
| 163 | { | 163 | { |
| 164 | struct circ_buf *xmit = &up->port.info->xmit; | 164 | struct circ_buf *xmit = &up->port.state->xmit; |
| 165 | int count; | 165 | int count; |
| 166 | 166 | ||
| 167 | if (up->port.x_char) { | 167 | if (up->port.x_char) { |
| @@ -220,7 +220,7 @@ static inline void check_modem_status(struct uart_pxa_port *up) | |||
| 220 | if (status & UART_MSR_DCTS) | 220 | if (status & UART_MSR_DCTS) |
| 221 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); | 221 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); |
| 222 | 222 | ||
| 223 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 223 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | /* | 226 | /* |
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index 94530f01521e..61ef3ae24927 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c | |||
| @@ -117,7 +117,7 @@ static void sa1100_mctrl_check(struct sa1100_port *sport) | |||
| 117 | if (changed & TIOCM_CTS) | 117 | if (changed & TIOCM_CTS) |
| 118 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); | 118 | uart_handle_cts_change(&sport->port, status & TIOCM_CTS); |
| 119 | 119 | ||
| 120 | wake_up_interruptible(&sport->port.info->delta_msr_wait); | 120 | wake_up_interruptible(&sport->port.state->delta_msr_wait); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | /* | 123 | /* |
| @@ -129,7 +129,7 @@ static void sa1100_timeout(unsigned long data) | |||
| 129 | struct sa1100_port *sport = (struct sa1100_port *)data; | 129 | struct sa1100_port *sport = (struct sa1100_port *)data; |
| 130 | unsigned long flags; | 130 | unsigned long flags; |
| 131 | 131 | ||
| 132 | if (sport->port.info) { | 132 | if (sport->port.state) { |
| 133 | spin_lock_irqsave(&sport->port.lock, flags); | 133 | spin_lock_irqsave(&sport->port.lock, flags); |
| 134 | sa1100_mctrl_check(sport); | 134 | sa1100_mctrl_check(sport); |
| 135 | spin_unlock_irqrestore(&sport->port.lock, flags); | 135 | spin_unlock_irqrestore(&sport->port.lock, flags); |
| @@ -189,7 +189,7 @@ static void sa1100_enable_ms(struct uart_port *port) | |||
| 189 | static void | 189 | static void |
| 190 | sa1100_rx_chars(struct sa1100_port *sport) | 190 | sa1100_rx_chars(struct sa1100_port *sport) |
| 191 | { | 191 | { |
| 192 | struct tty_struct *tty = sport->port.info->port.tty; | 192 | struct tty_struct *tty = sport->port.state->port.tty; |
| 193 | unsigned int status, ch, flg; | 193 | unsigned int status, ch, flg; |
| 194 | 194 | ||
| 195 | status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | | 195 | status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | |
| @@ -239,7 +239,7 @@ sa1100_rx_chars(struct sa1100_port *sport) | |||
| 239 | 239 | ||
| 240 | static void sa1100_tx_chars(struct sa1100_port *sport) | 240 | static void sa1100_tx_chars(struct sa1100_port *sport) |
| 241 | { | 241 | { |
| 242 | struct circ_buf *xmit = &sport->port.info->xmit; | 242 | struct circ_buf *xmit = &sport->port.state->xmit; |
| 243 | 243 | ||
| 244 | if (sport->port.x_char) { | 244 | if (sport->port.x_char) { |
| 245 | UART_PUT_CHAR(sport, sport->port.x_char); | 245 | UART_PUT_CHAR(sport, sport->port.x_char); |
diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c index c8851a0db63a..1523e8d9ae77 100644 --- a/drivers/serial/samsung.c +++ b/drivers/serial/samsung.c | |||
| @@ -196,7 +196,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id) | |||
| 196 | { | 196 | { |
| 197 | struct s3c24xx_uart_port *ourport = dev_id; | 197 | struct s3c24xx_uart_port *ourport = dev_id; |
| 198 | struct uart_port *port = &ourport->port; | 198 | struct uart_port *port = &ourport->port; |
| 199 | struct tty_struct *tty = port->info->port.tty; | 199 | struct tty_struct *tty = port->state->port.tty; |
| 200 | unsigned int ufcon, ch, flag, ufstat, uerstat; | 200 | unsigned int ufcon, ch, flag, ufstat, uerstat; |
| 201 | int max_count = 64; | 201 | int max_count = 64; |
| 202 | 202 | ||
| @@ -281,7 +281,7 @@ static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id) | |||
| 281 | { | 281 | { |
| 282 | struct s3c24xx_uart_port *ourport = id; | 282 | struct s3c24xx_uart_port *ourport = id; |
| 283 | struct uart_port *port = &ourport->port; | 283 | struct uart_port *port = &ourport->port; |
| 284 | struct circ_buf *xmit = &port->info->xmit; | 284 | struct circ_buf *xmit = &port->state->xmit; |
| 285 | int count = 256; | 285 | int count = 256; |
| 286 | 286 | ||
| 287 | if (port->x_char) { | 287 | if (port->x_char) { |
| @@ -992,10 +992,10 @@ static int s3c24xx_serial_cpufreq_transition(struct notifier_block *nb, | |||
| 992 | struct ktermios *termios; | 992 | struct ktermios *termios; |
| 993 | struct tty_struct *tty; | 993 | struct tty_struct *tty; |
| 994 | 994 | ||
| 995 | if (uport->info == NULL) | 995 | if (uport->state == NULL) |
| 996 | goto exit; | 996 | goto exit; |
| 997 | 997 | ||
| 998 | tty = uport->info->port.tty; | 998 | tty = uport->state->port.tty; |
| 999 | 999 | ||
| 1000 | if (tty == NULL) | 1000 | if (tty == NULL) |
| 1001 | goto exit; | 1001 | goto exit; |
diff --git a/drivers/serial/sb1250-duart.c b/drivers/serial/sb1250-duart.c index 319e8b83f6be..fa5f303b36d3 100644 --- a/drivers/serial/sb1250-duart.c +++ b/drivers/serial/sb1250-duart.c | |||
| @@ -384,13 +384,13 @@ static void sbd_receive_chars(struct sbd_port *sport) | |||
| 384 | uart_insert_char(uport, status, M_DUART_OVRUN_ERR, ch, flag); | 384 | uart_insert_char(uport, status, M_DUART_OVRUN_ERR, ch, flag); |
| 385 | } | 385 | } |
| 386 | 386 | ||
| 387 | tty_flip_buffer_push(uport->info->port.tty); | 387 | tty_flip_buffer_push(uport->state->port.tty); |
| 388 | } | 388 | } |
| 389 | 389 | ||
| 390 | static void sbd_transmit_chars(struct sbd_port *sport) | 390 | static void sbd_transmit_chars(struct sbd_port *sport) |
| 391 | { | 391 | { |
| 392 | struct uart_port *uport = &sport->port; | 392 | struct uart_port *uport = &sport->port; |
| 393 | struct circ_buf *xmit = &sport->port.info->xmit; | 393 | struct circ_buf *xmit = &sport->port.state->xmit; |
| 394 | unsigned int mask; | 394 | unsigned int mask; |
| 395 | int stop_tx; | 395 | int stop_tx; |
| 396 | 396 | ||
| @@ -440,7 +440,7 @@ static void sbd_status_handle(struct sbd_port *sport) | |||
| 440 | 440 | ||
| 441 | if (delta & ((M_DUART_IN_PIN2_VAL | M_DUART_IN_PIN0_VAL) << | 441 | if (delta & ((M_DUART_IN_PIN2_VAL | M_DUART_IN_PIN0_VAL) << |
| 442 | S_DUART_IN_PIN_CHNG)) | 442 | S_DUART_IN_PIN_CHNG)) |
| 443 | wake_up_interruptible(&uport->info->delta_msr_wait); | 443 | wake_up_interruptible(&uport->state->delta_msr_wait); |
| 444 | } | 444 | } |
| 445 | 445 | ||
| 446 | static irqreturn_t sbd_interrupt(int irq, void *dev_id) | 446 | static irqreturn_t sbd_interrupt(int irq, void *dev_id) |
diff --git a/drivers/serial/sc26xx.c b/drivers/serial/sc26xx.c index e0be11ceaa25..75038ad2b242 100644 --- a/drivers/serial/sc26xx.c +++ b/drivers/serial/sc26xx.c | |||
| @@ -140,8 +140,8 @@ static struct tty_struct *receive_chars(struct uart_port *port) | |||
| 140 | char flag; | 140 | char flag; |
| 141 | u8 status; | 141 | u8 status; |
| 142 | 142 | ||
| 143 | if (port->info != NULL) /* Unopened serial console */ | 143 | if (port->state != NULL) /* Unopened serial console */ |
| 144 | tty = port->info->port.tty; | 144 | tty = port->state->port.tty; |
| 145 | 145 | ||
| 146 | while (limit-- > 0) { | 146 | while (limit-- > 0) { |
| 147 | status = READ_SC_PORT(port, SR); | 147 | status = READ_SC_PORT(port, SR); |
| @@ -190,10 +190,10 @@ static void transmit_chars(struct uart_port *port) | |||
| 190 | { | 190 | { |
| 191 | struct circ_buf *xmit; | 191 | struct circ_buf *xmit; |
| 192 | 192 | ||
| 193 | if (!port->info) | 193 | if (!port->state) |
| 194 | return; | 194 | return; |
| 195 | 195 | ||
| 196 | xmit = &port->info->xmit; | 196 | xmit = &port->state->xmit; |
| 197 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { | 197 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { |
| 198 | sc26xx_disable_irq(port, IMR_TXRDY); | 198 | sc26xx_disable_irq(port, IMR_TXRDY); |
| 199 | return; | 199 | return; |
| @@ -316,7 +316,7 @@ static void sc26xx_stop_tx(struct uart_port *port) | |||
| 316 | /* port->lock held by caller. */ | 316 | /* port->lock held by caller. */ |
| 317 | static void sc26xx_start_tx(struct uart_port *port) | 317 | static void sc26xx_start_tx(struct uart_port *port) |
| 318 | { | 318 | { |
| 319 | struct circ_buf *xmit = &port->info->xmit; | 319 | struct circ_buf *xmit = &port->state->xmit; |
| 320 | 320 | ||
| 321 | while (!uart_circ_empty(xmit)) { | 321 | while (!uart_circ_empty(xmit)) { |
| 322 | if (!(READ_SC_PORT(port, SR) & SR_TXRDY)) { | 322 | if (!(READ_SC_PORT(port, SR) & SR_TXRDY)) { |
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index b0bb29d804ae..ea53b6f224b0 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
| @@ -52,7 +52,7 @@ static struct lock_class_key port_lock_key; | |||
| 52 | 52 | ||
| 53 | #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) | 53 | #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) |
| 54 | 54 | ||
| 55 | #define uart_users(state) ((state)->count + (state)->info.port.blocked_open) | 55 | #define uart_users(state) ((state)->count + (state)->port.blocked_open) |
| 56 | 56 | ||
| 57 | #ifdef CONFIG_SERIAL_CORE_CONSOLE | 57 | #ifdef CONFIG_SERIAL_CORE_CONSOLE |
| 58 | #define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line) | 58 | #define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line) |
| @@ -71,19 +71,19 @@ static void uart_change_pm(struct uart_state *state, int pm_state); | |||
| 71 | */ | 71 | */ |
| 72 | void uart_write_wakeup(struct uart_port *port) | 72 | void uart_write_wakeup(struct uart_port *port) |
| 73 | { | 73 | { |
| 74 | struct uart_info *info = port->info; | 74 | struct uart_state *state = port->state; |
| 75 | /* | 75 | /* |
| 76 | * This means you called this function _after_ the port was | 76 | * This means you called this function _after_ the port was |
| 77 | * closed. No cookie for you. | 77 | * closed. No cookie for you. |
| 78 | */ | 78 | */ |
| 79 | BUG_ON(!info); | 79 | BUG_ON(!state); |
| 80 | tasklet_schedule(&info->tlet); | 80 | tasklet_schedule(&state->tlet); |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | static void uart_stop(struct tty_struct *tty) | 83 | static void uart_stop(struct tty_struct *tty) |
| 84 | { | 84 | { |
| 85 | struct uart_state *state = tty->driver_data; | 85 | struct uart_state *state = tty->driver_data; |
| 86 | struct uart_port *port = state->port; | 86 | struct uart_port *port = state->uart_port; |
| 87 | unsigned long flags; | 87 | unsigned long flags; |
| 88 | 88 | ||
| 89 | spin_lock_irqsave(&port->lock, flags); | 89 | spin_lock_irqsave(&port->lock, flags); |
| @@ -94,9 +94,9 @@ static void uart_stop(struct tty_struct *tty) | |||
| 94 | static void __uart_start(struct tty_struct *tty) | 94 | static void __uart_start(struct tty_struct *tty) |
| 95 | { | 95 | { |
| 96 | struct uart_state *state = tty->driver_data; | 96 | struct uart_state *state = tty->driver_data; |
| 97 | struct uart_port *port = state->port; | 97 | struct uart_port *port = state->uart_port; |
| 98 | 98 | ||
| 99 | if (!uart_circ_empty(&state->info.xmit) && state->info.xmit.buf && | 99 | if (!uart_circ_empty(&state->xmit) && state->xmit.buf && |
| 100 | !tty->stopped && !tty->hw_stopped) | 100 | !tty->stopped && !tty->hw_stopped) |
| 101 | port->ops->start_tx(port); | 101 | port->ops->start_tx(port); |
| 102 | } | 102 | } |
| @@ -104,7 +104,7 @@ static void __uart_start(struct tty_struct *tty) | |||
| 104 | static void uart_start(struct tty_struct *tty) | 104 | static void uart_start(struct tty_struct *tty) |
| 105 | { | 105 | { |
| 106 | struct uart_state *state = tty->driver_data; | 106 | struct uart_state *state = tty->driver_data; |
| 107 | struct uart_port *port = state->port; | 107 | struct uart_port *port = state->uart_port; |
| 108 | unsigned long flags; | 108 | unsigned long flags; |
| 109 | 109 | ||
| 110 | spin_lock_irqsave(&port->lock, flags); | 110 | spin_lock_irqsave(&port->lock, flags); |
| @@ -115,7 +115,7 @@ static void uart_start(struct tty_struct *tty) | |||
| 115 | static void uart_tasklet_action(unsigned long data) | 115 | static void uart_tasklet_action(unsigned long data) |
| 116 | { | 116 | { |
| 117 | struct uart_state *state = (struct uart_state *)data; | 117 | struct uart_state *state = (struct uart_state *)data; |
| 118 | tty_wakeup(state->info.port.tty); | 118 | tty_wakeup(state->port.tty); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | static inline void | 121 | static inline void |
| @@ -141,12 +141,11 @@ uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear) | |||
| 141 | */ | 141 | */ |
| 142 | static int uart_startup(struct uart_state *state, int init_hw) | 142 | static int uart_startup(struct uart_state *state, int init_hw) |
| 143 | { | 143 | { |
| 144 | struct uart_info *info = &state->info; | 144 | struct uart_port *port = state->uart_port; |
| 145 | struct uart_port *port = state->port; | ||
| 146 | unsigned long page; | 145 | unsigned long page; |
| 147 | int retval = 0; | 146 | int retval = 0; |
| 148 | 147 | ||
| 149 | if (info->flags & UIF_INITIALIZED) | 148 | if (state->flags & UIF_INITIALIZED) |
| 150 | return 0; | 149 | return 0; |
| 151 | 150 | ||
| 152 | /* | 151 | /* |
| @@ -154,7 +153,7 @@ static int uart_startup(struct uart_state *state, int init_hw) | |||
| 154 | * once we have successfully opened the port. Also set | 153 | * once we have successfully opened the port. Also set |
| 155 | * up the tty->alt_speed kludge | 154 | * up the tty->alt_speed kludge |
| 156 | */ | 155 | */ |
| 157 | set_bit(TTY_IO_ERROR, &info->port.tty->flags); | 156 | set_bit(TTY_IO_ERROR, &state->port.tty->flags); |
| 158 | 157 | ||
| 159 | if (port->type == PORT_UNKNOWN) | 158 | if (port->type == PORT_UNKNOWN) |
| 160 | return 0; | 159 | return 0; |
| @@ -163,14 +162,14 @@ static int uart_startup(struct uart_state *state, int init_hw) | |||
| 163 | * Initialise and allocate the transmit and temporary | 162 | * Initialise and allocate the transmit and temporary |
| 164 | * buffer. | 163 | * buffer. |
| 165 | */ | 164 | */ |
| 166 | if (!info->xmit.buf) { | 165 | if (!state->xmit.buf) { |
| 167 | /* This is protected by the per port mutex */ | 166 | /* This is protected by the per port mutex */ |
| 168 | page = get_zeroed_page(GFP_KERNEL); | 167 | page = get_zeroed_page(GFP_KERNEL); |
| 169 | if (!page) | 168 | if (!page) |
| 170 | return -ENOMEM; | 169 | return -ENOMEM; |
| 171 | 170 | ||
| 172 | info->xmit.buf = (unsigned char *) page; | 171 | state->xmit.buf = (unsigned char *) page; |
| 173 | uart_circ_clear(&info->xmit); | 172 | uart_circ_clear(&state->xmit); |
| 174 | } | 173 | } |
| 175 | 174 | ||
| 176 | retval = port->ops->startup(port); | 175 | retval = port->ops->startup(port); |
| @@ -185,20 +184,20 @@ static int uart_startup(struct uart_state *state, int init_hw) | |||
| 185 | * Setup the RTS and DTR signals once the | 184 | * Setup the RTS and DTR signals once the |
| 186 | * port is open and ready to respond. | 185 | * port is open and ready to respond. |
| 187 | */ | 186 | */ |
| 188 | if (info->port.tty->termios->c_cflag & CBAUD) | 187 | if (state->port.tty->termios->c_cflag & CBAUD) |
| 189 | uart_set_mctrl(port, TIOCM_RTS | TIOCM_DTR); | 188 | uart_set_mctrl(port, TIOCM_RTS | TIOCM_DTR); |
| 190 | } | 189 | } |
| 191 | 190 | ||
| 192 | if (info->flags & UIF_CTS_FLOW) { | 191 | if (state->flags & UIF_CTS_FLOW) { |
| 193 | spin_lock_irq(&port->lock); | 192 | spin_lock_irq(&port->lock); |
| 194 | if (!(port->ops->get_mctrl(port) & TIOCM_CTS)) | 193 | if (!(port->ops->get_mctrl(port) & TIOCM_CTS)) |
| 195 | info->port.tty->hw_stopped = 1; | 194 | state->port.tty->hw_stopped = 1; |
| 196 | spin_unlock_irq(&port->lock); | 195 | spin_unlock_irq(&port->lock); |
| 197 | } | 196 | } |
| 198 | 197 | ||
| 199 | info->flags |= UIF_INITIALIZED; | 198 | state->flags |= UIF_INITIALIZED; |
| 200 | 199 | ||
| 201 | clear_bit(TTY_IO_ERROR, &info->port.tty->flags); | 200 | clear_bit(TTY_IO_ERROR, &state->port.tty->flags); |
| 202 | } | 201 | } |
| 203 | 202 | ||
| 204 | if (retval && capable(CAP_SYS_ADMIN)) | 203 | if (retval && capable(CAP_SYS_ADMIN)) |
| @@ -214,9 +213,8 @@ static int uart_startup(struct uart_state *state, int init_hw) | |||
| 214 | */ | 213 | */ |
| 215 | static void uart_shutdown(struct uart_state *state) | 214 | static void uart_shutdown(struct uart_state *state) |
| 216 | { | 215 | { |
| 217 | struct uart_info *info = &state->info; | 216 | struct uart_port *port = state->uart_port; |
| 218 | struct uart_port *port = state->port; | 217 | struct tty_struct *tty = state->port.tty; |
| 219 | struct tty_struct *tty = info->port.tty; | ||
| 220 | 218 | ||
| 221 | /* | 219 | /* |
| 222 | * Set the TTY IO error marker | 220 | * Set the TTY IO error marker |
| @@ -224,8 +222,8 @@ static void uart_shutdown(struct uart_state *state) | |||
| 224 | if (tty) | 222 | if (tty) |
| 225 | set_bit(TTY_IO_ERROR, &tty->flags); | 223 | set_bit(TTY_IO_ERROR, &tty->flags); |
| 226 | 224 | ||
| 227 | if (info->flags & UIF_INITIALIZED) { | 225 | if (state->flags & UIF_INITIALIZED) { |
| 228 | info->flags &= ~UIF_INITIALIZED; | 226 | state->flags &= ~UIF_INITIALIZED; |
| 229 | 227 | ||
| 230 | /* | 228 | /* |
| 231 | * Turn off DTR and RTS early. | 229 | * Turn off DTR and RTS early. |
| @@ -240,7 +238,7 @@ static void uart_shutdown(struct uart_state *state) | |||
| 240 | * any outstanding file descriptors should be pointing at | 238 | * any outstanding file descriptors should be pointing at |
| 241 | * hung_up_tty_fops now. | 239 | * hung_up_tty_fops now. |
| 242 | */ | 240 | */ |
| 243 | wake_up_interruptible(&info->delta_msr_wait); | 241 | wake_up_interruptible(&state->delta_msr_wait); |
| 244 | 242 | ||
| 245 | /* | 243 | /* |
| 246 | * Free the IRQ and disable the port. | 244 | * Free the IRQ and disable the port. |
| @@ -256,14 +254,14 @@ static void uart_shutdown(struct uart_state *state) | |||
| 256 | /* | 254 | /* |
| 257 | * kill off our tasklet | 255 | * kill off our tasklet |
| 258 | */ | 256 | */ |
| 259 | tasklet_kill(&info->tlet); | 257 | tasklet_kill(&state->tlet); |
| 260 | 258 | ||
| 261 | /* | 259 | /* |
| 262 | * Free the transmit buffer page. | 260 | * Free the transmit buffer page. |
| 263 | */ | 261 | */ |
| 264 | if (info->xmit.buf) { | 262 | if (state->xmit.buf) { |
| 265 | free_page((unsigned long)info->xmit.buf); | 263 | free_page((unsigned long)state->xmit.buf); |
| 266 | info->xmit.buf = NULL; | 264 | state->xmit.buf = NULL; |
| 267 | } | 265 | } |
| 268 | } | 266 | } |
| 269 | 267 | ||
| @@ -430,8 +428,8 @@ EXPORT_SYMBOL(uart_get_divisor); | |||
| 430 | static void | 428 | static void |
| 431 | uart_change_speed(struct uart_state *state, struct ktermios *old_termios) | 429 | uart_change_speed(struct uart_state *state, struct ktermios *old_termios) |
| 432 | { | 430 | { |
| 433 | struct tty_struct *tty = state->info.port.tty; | 431 | struct tty_struct *tty = state->port.tty; |
| 434 | struct uart_port *port = state->port; | 432 | struct uart_port *port = state->uart_port; |
| 435 | struct ktermios *termios; | 433 | struct ktermios *termios; |
| 436 | 434 | ||
| 437 | /* | 435 | /* |
| @@ -447,14 +445,14 @@ uart_change_speed(struct uart_state *state, struct ktermios *old_termios) | |||
| 447 | * Set flags based on termios cflag | 445 | * Set flags based on termios cflag |
| 448 | */ | 446 | */ |
| 449 | if (termios->c_cflag & CRTSCTS) | 447 | if (termios->c_cflag & CRTSCTS) |
| 450 | state->info.flags |= UIF_CTS_FLOW; | 448 | state->flags |= UIF_CTS_FLOW; |
| 451 | else | 449 | else |
| 452 | state->info.flags &= ~UIF_CTS_FLOW; | 450 | state->flags &= ~UIF_CTS_FLOW; |
| 453 | 451 | ||
| 454 | if (termios->c_cflag & CLOCAL) | 452 | if (termios->c_cflag & CLOCAL) |
| 455 | state->info.flags &= ~UIF_CHECK_CD; | 453 | state->flags &= ~UIF_CHECK_CD; |
| 456 | else | 454 | else |
| 457 | state->info.flags |= UIF_CHECK_CD; | 455 | state->flags |= UIF_CHECK_CD; |
| 458 | 456 | ||
| 459 | port->ops->set_termios(port, termios, old_termios); | 457 | port->ops->set_termios(port, termios, old_termios); |
| 460 | } | 458 | } |
| @@ -482,7 +480,7 @@ static int uart_put_char(struct tty_struct *tty, unsigned char ch) | |||
| 482 | { | 480 | { |
| 483 | struct uart_state *state = tty->driver_data; | 481 | struct uart_state *state = tty->driver_data; |
| 484 | 482 | ||
| 485 | return __uart_put_char(state->port, &state->info.xmit, ch); | 483 | return __uart_put_char(state->uart_port, &state->xmit, ch); |
| 486 | } | 484 | } |
| 487 | 485 | ||
| 488 | static void uart_flush_chars(struct tty_struct *tty) | 486 | static void uart_flush_chars(struct tty_struct *tty) |
| @@ -508,8 +506,8 @@ uart_write(struct tty_struct *tty, const unsigned char *buf, int count) | |||
| 508 | return -EL3HLT; | 506 | return -EL3HLT; |
| 509 | } | 507 | } |
| 510 | 508 | ||
| 511 | port = state->port; | 509 | port = state->uart_port; |
| 512 | circ = &state->info.xmit; | 510 | circ = &state->xmit; |
| 513 | 511 | ||
| 514 | if (!circ->buf) | 512 | if (!circ->buf) |
| 515 | return 0; | 513 | return 0; |
| @@ -539,9 +537,9 @@ static int uart_write_room(struct tty_struct *tty) | |||
| 539 | unsigned long flags; | 537 | unsigned long flags; |
| 540 | int ret; | 538 | int ret; |
| 541 | 539 | ||
| 542 | spin_lock_irqsave(&state->port->lock, flags); | 540 | spin_lock_irqsave(&state->uart_port->lock, flags); |
| 543 | ret = uart_circ_chars_free(&state->info.xmit); | 541 | ret = uart_circ_chars_free(&state->xmit); |
| 544 | spin_unlock_irqrestore(&state->port->lock, flags); | 542 | spin_unlock_irqrestore(&state->uart_port->lock, flags); |
| 545 | return ret; | 543 | return ret; |
| 546 | } | 544 | } |
| 547 | 545 | ||
| @@ -551,9 +549,9 @@ static int uart_chars_in_buffer(struct tty_struct *tty) | |||
| 551 | unsigned long flags; | 549 | unsigned long flags; |
| 552 | int ret; | 550 | int ret; |
| 553 | 551 | ||
| 554 | spin_lock_irqsave(&state->port->lock, flags); | 552 | spin_lock_irqsave(&state->uart_port->lock, flags); |
| 555 | ret = uart_circ_chars_pending(&state->info.xmit); | 553 | ret = uart_circ_chars_pending(&state->xmit); |
| 556 | spin_unlock_irqrestore(&state->port->lock, flags); | 554 | spin_unlock_irqrestore(&state->uart_port->lock, flags); |
| 557 | return ret; | 555 | return ret; |
| 558 | } | 556 | } |
| 559 | 557 | ||
| @@ -572,11 +570,11 @@ static void uart_flush_buffer(struct tty_struct *tty) | |||
| 572 | return; | 570 | return; |
| 573 | } | 571 | } |
| 574 | 572 | ||
| 575 | port = state->port; | 573 | port = state->uart_port; |
| 576 | pr_debug("uart_flush_buffer(%d) called\n", tty->index); | 574 | pr_debug("uart_flush_buffer(%d) called\n", tty->index); |
| 577 | 575 | ||
| 578 | spin_lock_irqsave(&port->lock, flags); | 576 | spin_lock_irqsave(&port->lock, flags); |
| 579 | uart_circ_clear(&state->info.xmit); | 577 | uart_circ_clear(&state->xmit); |
| 580 | if (port->ops->flush_buffer) | 578 | if (port->ops->flush_buffer) |
| 581 | port->ops->flush_buffer(port); | 579 | port->ops->flush_buffer(port); |
| 582 | spin_unlock_irqrestore(&port->lock, flags); | 580 | spin_unlock_irqrestore(&port->lock, flags); |
| @@ -590,7 +588,7 @@ static void uart_flush_buffer(struct tty_struct *tty) | |||
| 590 | static void uart_send_xchar(struct tty_struct *tty, char ch) | 588 | static void uart_send_xchar(struct tty_struct *tty, char ch) |
| 591 | { | 589 | { |
| 592 | struct uart_state *state = tty->driver_data; | 590 | struct uart_state *state = tty->driver_data; |
| 593 | struct uart_port *port = state->port; | 591 | struct uart_port *port = state->uart_port; |
| 594 | unsigned long flags; | 592 | unsigned long flags; |
| 595 | 593 | ||
| 596 | if (port->ops->send_xchar) | 594 | if (port->ops->send_xchar) |
| @@ -613,13 +611,13 @@ static void uart_throttle(struct tty_struct *tty) | |||
| 613 | uart_send_xchar(tty, STOP_CHAR(tty)); | 611 | uart_send_xchar(tty, STOP_CHAR(tty)); |
| 614 | 612 | ||
| 615 | if (tty->termios->c_cflag & CRTSCTS) | 613 | if (tty->termios->c_cflag & CRTSCTS) |
| 616 | uart_clear_mctrl(state->port, TIOCM_RTS); | 614 | uart_clear_mctrl(state->uart_port, TIOCM_RTS); |
| 617 | } | 615 | } |
| 618 | 616 | ||
| 619 | static void uart_unthrottle(struct tty_struct *tty) | 617 | static void uart_unthrottle(struct tty_struct *tty) |
| 620 | { | 618 | { |
| 621 | struct uart_state *state = tty->driver_data; | 619 | struct uart_state *state = tty->driver_data; |
| 622 | struct uart_port *port = state->port; | 620 | struct uart_port *port = state->uart_port; |
| 623 | 621 | ||
| 624 | if (I_IXOFF(tty)) { | 622 | if (I_IXOFF(tty)) { |
| 625 | if (port->x_char) | 623 | if (port->x_char) |
| @@ -635,7 +633,7 @@ static void uart_unthrottle(struct tty_struct *tty) | |||
| 635 | static int uart_get_info(struct uart_state *state, | 633 | static int uart_get_info(struct uart_state *state, |
| 636 | struct serial_struct __user *retinfo) | 634 | struct serial_struct __user *retinfo) |
| 637 | { | 635 | { |
| 638 | struct uart_port *port = state->port; | 636 | struct uart_port *port = state->uart_port; |
| 639 | struct serial_struct tmp; | 637 | struct serial_struct tmp; |
| 640 | 638 | ||
| 641 | memset(&tmp, 0, sizeof(tmp)); | 639 | memset(&tmp, 0, sizeof(tmp)); |
| @@ -674,7 +672,7 @@ static int uart_set_info(struct uart_state *state, | |||
| 674 | struct serial_struct __user *newinfo) | 672 | struct serial_struct __user *newinfo) |
| 675 | { | 673 | { |
| 676 | struct serial_struct new_serial; | 674 | struct serial_struct new_serial; |
| 677 | struct uart_port *port = state->port; | 675 | struct uart_port *port = state->uart_port; |
| 678 | unsigned long new_port; | 676 | unsigned long new_port; |
| 679 | unsigned int change_irq, change_port, closing_wait; | 677 | unsigned int change_irq, change_port, closing_wait; |
| 680 | unsigned int old_custom_divisor, close_delay; | 678 | unsigned int old_custom_divisor, close_delay; |
| @@ -840,15 +838,15 @@ static int uart_set_info(struct uart_state *state, | |||
| 840 | state->closing_wait = closing_wait; | 838 | state->closing_wait = closing_wait; |
| 841 | if (new_serial.xmit_fifo_size) | 839 | if (new_serial.xmit_fifo_size) |
| 842 | port->fifosize = new_serial.xmit_fifo_size; | 840 | port->fifosize = new_serial.xmit_fifo_size; |
| 843 | if (state->info.port.tty) | 841 | if (state->port.tty) |
| 844 | state->info.port.tty->low_latency = | 842 | state->port.tty->low_latency = |
| 845 | (port->flags & UPF_LOW_LATENCY) ? 1 : 0; | 843 | (port->flags & UPF_LOW_LATENCY) ? 1 : 0; |
| 846 | 844 | ||
| 847 | check_and_exit: | 845 | check_and_exit: |
| 848 | retval = 0; | 846 | retval = 0; |
| 849 | if (port->type == PORT_UNKNOWN) | 847 | if (port->type == PORT_UNKNOWN) |
| 850 | goto exit; | 848 | goto exit; |
| 851 | if (state->info.flags & UIF_INITIALIZED) { | 849 | if (state->flags & UIF_INITIALIZED) { |
| 852 | if (((old_flags ^ port->flags) & UPF_SPD_MASK) || | 850 | if (((old_flags ^ port->flags) & UPF_SPD_MASK) || |
| 853 | old_custom_divisor != port->custom_divisor) { | 851 | old_custom_divisor != port->custom_divisor) { |
| 854 | /* | 852 | /* |
| @@ -861,7 +859,7 @@ static int uart_set_info(struct uart_state *state, | |||
| 861 | printk(KERN_NOTICE | 859 | printk(KERN_NOTICE |
| 862 | "%s sets custom speed on %s. This " | 860 | "%s sets custom speed on %s. This " |
| 863 | "is deprecated.\n", current->comm, | 861 | "is deprecated.\n", current->comm, |
| 864 | tty_name(state->info.port.tty, buf)); | 862 | tty_name(state->port.tty, buf)); |
| 865 | } | 863 | } |
| 866 | uart_change_speed(state, NULL); | 864 | uart_change_speed(state, NULL); |
| 867 | } | 865 | } |
| @@ -880,7 +878,7 @@ static int uart_set_info(struct uart_state *state, | |||
| 880 | static int uart_get_lsr_info(struct uart_state *state, | 878 | static int uart_get_lsr_info(struct uart_state *state, |
| 881 | unsigned int __user *value) | 879 | unsigned int __user *value) |
| 882 | { | 880 | { |
| 883 | struct uart_port *port = state->port; | 881 | struct uart_port *port = state->uart_port; |
| 884 | unsigned int result; | 882 | unsigned int result; |
| 885 | 883 | ||
| 886 | result = port->ops->tx_empty(port); | 884 | result = port->ops->tx_empty(port); |
| @@ -892,8 +890,8 @@ static int uart_get_lsr_info(struct uart_state *state, | |||
| 892 | * interrupt happens). | 890 | * interrupt happens). |
| 893 | */ | 891 | */ |
| 894 | if (port->x_char || | 892 | if (port->x_char || |
| 895 | ((uart_circ_chars_pending(&state->info.xmit) > 0) && | 893 | ((uart_circ_chars_pending(&state->xmit) > 0) && |
| 896 | !state->info.port.tty->stopped && !state->info.port.tty->hw_stopped)) | 894 | !state->port.tty->stopped && !state->port.tty->hw_stopped)) |
| 897 | result &= ~TIOCSER_TEMT; | 895 | result &= ~TIOCSER_TEMT; |
| 898 | 896 | ||
| 899 | return put_user(result, value); | 897 | return put_user(result, value); |
| @@ -902,7 +900,7 @@ static int uart_get_lsr_info(struct uart_state *state, | |||
| 902 | static int uart_tiocmget(struct tty_struct *tty, struct file *file) | 900 | static int uart_tiocmget(struct tty_struct *tty, struct file *file) |
| 903 | { | 901 | { |
| 904 | struct uart_state *state = tty->driver_data; | 902 | struct uart_state *state = tty->driver_data; |
| 905 | struct uart_port *port = state->port; | 903 | struct uart_port *port = state->uart_port; |
| 906 | int result = -EIO; | 904 | int result = -EIO; |
| 907 | 905 | ||
| 908 | mutex_lock(&state->mutex); | 906 | mutex_lock(&state->mutex); |
| @@ -924,7 +922,7 @@ uart_tiocmset(struct tty_struct *tty, struct file *file, | |||
| 924 | unsigned int set, unsigned int clear) | 922 | unsigned int set, unsigned int clear) |
| 925 | { | 923 | { |
| 926 | struct uart_state *state = tty->driver_data; | 924 | struct uart_state *state = tty->driver_data; |
| 927 | struct uart_port *port = state->port; | 925 | struct uart_port *port = state->uart_port; |
| 928 | int ret = -EIO; | 926 | int ret = -EIO; |
| 929 | 927 | ||
| 930 | mutex_lock(&state->mutex); | 928 | mutex_lock(&state->mutex); |
| @@ -940,7 +938,7 @@ uart_tiocmset(struct tty_struct *tty, struct file *file, | |||
| 940 | static int uart_break_ctl(struct tty_struct *tty, int break_state) | 938 | static int uart_break_ctl(struct tty_struct *tty, int break_state) |
| 941 | { | 939 | { |
| 942 | struct uart_state *state = tty->driver_data; | 940 | struct uart_state *state = tty->driver_data; |
| 943 | struct uart_port *port = state->port; | 941 | struct uart_port *port = state->uart_port; |
| 944 | 942 | ||
| 945 | mutex_lock(&state->mutex); | 943 | mutex_lock(&state->mutex); |
| 946 | 944 | ||
| @@ -953,7 +951,7 @@ static int uart_break_ctl(struct tty_struct *tty, int break_state) | |||
| 953 | 951 | ||
| 954 | static int uart_do_autoconfig(struct uart_state *state) | 952 | static int uart_do_autoconfig(struct uart_state *state) |
| 955 | { | 953 | { |
| 956 | struct uart_port *port = state->port; | 954 | struct uart_port *port = state->uart_port; |
| 957 | int flags, ret; | 955 | int flags, ret; |
| 958 | 956 | ||
| 959 | if (!capable(CAP_SYS_ADMIN)) | 957 | if (!capable(CAP_SYS_ADMIN)) |
| @@ -1003,7 +1001,7 @@ static int uart_do_autoconfig(struct uart_state *state) | |||
| 1003 | static int | 1001 | static int |
| 1004 | uart_wait_modem_status(struct uart_state *state, unsigned long arg) | 1002 | uart_wait_modem_status(struct uart_state *state, unsigned long arg) |
| 1005 | { | 1003 | { |
| 1006 | struct uart_port *port = state->port; | 1004 | struct uart_port *port = state->uart_port; |
| 1007 | DECLARE_WAITQUEUE(wait, current); | 1005 | DECLARE_WAITQUEUE(wait, current); |
| 1008 | struct uart_icount cprev, cnow; | 1006 | struct uart_icount cprev, cnow; |
| 1009 | int ret; | 1007 | int ret; |
| @@ -1020,7 +1018,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg) | |||
| 1020 | port->ops->enable_ms(port); | 1018 | port->ops->enable_ms(port); |
| 1021 | spin_unlock_irq(&port->lock); | 1019 | spin_unlock_irq(&port->lock); |
| 1022 | 1020 | ||
| 1023 | add_wait_queue(&state->info.delta_msr_wait, &wait); | 1021 | add_wait_queue(&state->delta_msr_wait, &wait); |
| 1024 | for (;;) { | 1022 | for (;;) { |
| 1025 | spin_lock_irq(&port->lock); | 1023 | spin_lock_irq(&port->lock); |
| 1026 | memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); | 1024 | memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); |
| @@ -1048,7 +1046,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg) | |||
| 1048 | } | 1046 | } |
| 1049 | 1047 | ||
| 1050 | current->state = TASK_RUNNING; | 1048 | current->state = TASK_RUNNING; |
| 1051 | remove_wait_queue(&state->info.delta_msr_wait, &wait); | 1049 | remove_wait_queue(&state->delta_msr_wait, &wait); |
| 1052 | 1050 | ||
| 1053 | return ret; | 1051 | return ret; |
| 1054 | } | 1052 | } |
| @@ -1064,7 +1062,7 @@ static int uart_get_count(struct uart_state *state, | |||
| 1064 | { | 1062 | { |
| 1065 | struct serial_icounter_struct icount; | 1063 | struct serial_icounter_struct icount; |
| 1066 | struct uart_icount cnow; | 1064 | struct uart_icount cnow; |
| 1067 | struct uart_port *port = state->port; | 1065 | struct uart_port *port = state->uart_port; |
| 1068 | 1066 | ||
| 1069 | spin_lock_irq(&port->lock); | 1067 | spin_lock_irq(&port->lock); |
| 1070 | memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); | 1068 | memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); |
| @@ -1160,7 +1158,7 @@ uart_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, | |||
| 1160 | break; | 1158 | break; |
| 1161 | 1159 | ||
| 1162 | default: { | 1160 | default: { |
| 1163 | struct uart_port *port = state->port; | 1161 | struct uart_port *port = state->uart_port; |
| 1164 | if (port->ops->ioctl) | 1162 | if (port->ops->ioctl) |
| 1165 | ret = port->ops->ioctl(port, cmd, arg); | 1163 | ret = port->ops->ioctl(port, cmd, arg); |
| 1166 | break; | 1164 | break; |
| @@ -1175,7 +1173,7 @@ out: | |||
| 1175 | static void uart_set_ldisc(struct tty_struct *tty) | 1173 | static void uart_set_ldisc(struct tty_struct *tty) |
| 1176 | { | 1174 | { |
| 1177 | struct uart_state *state = tty->driver_data; | 1175 | struct uart_state *state = tty->driver_data; |
| 1178 | struct uart_port *port = state->port; | 1176 | struct uart_port *port = state->uart_port; |
| 1179 | 1177 | ||
| 1180 | if (port->ops->set_ldisc) | 1178 | if (port->ops->set_ldisc) |
| 1181 | port->ops->set_ldisc(port); | 1179 | port->ops->set_ldisc(port); |
| @@ -1207,7 +1205,7 @@ static void uart_set_termios(struct tty_struct *tty, | |||
| 1207 | 1205 | ||
| 1208 | /* Handle transition to B0 status */ | 1206 | /* Handle transition to B0 status */ |
| 1209 | if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) | 1207 | if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) |
| 1210 | uart_clear_mctrl(state->port, TIOCM_RTS | TIOCM_DTR); | 1208 | uart_clear_mctrl(state->uart_port, TIOCM_RTS | TIOCM_DTR); |
| 1211 | 1209 | ||
| 1212 | /* Handle transition away from B0 status */ | 1210 | /* Handle transition away from B0 status */ |
| 1213 | if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { | 1211 | if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { |
| @@ -1215,25 +1213,25 @@ static void uart_set_termios(struct tty_struct *tty, | |||
| 1215 | if (!(cflag & CRTSCTS) || | 1213 | if (!(cflag & CRTSCTS) || |
| 1216 | !test_bit(TTY_THROTTLED, &tty->flags)) | 1214 | !test_bit(TTY_THROTTLED, &tty->flags)) |
| 1217 | mask |= TIOCM_RTS; | 1215 | mask |= TIOCM_RTS; |
| 1218 | uart_set_mctrl(state->port, mask); | 1216 | uart_set_mctrl(state->uart_port, mask); |
| 1219 | } | 1217 | } |
| 1220 | 1218 | ||
| 1221 | /* Handle turning off CRTSCTS */ | 1219 | /* Handle turning off CRTSCTS */ |
| 1222 | if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { | 1220 | if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { |
| 1223 | spin_lock_irqsave(&state->port->lock, flags); | 1221 | spin_lock_irqsave(&state->uart_port->lock, flags); |
| 1224 | tty->hw_stopped = 0; | 1222 | tty->hw_stopped = 0; |
| 1225 | __uart_start(tty); | 1223 | __uart_start(tty); |
| 1226 | spin_unlock_irqrestore(&state->port->lock, flags); | 1224 | spin_unlock_irqrestore(&state->uart_port->lock, flags); |
| 1227 | } | 1225 | } |
| 1228 | 1226 | ||
| 1229 | /* Handle turning on CRTSCTS */ | 1227 | /* Handle turning on CRTSCTS */ |
| 1230 | if (!(old_termios->c_cflag & CRTSCTS) && (cflag & CRTSCTS)) { | 1228 | if (!(old_termios->c_cflag & CRTSCTS) && (cflag & CRTSCTS)) { |
| 1231 | spin_lock_irqsave(&state->port->lock, flags); | 1229 | spin_lock_irqsave(&state->uart_port->lock, flags); |
| 1232 | if (!(state->port->ops->get_mctrl(state->port) & TIOCM_CTS)) { | 1230 | if (!(state->uart_port->ops->get_mctrl(state->uart_port) & TIOCM_CTS)) { |
| 1233 | tty->hw_stopped = 1; | 1231 | tty->hw_stopped = 1; |
| 1234 | state->port->ops->stop_tx(state->port); | 1232 | state->uart_port->ops->stop_tx(state->uart_port); |
| 1235 | } | 1233 | } |
| 1236 | spin_unlock_irqrestore(&state->port->lock, flags); | 1234 | spin_unlock_irqrestore(&state->uart_port->lock, flags); |
| 1237 | } | 1235 | } |
| 1238 | #if 0 | 1236 | #if 0 |
| 1239 | /* | 1237 | /* |
| @@ -1244,7 +1242,7 @@ static void uart_set_termios(struct tty_struct *tty, | |||
| 1244 | */ | 1242 | */ |
| 1245 | if (!(old_termios->c_cflag & CLOCAL) && | 1243 | if (!(old_termios->c_cflag & CLOCAL) && |
| 1246 | (tty->termios->c_cflag & CLOCAL)) | 1244 | (tty->termios->c_cflag & CLOCAL)) |
| 1247 | wake_up_interruptible(&info->port.open_wait); | 1245 | wake_up_interruptible(&state->uart_port.open_wait); |
| 1248 | #endif | 1246 | #endif |
| 1249 | } | 1247 | } |
| 1250 | 1248 | ||
| @@ -1260,10 +1258,10 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
| 1260 | 1258 | ||
| 1261 | BUG_ON(!kernel_locked()); | 1259 | BUG_ON(!kernel_locked()); |
| 1262 | 1260 | ||
| 1263 | if (!state || !state->port) | 1261 | if (!state || !state->uart_port) |
| 1264 | return; | 1262 | return; |
| 1265 | 1263 | ||
| 1266 | port = state->port; | 1264 | port = state->uart_port; |
| 1267 | 1265 | ||
| 1268 | pr_debug("uart_close(%d) called\n", port->line); | 1266 | pr_debug("uart_close(%d) called\n", port->line); |
| 1269 | 1267 | ||
| @@ -1306,7 +1304,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
| 1306 | * At this point, we stop accepting input. To do this, we | 1304 | * At this point, we stop accepting input. To do this, we |
| 1307 | * disable the receive line status interrupts. | 1305 | * disable the receive line status interrupts. |
| 1308 | */ | 1306 | */ |
| 1309 | if (state->info.flags & UIF_INITIALIZED) { | 1307 | if (state->flags & UIF_INITIALIZED) { |
| 1310 | unsigned long flags; | 1308 | unsigned long flags; |
| 1311 | spin_lock_irqsave(&port->lock, flags); | 1309 | spin_lock_irqsave(&port->lock, flags); |
| 1312 | port->ops->stop_rx(port); | 1310 | port->ops->stop_rx(port); |
| @@ -1325,9 +1323,9 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
| 1325 | tty_ldisc_flush(tty); | 1323 | tty_ldisc_flush(tty); |
| 1326 | 1324 | ||
| 1327 | tty->closing = 0; | 1325 | tty->closing = 0; |
| 1328 | state->info.port.tty = NULL; | 1326 | state->port.tty = NULL; |
| 1329 | 1327 | ||
| 1330 | if (state->info.port.blocked_open) { | 1328 | if (state->port.blocked_open) { |
| 1331 | if (state->close_delay) | 1329 | if (state->close_delay) |
| 1332 | msleep_interruptible(state->close_delay); | 1330 | msleep_interruptible(state->close_delay); |
| 1333 | } else if (!uart_console(port)) { | 1331 | } else if (!uart_console(port)) { |
| @@ -1337,8 +1335,8 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
| 1337 | /* | 1335 | /* |
| 1338 | * Wake up anyone trying to open this port. | 1336 | * Wake up anyone trying to open this port. |
| 1339 | */ | 1337 | */ |
| 1340 | state->info.flags &= ~UIF_NORMAL_ACTIVE; | 1338 | state->flags &= ~UIF_NORMAL_ACTIVE; |
| 1341 | wake_up_interruptible(&state->info.port.open_wait); | 1339 | wake_up_interruptible(&state->port.open_wait); |
| 1342 | 1340 | ||
| 1343 | done: | 1341 | done: |
| 1344 | mutex_unlock(&state->mutex); | 1342 | mutex_unlock(&state->mutex); |
| @@ -1347,7 +1345,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
| 1347 | static void uart_wait_until_sent(struct tty_struct *tty, int timeout) | 1345 | static void uart_wait_until_sent(struct tty_struct *tty, int timeout) |
| 1348 | { | 1346 | { |
| 1349 | struct uart_state *state = tty->driver_data; | 1347 | struct uart_state *state = tty->driver_data; |
| 1350 | struct uart_port *port = state->port; | 1348 | struct uart_port *port = state->uart_port; |
| 1351 | unsigned long char_time, expire; | 1349 | unsigned long char_time, expire; |
| 1352 | 1350 | ||
| 1353 | if (port->type == PORT_UNKNOWN || port->fifosize == 0) | 1351 | if (port->type == PORT_UNKNOWN || port->fifosize == 0) |
| @@ -1412,20 +1410,19 @@ static void uart_wait_until_sent(struct tty_struct *tty, int timeout) | |||
| 1412 | static void uart_hangup(struct tty_struct *tty) | 1410 | static void uart_hangup(struct tty_struct *tty) |
| 1413 | { | 1411 | { |
| 1414 | struct uart_state *state = tty->driver_data; | 1412 | struct uart_state *state = tty->driver_data; |
| 1415 | struct uart_info *info = &state->info; | ||
| 1416 | 1413 | ||
| 1417 | BUG_ON(!kernel_locked()); | 1414 | BUG_ON(!kernel_locked()); |
| 1418 | pr_debug("uart_hangup(%d)\n", state->port->line); | 1415 | pr_debug("uart_hangup(%d)\n", state->uart_port->line); |
| 1419 | 1416 | ||
| 1420 | mutex_lock(&state->mutex); | 1417 | mutex_lock(&state->mutex); |
| 1421 | if (info->flags & UIF_NORMAL_ACTIVE) { | 1418 | if (state->flags & UIF_NORMAL_ACTIVE) { |
| 1422 | uart_flush_buffer(tty); | 1419 | uart_flush_buffer(tty); |
| 1423 | uart_shutdown(state); | 1420 | uart_shutdown(state); |
| 1424 | state->count = 0; | 1421 | state->count = 0; |
| 1425 | info->flags &= ~UIF_NORMAL_ACTIVE; | 1422 | state->flags &= ~UIF_NORMAL_ACTIVE; |
| 1426 | info->port.tty = NULL; | 1423 | state->port.tty = NULL; |
| 1427 | wake_up_interruptible(&info->port.open_wait); | 1424 | wake_up_interruptible(&state->port.open_wait); |
| 1428 | wake_up_interruptible(&info->delta_msr_wait); | 1425 | wake_up_interruptible(&state->delta_msr_wait); |
| 1429 | } | 1426 | } |
| 1430 | mutex_unlock(&state->mutex); | 1427 | mutex_unlock(&state->mutex); |
| 1431 | } | 1428 | } |
| @@ -1438,8 +1435,8 @@ static void uart_hangup(struct tty_struct *tty) | |||
| 1438 | */ | 1435 | */ |
| 1439 | static void uart_update_termios(struct uart_state *state) | 1436 | static void uart_update_termios(struct uart_state *state) |
| 1440 | { | 1437 | { |
| 1441 | struct tty_struct *tty = state->info.port.tty; | 1438 | struct tty_struct *tty = state->port.tty; |
| 1442 | struct uart_port *port = state->port; | 1439 | struct uart_port *port = state->uart_port; |
| 1443 | 1440 | ||
| 1444 | if (uart_console(port) && port->cons->cflag) { | 1441 | if (uart_console(port) && port->cons->cflag) { |
| 1445 | tty->termios->c_cflag = port->cons->cflag; | 1442 | tty->termios->c_cflag = port->cons->cflag; |
| @@ -1473,27 +1470,26 @@ static int | |||
| 1473 | uart_block_til_ready(struct file *filp, struct uart_state *state) | 1470 | uart_block_til_ready(struct file *filp, struct uart_state *state) |
| 1474 | { | 1471 | { |
| 1475 | DECLARE_WAITQUEUE(wait, current); | 1472 | DECLARE_WAITQUEUE(wait, current); |
| 1476 | struct uart_info *info = &state->info; | 1473 | struct uart_port *port = state->uart_port; |
| 1477 | struct uart_port *port = state->port; | ||
| 1478 | unsigned int mctrl; | 1474 | unsigned int mctrl; |
| 1479 | 1475 | ||
| 1480 | info->port.blocked_open++; | 1476 | state->port.blocked_open++; |
| 1481 | state->count--; | 1477 | state->count--; |
| 1482 | 1478 | ||
| 1483 | add_wait_queue(&info->port.open_wait, &wait); | 1479 | add_wait_queue(&state->port.open_wait, &wait); |
| 1484 | while (1) { | 1480 | while (1) { |
| 1485 | set_current_state(TASK_INTERRUPTIBLE); | 1481 | set_current_state(TASK_INTERRUPTIBLE); |
| 1486 | 1482 | ||
| 1487 | /* | 1483 | /* |
| 1488 | * If we have been hung up, tell userspace/restart open. | 1484 | * If we have been hung up, tell userspace/restart open. |
| 1489 | */ | 1485 | */ |
| 1490 | if (tty_hung_up_p(filp) || info->port.tty == NULL) | 1486 | if (tty_hung_up_p(filp) || state->port.tty == NULL) |
| 1491 | break; | 1487 | break; |
| 1492 | 1488 | ||
| 1493 | /* | 1489 | /* |
| 1494 | * If the port has been closed, tell userspace/restart open. | 1490 | * If the port has been closed, tell userspace/restart open. |
| 1495 | */ | 1491 | */ |
| 1496 | if (!(info->flags & UIF_INITIALIZED)) | 1492 | if (!(state->flags & UIF_INITIALIZED)) |
| 1497 | break; | 1493 | break; |
| 1498 | 1494 | ||
| 1499 | /* | 1495 | /* |
| @@ -1506,8 +1502,8 @@ uart_block_til_ready(struct file *filp, struct uart_state *state) | |||
| 1506 | * have set TTY_IO_ERROR for a non-existant port. | 1502 | * have set TTY_IO_ERROR for a non-existant port. |
| 1507 | */ | 1503 | */ |
| 1508 | if ((filp->f_flags & O_NONBLOCK) || | 1504 | if ((filp->f_flags & O_NONBLOCK) || |
| 1509 | (info->port.tty->termios->c_cflag & CLOCAL) || | 1505 | (state->port.tty->termios->c_cflag & CLOCAL) || |
| 1510 | (info->port.tty->flags & (1 << TTY_IO_ERROR))) | 1506 | (state->port.tty->flags & (1 << TTY_IO_ERROR))) |
| 1511 | break; | 1507 | break; |
| 1512 | 1508 | ||
| 1513 | /* | 1509 | /* |
| @@ -1515,7 +1511,7 @@ uart_block_til_ready(struct file *filp, struct uart_state *state) | |||
| 1515 | * not set RTS here - we want to make sure we catch | 1511 | * not set RTS here - we want to make sure we catch |
| 1516 | * the data from the modem. | 1512 | * the data from the modem. |
| 1517 | */ | 1513 | */ |
| 1518 | if (info->port.tty->termios->c_cflag & CBAUD) | 1514 | if (state->port.tty->termios->c_cflag & CBAUD) |
| 1519 | uart_set_mctrl(port, TIOCM_DTR); | 1515 | uart_set_mctrl(port, TIOCM_DTR); |
| 1520 | 1516 | ||
| 1521 | /* | 1517 | /* |
| @@ -1537,15 +1533,15 @@ uart_block_til_ready(struct file *filp, struct uart_state *state) | |||
| 1537 | break; | 1533 | break; |
| 1538 | } | 1534 | } |
| 1539 | set_current_state(TASK_RUNNING); | 1535 | set_current_state(TASK_RUNNING); |
| 1540 | remove_wait_queue(&info->port.open_wait, &wait); | 1536 | remove_wait_queue(&state->port.open_wait, &wait); |
| 1541 | 1537 | ||
| 1542 | state->count++; | 1538 | state->count++; |
| 1543 | info->port.blocked_open--; | 1539 | state->port.blocked_open--; |
| 1544 | 1540 | ||
| 1545 | if (signal_pending(current)) | 1541 | if (signal_pending(current)) |
| 1546 | return -ERESTARTSYS; | 1542 | return -ERESTARTSYS; |
| 1547 | 1543 | ||
| 1548 | if (!info->port.tty || tty_hung_up_p(filp)) | 1544 | if (!state->port.tty || tty_hung_up_p(filp)) |
| 1549 | return -EAGAIN; | 1545 | return -EAGAIN; |
| 1550 | 1546 | ||
| 1551 | return 0; | 1547 | return 0; |
| @@ -1563,7 +1559,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line) | |||
| 1563 | } | 1559 | } |
| 1564 | 1560 | ||
| 1565 | state->count++; | 1561 | state->count++; |
| 1566 | if (!state->port || state->port->flags & UPF_DEAD) { | 1562 | if (!state->uart_port || state->uart_port->flags & UPF_DEAD) { |
| 1567 | ret = -ENXIO; | 1563 | ret = -ENXIO; |
| 1568 | goto err_unlock; | 1564 | goto err_unlock; |
| 1569 | } | 1565 | } |
| @@ -1606,10 +1602,11 @@ static int uart_open(struct tty_struct *tty, struct file *filp) | |||
| 1606 | 1602 | ||
| 1607 | /* | 1603 | /* |
| 1608 | * We take the semaphore inside uart_get to guarantee that we won't | 1604 | * We take the semaphore inside uart_get to guarantee that we won't |
| 1609 | * be re-entered while allocating the info structure, or while we | 1605 | * be re-entered while allocating the state structure, or while we |
| 1610 | * request any IRQs that the driver may need. This also has the nice | 1606 | * request any IRQs that the driver may need. This also has the nice |
| 1611 | * side-effect that it delays the action of uart_hangup, so we can | 1607 | * side-effect that it delays the action of uart_hangup, so we can |
| 1612 | * guarantee that info->port.tty will always contain something reasonable. | 1608 | * guarantee that state->port.tty will always contain something |
| 1609 | * reasonable. | ||
| 1613 | */ | 1610 | */ |
| 1614 | state = uart_get(drv, line); | 1611 | state = uart_get(drv, line); |
| 1615 | if (IS_ERR(state)) { | 1612 | if (IS_ERR(state)) { |
| @@ -1623,10 +1620,10 @@ static int uart_open(struct tty_struct *tty, struct file *filp) | |||
| 1623 | * Any failures from here onwards should not touch the count. | 1620 | * Any failures from here onwards should not touch the count. |
| 1624 | */ | 1621 | */ |
| 1625 | tty->driver_data = state; | 1622 | tty->driver_data = state; |
| 1626 | state->port->info = &state->info; | 1623 | state->uart_port->state = state; |
| 1627 | tty->low_latency = (state->port->flags & UPF_LOW_LATENCY) ? 1 : 0; | 1624 | tty->low_latency = (state->uart_port->flags & UPF_LOW_LATENCY) ? 1 : 0; |
| 1628 | tty->alt_speed = 0; | 1625 | tty->alt_speed = 0; |
| 1629 | state->info.port.tty = tty; | 1626 | state->port.tty = tty; |
| 1630 | 1627 | ||
| 1631 | /* | 1628 | /* |
| 1632 | * If the port is in the middle of closing, bail out now. | 1629 | * If the port is in the middle of closing, bail out now. |
| @@ -1659,8 +1656,8 @@ static int uart_open(struct tty_struct *tty, struct file *filp) | |||
| 1659 | /* | 1656 | /* |
| 1660 | * If this is the first open to succeed, adjust things to suit. | 1657 | * If this is the first open to succeed, adjust things to suit. |
| 1661 | */ | 1658 | */ |
| 1662 | if (retval == 0 && !(state->info.flags & UIF_NORMAL_ACTIVE)) { | 1659 | if (retval == 0 && !(state->flags & UIF_NORMAL_ACTIVE)) { |
| 1663 | state->info.flags |= UIF_NORMAL_ACTIVE; | 1660 | state->flags |= UIF_NORMAL_ACTIVE; |
| 1664 | 1661 | ||
| 1665 | uart_update_termios(state); | 1662 | uart_update_termios(state); |
| 1666 | } | 1663 | } |
| @@ -1688,7 +1685,7 @@ static void uart_line_info(struct seq_file *m, struct uart_driver *drv, int i) | |||
| 1688 | { | 1685 | { |
| 1689 | struct uart_state *state = drv->state + i; | 1686 | struct uart_state *state = drv->state + i; |
| 1690 | int pm_state; | 1687 | int pm_state; |
| 1691 | struct uart_port *port = state->port; | 1688 | struct uart_port *port = state->uart_port; |
| 1692 | char stat_buf[32]; | 1689 | char stat_buf[32]; |
| 1693 | unsigned int status; | 1690 | unsigned int status; |
| 1694 | int mmio; | 1691 | int mmio; |
| @@ -1958,7 +1955,7 @@ EXPORT_SYMBOL_GPL(uart_set_options); | |||
| 1958 | 1955 | ||
| 1959 | static void uart_change_pm(struct uart_state *state, int pm_state) | 1956 | static void uart_change_pm(struct uart_state *state, int pm_state) |
| 1960 | { | 1957 | { |
| 1961 | struct uart_port *port = state->port; | 1958 | struct uart_port *port = state->uart_port; |
| 1962 | 1959 | ||
| 1963 | if (state->pm_state != pm_state) { | 1960 | if (state->pm_state != pm_state) { |
| 1964 | if (port->ops->pm) | 1961 | if (port->ops->pm) |
| @@ -2005,11 +2002,11 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2005 | } | 2002 | } |
| 2006 | port->suspended = 1; | 2003 | port->suspended = 1; |
| 2007 | 2004 | ||
| 2008 | if (state->info.flags & UIF_INITIALIZED) { | 2005 | if (state->flags & UIF_INITIALIZED) { |
| 2009 | const struct uart_ops *ops = port->ops; | 2006 | const struct uart_ops *ops = port->ops; |
| 2010 | int tries; | 2007 | int tries; |
| 2011 | 2008 | ||
| 2012 | state->info.flags = (state->info.flags & ~UIF_INITIALIZED) | 2009 | state->flags = (state->flags & ~UIF_INITIALIZED) |
| 2013 | | UIF_SUSPENDED; | 2010 | | UIF_SUSPENDED; |
| 2014 | 2011 | ||
| 2015 | spin_lock_irq(&port->lock); | 2012 | spin_lock_irq(&port->lock); |
| @@ -2084,15 +2081,15 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2084 | /* | 2081 | /* |
| 2085 | * If that's unset, use the tty termios setting. | 2082 | * If that's unset, use the tty termios setting. |
| 2086 | */ | 2083 | */ |
| 2087 | if (state->info.port.tty && termios.c_cflag == 0) | 2084 | if (state->port.tty && termios.c_cflag == 0) |
| 2088 | termios = *state->info.port.tty->termios; | 2085 | termios = *state->port.tty->termios; |
| 2089 | 2086 | ||
| 2090 | uart_change_pm(state, 0); | 2087 | uart_change_pm(state, 0); |
| 2091 | port->ops->set_termios(port, &termios, NULL); | 2088 | port->ops->set_termios(port, &termios, NULL); |
| 2092 | console_start(port->cons); | 2089 | console_start(port->cons); |
| 2093 | } | 2090 | } |
| 2094 | 2091 | ||
| 2095 | if (state->info.flags & UIF_SUSPENDED) { | 2092 | if (state->flags & UIF_SUSPENDED) { |
| 2096 | const struct uart_ops *ops = port->ops; | 2093 | const struct uart_ops *ops = port->ops; |
| 2097 | int ret; | 2094 | int ret; |
| 2098 | 2095 | ||
| @@ -2107,7 +2104,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2107 | ops->set_mctrl(port, port->mctrl); | 2104 | ops->set_mctrl(port, port->mctrl); |
| 2108 | ops->start_tx(port); | 2105 | ops->start_tx(port); |
| 2109 | spin_unlock_irq(&port->lock); | 2106 | spin_unlock_irq(&port->lock); |
| 2110 | state->info.flags |= UIF_INITIALIZED; | 2107 | state->flags |= UIF_INITIALIZED; |
| 2111 | } else { | 2108 | } else { |
| 2112 | /* | 2109 | /* |
| 2113 | * Failed to resume - maybe hardware went away? | 2110 | * Failed to resume - maybe hardware went away? |
| @@ -2117,7 +2114,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2117 | uart_shutdown(state); | 2114 | uart_shutdown(state); |
| 2118 | } | 2115 | } |
| 2119 | 2116 | ||
| 2120 | state->info.flags &= ~UIF_SUSPENDED; | 2117 | state->flags &= ~UIF_SUSPENDED; |
| 2121 | } | 2118 | } |
| 2122 | 2119 | ||
| 2123 | mutex_unlock(&state->mutex); | 2120 | mutex_unlock(&state->mutex); |
| @@ -2232,10 +2229,10 @@ static int uart_poll_init(struct tty_driver *driver, int line, char *options) | |||
| 2232 | int parity = 'n'; | 2229 | int parity = 'n'; |
| 2233 | int flow = 'n'; | 2230 | int flow = 'n'; |
| 2234 | 2231 | ||
| 2235 | if (!state || !state->port) | 2232 | if (!state || !state->uart_port) |
| 2236 | return -1; | 2233 | return -1; |
| 2237 | 2234 | ||
| 2238 | port = state->port; | 2235 | port = state->uart_port; |
| 2239 | if (!(port->ops->poll_get_char && port->ops->poll_put_char)) | 2236 | if (!(port->ops->poll_get_char && port->ops->poll_put_char)) |
| 2240 | return -1; | 2237 | return -1; |
| 2241 | 2238 | ||
| @@ -2253,10 +2250,10 @@ static int uart_poll_get_char(struct tty_driver *driver, int line) | |||
| 2253 | struct uart_state *state = drv->state + line; | 2250 | struct uart_state *state = drv->state + line; |
| 2254 | struct uart_port *port; | 2251 | struct uart_port *port; |
| 2255 | 2252 | ||
| 2256 | if (!state || !state->port) | 2253 | if (!state || !state->uart_port) |
| 2257 | return -1; | 2254 | return -1; |
| 2258 | 2255 | ||
| 2259 | port = state->port; | 2256 | port = state->uart_port; |
| 2260 | return port->ops->poll_get_char(port); | 2257 | return port->ops->poll_get_char(port); |
| 2261 | } | 2258 | } |
| 2262 | 2259 | ||
| @@ -2266,10 +2263,10 @@ static void uart_poll_put_char(struct tty_driver *driver, int line, char ch) | |||
| 2266 | struct uart_state *state = drv->state + line; | 2263 | struct uart_state *state = drv->state + line; |
| 2267 | struct uart_port *port; | 2264 | struct uart_port *port; |
| 2268 | 2265 | ||
| 2269 | if (!state || !state->port) | 2266 | if (!state || !state->uart_port) |
| 2270 | return; | 2267 | return; |
| 2271 | 2268 | ||
| 2272 | port = state->port; | 2269 | port = state->uart_port; |
| 2273 | port->ops->poll_put_char(port, ch); | 2270 | port->ops->poll_put_char(port, ch); |
| 2274 | } | 2271 | } |
| 2275 | #endif | 2272 | #endif |
| @@ -2365,9 +2362,9 @@ int uart_register_driver(struct uart_driver *drv) | |||
| 2365 | state->closing_wait = 30000; /* 30 seconds */ | 2362 | state->closing_wait = 30000; /* 30 seconds */ |
| 2366 | mutex_init(&state->mutex); | 2363 | mutex_init(&state->mutex); |
| 2367 | 2364 | ||
| 2368 | tty_port_init(&state->info.port); | 2365 | tty_port_init(&state->port); |
| 2369 | init_waitqueue_head(&state->info.delta_msr_wait); | 2366 | init_waitqueue_head(&state->delta_msr_wait); |
| 2370 | tasklet_init(&state->info.tlet, uart_tasklet_action, | 2367 | tasklet_init(&state->tlet, uart_tasklet_action, |
| 2371 | (unsigned long)state); | 2368 | (unsigned long)state); |
| 2372 | } | 2369 | } |
| 2373 | 2370 | ||
| @@ -2430,16 +2427,16 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2430 | 2427 | ||
| 2431 | mutex_lock(&port_mutex); | 2428 | mutex_lock(&port_mutex); |
| 2432 | mutex_lock(&state->mutex); | 2429 | mutex_lock(&state->mutex); |
| 2433 | if (state->port) { | 2430 | if (state->uart_port) { |
| 2434 | ret = -EINVAL; | 2431 | ret = -EINVAL; |
| 2435 | goto out; | 2432 | goto out; |
| 2436 | } | 2433 | } |
| 2437 | 2434 | ||
| 2438 | state->port = port; | 2435 | state->uart_port = port; |
| 2439 | state->pm_state = -1; | 2436 | state->pm_state = -1; |
| 2440 | 2437 | ||
| 2441 | port->cons = drv->cons; | 2438 | port->cons = drv->cons; |
| 2442 | port->info = &state->info; | 2439 | port->state = state; |
| 2443 | 2440 | ||
| 2444 | /* | 2441 | /* |
| 2445 | * If this port is a console, then the spinlock is already | 2442 | * If this port is a console, then the spinlock is already |
| @@ -2488,13 +2485,12 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2488 | int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) | 2485 | int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) |
| 2489 | { | 2486 | { |
| 2490 | struct uart_state *state = drv->state + port->line; | 2487 | struct uart_state *state = drv->state + port->line; |
| 2491 | struct uart_info *info; | ||
| 2492 | 2488 | ||
| 2493 | BUG_ON(in_interrupt()); | 2489 | BUG_ON(in_interrupt()); |
| 2494 | 2490 | ||
| 2495 | if (state->port != port) | 2491 | if (state->uart_port != port) |
| 2496 | printk(KERN_ALERT "Removing wrong port: %p != %p\n", | 2492 | printk(KERN_ALERT "Removing wrong port: %p != %p\n", |
| 2497 | state->port, port); | 2493 | state->uart_port, port); |
| 2498 | 2494 | ||
| 2499 | mutex_lock(&port_mutex); | 2495 | mutex_lock(&port_mutex); |
| 2500 | 2496 | ||
| @@ -2511,9 +2507,8 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2511 | */ | 2507 | */ |
| 2512 | tty_unregister_device(drv->tty_driver, port->line); | 2508 | tty_unregister_device(drv->tty_driver, port->line); |
| 2513 | 2509 | ||
| 2514 | info = &state->info; | 2510 | if (state->port.tty) |
| 2515 | if (info && info->port.tty) | 2511 | tty_vhangup(state->port.tty); |
| 2516 | tty_vhangup(info->port.tty); | ||
| 2517 | 2512 | ||
| 2518 | /* | 2513 | /* |
| 2519 | * Free the port IO and memory resources, if any. | 2514 | * Free the port IO and memory resources, if any. |
| @@ -2529,10 +2524,9 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) | |||
| 2529 | /* | 2524 | /* |
| 2530 | * Kill the tasklet, and free resources. | 2525 | * Kill the tasklet, and free resources. |
| 2531 | */ | 2526 | */ |
| 2532 | if (info) | 2527 | tasklet_kill(&state->tlet); |
| 2533 | tasklet_kill(&info->tlet); | ||
| 2534 | 2528 | ||
| 2535 | state->port = NULL; | 2529 | state->uart_port = NULL; |
| 2536 | mutex_unlock(&port_mutex); | 2530 | mutex_unlock(&port_mutex); |
| 2537 | 2531 | ||
| 2538 | return 0; | 2532 | return 0; |
diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c index 52db5cc3f900..4560b2e70685 100644 --- a/drivers/serial/serial_ks8695.c +++ b/drivers/serial/serial_ks8695.c | |||
| @@ -154,7 +154,7 @@ static void ks8695uart_disable_ms(struct uart_port *port) | |||
| 154 | static irqreturn_t ks8695uart_rx_chars(int irq, void *dev_id) | 154 | static irqreturn_t ks8695uart_rx_chars(int irq, void *dev_id) |
| 155 | { | 155 | { |
| 156 | struct uart_port *port = dev_id; | 156 | struct uart_port *port = dev_id; |
| 157 | struct tty_struct *tty = port->info->port.tty; | 157 | struct tty_struct *tty = port->state->port.tty; |
| 158 | unsigned int status, ch, lsr, flg, max_count = 256; | 158 | unsigned int status, ch, lsr, flg, max_count = 256; |
| 159 | 159 | ||
| 160 | status = UART_GET_LSR(port); /* clears pending LSR interrupts */ | 160 | status = UART_GET_LSR(port); /* clears pending LSR interrupts */ |
| @@ -210,7 +210,7 @@ ignore_char: | |||
| 210 | static irqreturn_t ks8695uart_tx_chars(int irq, void *dev_id) | 210 | static irqreturn_t ks8695uart_tx_chars(int irq, void *dev_id) |
| 211 | { | 211 | { |
| 212 | struct uart_port *port = dev_id; | 212 | struct uart_port *port = dev_id; |
| 213 | struct circ_buf *xmit = &port->info->xmit; | 213 | struct circ_buf *xmit = &port->state->xmit; |
| 214 | unsigned int count; | 214 | unsigned int count; |
| 215 | 215 | ||
| 216 | if (port->x_char) { | 216 | if (port->x_char) { |
| @@ -266,7 +266,7 @@ static irqreturn_t ks8695uart_modem_status(int irq, void *dev_id) | |||
| 266 | if (status & URMS_URTERI) | 266 | if (status & URMS_URTERI) |
| 267 | port->icount.rng++; | 267 | port->icount.rng++; |
| 268 | 268 | ||
| 269 | wake_up_interruptible(&port->info->delta_msr_wait); | 269 | wake_up_interruptible(&port->state->delta_msr_wait); |
| 270 | 270 | ||
| 271 | return IRQ_HANDLED; | 271 | return IRQ_HANDLED; |
| 272 | } | 272 | } |
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c index a7bf024a8286..057fc5e8cc8d 100644 --- a/drivers/serial/serial_lh7a40x.c +++ b/drivers/serial/serial_lh7a40x.c | |||
| @@ -138,7 +138,7 @@ static void lh7a40xuart_enable_ms (struct uart_port* port) | |||
| 138 | 138 | ||
| 139 | static void lh7a40xuart_rx_chars (struct uart_port* port) | 139 | static void lh7a40xuart_rx_chars (struct uart_port* port) |
| 140 | { | 140 | { |
| 141 | struct tty_struct* tty = port->info->port.tty; | 141 | struct tty_struct* tty = port->state->port.tty; |
| 142 | int cbRxMax = 256; /* (Gross) limit on receive */ | 142 | int cbRxMax = 256; /* (Gross) limit on receive */ |
| 143 | unsigned int data; /* Received data and status */ | 143 | unsigned int data; /* Received data and status */ |
| 144 | unsigned int flag; | 144 | unsigned int flag; |
| @@ -184,7 +184,7 @@ static void lh7a40xuart_rx_chars (struct uart_port* port) | |||
| 184 | 184 | ||
| 185 | static void lh7a40xuart_tx_chars (struct uart_port* port) | 185 | static void lh7a40xuart_tx_chars (struct uart_port* port) |
| 186 | { | 186 | { |
| 187 | struct circ_buf* xmit = &port->info->xmit; | 187 | struct circ_buf* xmit = &port->state->xmit; |
| 188 | int cbTxMax = port->fifosize; | 188 | int cbTxMax = port->fifosize; |
| 189 | 189 | ||
| 190 | if (port->x_char) { | 190 | if (port->x_char) { |
| @@ -241,7 +241,7 @@ static void lh7a40xuart_modem_status (struct uart_port* port) | |||
| 241 | if (delta & CTS) | 241 | if (delta & CTS) |
| 242 | uart_handle_cts_change (port, status & CTS); | 242 | uart_handle_cts_change (port, status & CTS); |
| 243 | 243 | ||
| 244 | wake_up_interruptible (&port->info->delta_msr_wait); | 244 | wake_up_interruptible (&port->state->delta_msr_wait); |
| 245 | } | 245 | } |
| 246 | 246 | ||
| 247 | static irqreturn_t lh7a40xuart_int (int irq, void* dev_id) | 247 | static irqreturn_t lh7a40xuart_int (int irq, void* dev_id) |
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c index 54dd16d66a4b..0f7cf4c453e6 100644 --- a/drivers/serial/serial_txx9.c +++ b/drivers/serial/serial_txx9.c | |||
| @@ -272,7 +272,7 @@ static void serial_txx9_initialize(struct uart_port *port) | |||
| 272 | static inline void | 272 | static inline void |
| 273 | receive_chars(struct uart_txx9_port *up, unsigned int *status) | 273 | receive_chars(struct uart_txx9_port *up, unsigned int *status) |
| 274 | { | 274 | { |
| 275 | struct tty_struct *tty = up->port.info->port.tty; | 275 | struct tty_struct *tty = up->port.state->port.tty; |
| 276 | unsigned char ch; | 276 | unsigned char ch; |
| 277 | unsigned int disr = *status; | 277 | unsigned int disr = *status; |
| 278 | int max_count = 256; | 278 | int max_count = 256; |
| @@ -348,7 +348,7 @@ receive_chars(struct uart_txx9_port *up, unsigned int *status) | |||
| 348 | 348 | ||
| 349 | static inline void transmit_chars(struct uart_txx9_port *up) | 349 | static inline void transmit_chars(struct uart_txx9_port *up) |
| 350 | { | 350 | { |
| 351 | struct circ_buf *xmit = &up->port.info->xmit; | 351 | struct circ_buf *xmit = &up->port.state->xmit; |
| 352 | int count; | 352 | int count; |
| 353 | 353 | ||
| 354 | if (up->port.x_char) { | 354 | if (up->port.x_char) { |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 32dc2fc50e6b..85119fb7cb50 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
| @@ -361,7 +361,7 @@ static inline int sci_rxroom(struct uart_port *port) | |||
| 361 | 361 | ||
| 362 | static void sci_transmit_chars(struct uart_port *port) | 362 | static void sci_transmit_chars(struct uart_port *port) |
| 363 | { | 363 | { |
| 364 | struct circ_buf *xmit = &port->info->xmit; | 364 | struct circ_buf *xmit = &port->state->xmit; |
| 365 | unsigned int stopped = uart_tx_stopped(port); | 365 | unsigned int stopped = uart_tx_stopped(port); |
| 366 | unsigned short status; | 366 | unsigned short status; |
| 367 | unsigned short ctrl; | 367 | unsigned short ctrl; |
| @@ -426,7 +426,7 @@ static void sci_transmit_chars(struct uart_port *port) | |||
| 426 | static inline void sci_receive_chars(struct uart_port *port) | 426 | static inline void sci_receive_chars(struct uart_port *port) |
| 427 | { | 427 | { |
| 428 | struct sci_port *sci_port = to_sci_port(port); | 428 | struct sci_port *sci_port = to_sci_port(port); |
| 429 | struct tty_struct *tty = port->info->port.tty; | 429 | struct tty_struct *tty = port->state->port.tty; |
| 430 | int i, count, copied = 0; | 430 | int i, count, copied = 0; |
| 431 | unsigned short status; | 431 | unsigned short status; |
| 432 | unsigned char flag; | 432 | unsigned char flag; |
| @@ -546,7 +546,7 @@ static inline int sci_handle_errors(struct uart_port *port) | |||
| 546 | { | 546 | { |
| 547 | int copied = 0; | 547 | int copied = 0; |
| 548 | unsigned short status = sci_in(port, SCxSR); | 548 | unsigned short status = sci_in(port, SCxSR); |
| 549 | struct tty_struct *tty = port->info->port.tty; | 549 | struct tty_struct *tty = port->state->port.tty; |
| 550 | 550 | ||
| 551 | if (status & SCxSR_ORER(port)) { | 551 | if (status & SCxSR_ORER(port)) { |
| 552 | /* overrun error */ | 552 | /* overrun error */ |
| @@ -600,7 +600,7 @@ static inline int sci_handle_errors(struct uart_port *port) | |||
| 600 | 600 | ||
| 601 | static inline int sci_handle_fifo_overrun(struct uart_port *port) | 601 | static inline int sci_handle_fifo_overrun(struct uart_port *port) |
| 602 | { | 602 | { |
| 603 | struct tty_struct *tty = port->info->port.tty; | 603 | struct tty_struct *tty = port->state->port.tty; |
| 604 | int copied = 0; | 604 | int copied = 0; |
| 605 | 605 | ||
| 606 | if (port->type != PORT_SCIF) | 606 | if (port->type != PORT_SCIF) |
| @@ -623,7 +623,7 @@ static inline int sci_handle_breaks(struct uart_port *port) | |||
| 623 | { | 623 | { |
| 624 | int copied = 0; | 624 | int copied = 0; |
| 625 | unsigned short status = sci_in(port, SCxSR); | 625 | unsigned short status = sci_in(port, SCxSR); |
| 626 | struct tty_struct *tty = port->info->port.tty; | 626 | struct tty_struct *tty = port->state->port.tty; |
| 627 | struct sci_port *s = to_sci_port(port); | 627 | struct sci_port *s = to_sci_port(port); |
| 628 | 628 | ||
| 629 | if (uart_handle_break(port)) | 629 | if (uart_handle_break(port)) |
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c index d5276c012f78..9794e0cd3dcc 100644 --- a/drivers/serial/sn_console.c +++ b/drivers/serial/sn_console.c | |||
| @@ -469,9 +469,9 @@ sn_receive_chars(struct sn_cons_port *port, unsigned long flags) | |||
| 469 | return; | 469 | return; |
| 470 | } | 470 | } |
| 471 | 471 | ||
| 472 | if (port->sc_port.info) { | 472 | if (port->sc_port.state) { |
| 473 | /* The serial_core stuffs are initilized, use them */ | 473 | /* The serial_core stuffs are initilized, use them */ |
| 474 | tty = port->sc_port.info->port.tty; | 474 | tty = port->sc_port.state->port.tty; |
| 475 | } | 475 | } |
| 476 | else { | 476 | else { |
| 477 | /* Not registered yet - can't pass to tty layer. */ | 477 | /* Not registered yet - can't pass to tty layer. */ |
| @@ -550,9 +550,9 @@ static void sn_transmit_chars(struct sn_cons_port *port, int raw) | |||
| 550 | 550 | ||
| 551 | BUG_ON(!port->sc_is_asynch); | 551 | BUG_ON(!port->sc_is_asynch); |
| 552 | 552 | ||
| 553 | if (port->sc_port.info) { | 553 | if (port->sc_port.state) { |
| 554 | /* We're initilized, using serial core infrastructure */ | 554 | /* We're initilized, using serial core infrastructure */ |
| 555 | xmit = &port->sc_port.info->xmit; | 555 | xmit = &port->sc_port.state->xmit; |
| 556 | } else { | 556 | } else { |
| 557 | /* Probably sn_sal_switch_to_asynch has been run but serial core isn't | 557 | /* Probably sn_sal_switch_to_asynch has been run but serial core isn't |
| 558 | * initilized yet. Just return. Writes are going through | 558 | * initilized yet. Just return. Writes are going through |
| @@ -927,7 +927,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) | |||
| 927 | /* We can't look at the xmit buffer if we're not registered with serial core | 927 | /* We can't look at the xmit buffer if we're not registered with serial core |
| 928 | * yet. So only do the fancy recovery after registering | 928 | * yet. So only do the fancy recovery after registering |
| 929 | */ | 929 | */ |
| 930 | if (!port->sc_port.info) { | 930 | if (!port->sc_port.state) { |
| 931 | /* Not yet registered with serial core - simple case */ | 931 | /* Not yet registered with serial core - simple case */ |
| 932 | puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count); | 932 | puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count); |
| 933 | return; | 933 | return; |
| @@ -936,8 +936,8 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) | |||
| 936 | /* somebody really wants this output, might be an | 936 | /* somebody really wants this output, might be an |
| 937 | * oops, kdb, panic, etc. make sure they get it. */ | 937 | * oops, kdb, panic, etc. make sure they get it. */ |
| 938 | if (spin_is_locked(&port->sc_port.lock)) { | 938 | if (spin_is_locked(&port->sc_port.lock)) { |
| 939 | int lhead = port->sc_port.info->xmit.head; | 939 | int lhead = port->sc_port.state->xmit.head; |
| 940 | int ltail = port->sc_port.info->xmit.tail; | 940 | int ltail = port->sc_port.state->xmit.tail; |
| 941 | int counter, got_lock = 0; | 941 | int counter, got_lock = 0; |
| 942 | 942 | ||
| 943 | /* | 943 | /* |
| @@ -962,13 +962,13 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) | |||
| 962 | break; | 962 | break; |
| 963 | } else { | 963 | } else { |
| 964 | /* still locked */ | 964 | /* still locked */ |
| 965 | if ((lhead != port->sc_port.info->xmit.head) | 965 | if ((lhead != port->sc_port.state->xmit.head) |
| 966 | || (ltail != | 966 | || (ltail != |
| 967 | port->sc_port.info->xmit.tail)) { | 967 | port->sc_port.state->xmit.tail)) { |
| 968 | lhead = | 968 | lhead = |
| 969 | port->sc_port.info->xmit.head; | 969 | port->sc_port.state->xmit.head; |
| 970 | ltail = | 970 | ltail = |
| 971 | port->sc_port.info->xmit.tail; | 971 | port->sc_port.state->xmit.tail; |
| 972 | counter = 0; | 972 | counter = 0; |
| 973 | } | 973 | } |
| 974 | } | 974 | } |
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index 1df5325faab2..d548652dee50 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c | |||
| @@ -184,8 +184,8 @@ static struct tty_struct *receive_chars(struct uart_port *port) | |||
| 184 | { | 184 | { |
| 185 | struct tty_struct *tty = NULL; | 185 | struct tty_struct *tty = NULL; |
| 186 | 186 | ||
| 187 | if (port->info != NULL) /* Unopened serial console */ | 187 | if (port->state != NULL) /* Unopened serial console */ |
| 188 | tty = port->info->port.tty; | 188 | tty = port->state->port.tty; |
| 189 | 189 | ||
| 190 | if (sunhv_ops->receive_chars(port, tty)) | 190 | if (sunhv_ops->receive_chars(port, tty)) |
| 191 | sun_do_break(); | 191 | sun_do_break(); |
| @@ -197,10 +197,10 @@ static void transmit_chars(struct uart_port *port) | |||
| 197 | { | 197 | { |
| 198 | struct circ_buf *xmit; | 198 | struct circ_buf *xmit; |
| 199 | 199 | ||
| 200 | if (!port->info) | 200 | if (!port->state) |
| 201 | return; | 201 | return; |
| 202 | 202 | ||
| 203 | xmit = &port->info->xmit; | 203 | xmit = &port->state->xmit; |
| 204 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) | 204 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) |
| 205 | return; | 205 | return; |
| 206 | 206 | ||
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index 0355efe115d9..7c4f2fe8e246 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c | |||
| @@ -117,8 +117,8 @@ receive_chars(struct uart_sunsab_port *up, | |||
| 117 | int count = 0; | 117 | int count = 0; |
| 118 | int i; | 118 | int i; |
| 119 | 119 | ||
| 120 | if (up->port.info != NULL) /* Unopened serial console */ | 120 | if (up->port.state != NULL) /* Unopened serial console */ |
| 121 | tty = up->port.info->port.tty; | 121 | tty = up->port.state->port.tty; |
| 122 | 122 | ||
| 123 | /* Read number of BYTES (Character + Status) available. */ | 123 | /* Read number of BYTES (Character + Status) available. */ |
| 124 | if (stat->sreg.isr0 & SAB82532_ISR0_RPF) { | 124 | if (stat->sreg.isr0 & SAB82532_ISR0_RPF) { |
| @@ -229,7 +229,7 @@ static void sunsab_tx_idle(struct uart_sunsab_port *); | |||
| 229 | static void transmit_chars(struct uart_sunsab_port *up, | 229 | static void transmit_chars(struct uart_sunsab_port *up, |
| 230 | union sab82532_irq_status *stat) | 230 | union sab82532_irq_status *stat) |
| 231 | { | 231 | { |
| 232 | struct circ_buf *xmit = &up->port.info->xmit; | 232 | struct circ_buf *xmit = &up->port.state->xmit; |
| 233 | int i; | 233 | int i; |
| 234 | 234 | ||
| 235 | if (stat->sreg.isr1 & SAB82532_ISR1_ALLS) { | 235 | if (stat->sreg.isr1 & SAB82532_ISR1_ALLS) { |
| @@ -297,7 +297,7 @@ static void check_status(struct uart_sunsab_port *up, | |||
| 297 | up->port.icount.dsr++; | 297 | up->port.icount.dsr++; |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 300 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 301 | } | 301 | } |
| 302 | 302 | ||
| 303 | static irqreturn_t sunsab_interrupt(int irq, void *dev_id) | 303 | static irqreturn_t sunsab_interrupt(int irq, void *dev_id) |
| @@ -429,7 +429,7 @@ static void sunsab_tx_idle(struct uart_sunsab_port *up) | |||
| 429 | static void sunsab_start_tx(struct uart_port *port) | 429 | static void sunsab_start_tx(struct uart_port *port) |
| 430 | { | 430 | { |
| 431 | struct uart_sunsab_port *up = (struct uart_sunsab_port *) port; | 431 | struct uart_sunsab_port *up = (struct uart_sunsab_port *) port; |
| 432 | struct circ_buf *xmit = &up->port.info->xmit; | 432 | struct circ_buf *xmit = &up->port.state->xmit; |
| 433 | int i; | 433 | int i; |
| 434 | 434 | ||
| 435 | up->interrupt_mask1 &= ~(SAB82532_IMR1_ALLS|SAB82532_IMR1_XPR); | 435 | up->interrupt_mask1 &= ~(SAB82532_IMR1_ALLS|SAB82532_IMR1_XPR); |
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 47c6837850b1..5a32365b58ad 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c | |||
| @@ -311,7 +311,7 @@ static void sunsu_enable_ms(struct uart_port *port) | |||
| 311 | static struct tty_struct * | 311 | static struct tty_struct * |
| 312 | receive_chars(struct uart_sunsu_port *up, unsigned char *status) | 312 | receive_chars(struct uart_sunsu_port *up, unsigned char *status) |
| 313 | { | 313 | { |
| 314 | struct tty_struct *tty = up->port.info->port.tty; | 314 | struct tty_struct *tty = up->port.state->port.tty; |
| 315 | unsigned char ch, flag; | 315 | unsigned char ch, flag; |
| 316 | int max_count = 256; | 316 | int max_count = 256; |
| 317 | int saw_console_brk = 0; | 317 | int saw_console_brk = 0; |
| @@ -389,7 +389,7 @@ receive_chars(struct uart_sunsu_port *up, unsigned char *status) | |||
| 389 | 389 | ||
| 390 | static void transmit_chars(struct uart_sunsu_port *up) | 390 | static void transmit_chars(struct uart_sunsu_port *up) |
| 391 | { | 391 | { |
| 392 | struct circ_buf *xmit = &up->port.info->xmit; | 392 | struct circ_buf *xmit = &up->port.state->xmit; |
| 393 | int count; | 393 | int count; |
| 394 | 394 | ||
| 395 | if (up->port.x_char) { | 395 | if (up->port.x_char) { |
| @@ -441,7 +441,7 @@ static void check_modem_status(struct uart_sunsu_port *up) | |||
| 441 | if (status & UART_MSR_DCTS) | 441 | if (status & UART_MSR_DCTS) |
| 442 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); | 442 | uart_handle_cts_change(&up->port, status & UART_MSR_CTS); |
| 443 | 443 | ||
| 444 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 444 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 445 | } | 445 | } |
| 446 | 446 | ||
| 447 | static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id) | 447 | static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id) |
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index e09d3cebb4fb..055034d12b1c 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c | |||
| @@ -328,9 +328,9 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, | |||
| 328 | unsigned char ch, r1, flag; | 328 | unsigned char ch, r1, flag; |
| 329 | 329 | ||
| 330 | tty = NULL; | 330 | tty = NULL; |
| 331 | if (up->port.info != NULL && /* Unopened serial console */ | 331 | if (up->port.state != NULL && /* Unopened serial console */ |
| 332 | up->port.info->port.tty != NULL) /* Keyboard || mouse */ | 332 | up->port.state->port.tty != NULL) /* Keyboard || mouse */ |
| 333 | tty = up->port.info->port.tty; | 333 | tty = up->port.state->port.tty; |
| 334 | 334 | ||
| 335 | for (;;) { | 335 | for (;;) { |
| 336 | 336 | ||
| @@ -451,7 +451,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up, | |||
| 451 | uart_handle_cts_change(&up->port, | 451 | uart_handle_cts_change(&up->port, |
| 452 | (status & CTS)); | 452 | (status & CTS)); |
| 453 | 453 | ||
| 454 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 454 | wake_up_interruptible(&up->port.state->delta_msr_wait); |
| 455 | } | 455 | } |
| 456 | 456 | ||
| 457 | up->prev_status = status; | 457 | up->prev_status = status; |
| @@ -501,9 +501,9 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, | |||
| 501 | return; | 501 | return; |
| 502 | } | 502 | } |
| 503 | 503 | ||
| 504 | if (up->port.info == NULL) | 504 | if (up->port.state == NULL) |
| 505 | goto ack_tx_int; | 505 | goto ack_tx_int; |
| 506 | xmit = &up->port.info->xmit; | 506 | xmit = &up->port.state->xmit; |
| 507 | if (uart_circ_empty(xmit)) | 507 | if (uart_circ_empty(xmit)) |
| 508 | goto ack_tx_int; | 508 | goto ack_tx_int; |
| 509 | 509 | ||
| @@ -705,7 +705,7 @@ static void sunzilog_start_tx(struct uart_port *port) | |||
| 705 | port->icount.tx++; | 705 | port->icount.tx++; |
| 706 | port->x_char = 0; | 706 | port->x_char = 0; |
| 707 | } else { | 707 | } else { |
| 708 | struct circ_buf *xmit = &port->info->xmit; | 708 | struct circ_buf *xmit = &port->state->xmit; |
| 709 | 709 | ||
| 710 | writeb(xmit->buf[xmit->tail], &channel->data); | 710 | writeb(xmit->buf[xmit->tail], &channel->data); |
| 711 | ZSDELAY(); | 711 | ZSDELAY(); |
diff --git a/drivers/serial/timbuart.c b/drivers/serial/timbuart.c index 063a313b755c..3d40be6f389f 100644 --- a/drivers/serial/timbuart.c +++ b/drivers/serial/timbuart.c | |||
| @@ -77,7 +77,7 @@ static void timbuart_flush_buffer(struct uart_port *port) | |||
| 77 | 77 | ||
| 78 | static void timbuart_rx_chars(struct uart_port *port) | 78 | static void timbuart_rx_chars(struct uart_port *port) |
| 79 | { | 79 | { |
| 80 | struct tty_struct *tty = port->info->port.tty; | 80 | struct tty_struct *tty = port->state->port.tty; |
| 81 | 81 | ||
| 82 | while (ioread32(port->membase + TIMBUART_ISR) & RXDP) { | 82 | while (ioread32(port->membase + TIMBUART_ISR) & RXDP) { |
| 83 | u8 ch = ioread8(port->membase + TIMBUART_RXFIFO); | 83 | u8 ch = ioread8(port->membase + TIMBUART_RXFIFO); |
| @@ -86,7 +86,7 @@ static void timbuart_rx_chars(struct uart_port *port) | |||
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | spin_unlock(&port->lock); | 88 | spin_unlock(&port->lock); |
| 89 | tty_flip_buffer_push(port->info->port.tty); | 89 | tty_flip_buffer_push(port->state->port.tty); |
| 90 | spin_lock(&port->lock); | 90 | spin_lock(&port->lock); |
| 91 | 91 | ||
| 92 | dev_dbg(port->dev, "%s - total read %d bytes\n", | 92 | dev_dbg(port->dev, "%s - total read %d bytes\n", |
| @@ -95,7 +95,7 @@ static void timbuart_rx_chars(struct uart_port *port) | |||
| 95 | 95 | ||
| 96 | static void timbuart_tx_chars(struct uart_port *port) | 96 | static void timbuart_tx_chars(struct uart_port *port) |
| 97 | { | 97 | { |
| 98 | struct circ_buf *xmit = &port->info->xmit; | 98 | struct circ_buf *xmit = &port->state->xmit; |
| 99 | 99 | ||
| 100 | while (!(ioread32(port->membase + TIMBUART_ISR) & TXBF) && | 100 | while (!(ioread32(port->membase + TIMBUART_ISR) & TXBF) && |
| 101 | !uart_circ_empty(xmit)) { | 101 | !uart_circ_empty(xmit)) { |
| @@ -118,7 +118,7 @@ static void timbuart_handle_tx_port(struct uart_port *port, u32 isr, u32 *ier) | |||
| 118 | { | 118 | { |
| 119 | struct timbuart_port *uart = | 119 | struct timbuart_port *uart = |
| 120 | container_of(port, struct timbuart_port, port); | 120 | container_of(port, struct timbuart_port, port); |
| 121 | struct circ_buf *xmit = &port->info->xmit; | 121 | struct circ_buf *xmit = &port->state->xmit; |
| 122 | 122 | ||
| 123 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) | 123 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) |
| 124 | return; | 124 | return; |
| @@ -231,7 +231,7 @@ static void timbuart_mctrl_check(struct uart_port *port, u32 isr, u32 *ier) | |||
| 231 | iowrite32(CTS_DELTA, port->membase + TIMBUART_ISR); | 231 | iowrite32(CTS_DELTA, port->membase + TIMBUART_ISR); |
| 232 | cts = timbuart_get_mctrl(port); | 232 | cts = timbuart_get_mctrl(port); |
| 233 | uart_handle_cts_change(port, cts & TIOCM_CTS); | 233 | uart_handle_cts_change(port, cts & TIOCM_CTS); |
| 234 | wake_up_interruptible(&port->info->delta_msr_wait); | 234 | wake_up_interruptible(&port->state->delta_msr_wait); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | *ier |= CTS_DELTA; | 237 | *ier |= CTS_DELTA; |
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c index 3317148a4b93..5d3a573d6994 100644 --- a/drivers/serial/uartlite.c +++ b/drivers/serial/uartlite.c | |||
| @@ -75,7 +75,7 @@ static struct uart_port ulite_ports[ULITE_NR_UARTS]; | |||
| 75 | 75 | ||
| 76 | static int ulite_receive(struct uart_port *port, int stat) | 76 | static int ulite_receive(struct uart_port *port, int stat) |
| 77 | { | 77 | { |
| 78 | struct tty_struct *tty = port->info->port.tty; | 78 | struct tty_struct *tty = port->state->port.tty; |
| 79 | unsigned char ch = 0; | 79 | unsigned char ch = 0; |
| 80 | char flag = TTY_NORMAL; | 80 | char flag = TTY_NORMAL; |
| 81 | 81 | ||
| @@ -125,7 +125,7 @@ static int ulite_receive(struct uart_port *port, int stat) | |||
| 125 | 125 | ||
| 126 | static int ulite_transmit(struct uart_port *port, int stat) | 126 | static int ulite_transmit(struct uart_port *port, int stat) |
| 127 | { | 127 | { |
| 128 | struct circ_buf *xmit = &port->info->xmit; | 128 | struct circ_buf *xmit = &port->state->xmit; |
| 129 | 129 | ||
| 130 | if (stat & ULITE_STATUS_TXFULL) | 130 | if (stat & ULITE_STATUS_TXFULL) |
| 131 | return 0; | 131 | return 0; |
| @@ -162,7 +162,7 @@ static irqreturn_t ulite_isr(int irq, void *dev_id) | |||
| 162 | busy |= ulite_transmit(port, stat); | 162 | busy |= ulite_transmit(port, stat); |
| 163 | } while (busy); | 163 | } while (busy); |
| 164 | 164 | ||
| 165 | tty_flip_buffer_push(port->info->port.tty); | 165 | tty_flip_buffer_push(port->state->port.tty); |
| 166 | 166 | ||
| 167 | return IRQ_HANDLED; | 167 | return IRQ_HANDLED; |
| 168 | } | 168 | } |
diff --git a/drivers/serial/ucc_uart.c b/drivers/serial/ucc_uart.c index e945e780b5c9..0c08f286a2ef 100644 --- a/drivers/serial/ucc_uart.c +++ b/drivers/serial/ucc_uart.c | |||
| @@ -327,7 +327,7 @@ static int qe_uart_tx_pump(struct uart_qe_port *qe_port) | |||
| 327 | unsigned char *p; | 327 | unsigned char *p; |
| 328 | unsigned int count; | 328 | unsigned int count; |
| 329 | struct uart_port *port = &qe_port->port; | 329 | struct uart_port *port = &qe_port->port; |
| 330 | struct circ_buf *xmit = &port->info->xmit; | 330 | struct circ_buf *xmit = &port->state->xmit; |
| 331 | 331 | ||
| 332 | bdp = qe_port->rx_cur; | 332 | bdp = qe_port->rx_cur; |
| 333 | 333 | ||
| @@ -466,7 +466,7 @@ static void qe_uart_int_rx(struct uart_qe_port *qe_port) | |||
| 466 | int i; | 466 | int i; |
| 467 | unsigned char ch, *cp; | 467 | unsigned char ch, *cp; |
| 468 | struct uart_port *port = &qe_port->port; | 468 | struct uart_port *port = &qe_port->port; |
| 469 | struct tty_struct *tty = port->info->port.tty; | 469 | struct tty_struct *tty = port->state->port.tty; |
| 470 | struct qe_bd *bdp; | 470 | struct qe_bd *bdp; |
| 471 | u16 status; | 471 | u16 status; |
| 472 | unsigned int flg; | 472 | unsigned int flg; |
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c index dac550e57c29..cf4410e6d53b 100644 --- a/drivers/serial/vr41xx_siu.c +++ b/drivers/serial/vr41xx_siu.c | |||
| @@ -318,7 +318,7 @@ static inline void receive_chars(struct uart_port *port, uint8_t *status) | |||
| 318 | char flag; | 318 | char flag; |
| 319 | int max_count = RX_MAX_COUNT; | 319 | int max_count = RX_MAX_COUNT; |
| 320 | 320 | ||
| 321 | tty = port->info->port.tty; | 321 | tty = port->state->port.tty; |
| 322 | lsr = *status; | 322 | lsr = *status; |
| 323 | 323 | ||
| 324 | do { | 324 | do { |
| @@ -386,7 +386,7 @@ static inline void check_modem_status(struct uart_port *port) | |||
| 386 | if (msr & UART_MSR_DCTS) | 386 | if (msr & UART_MSR_DCTS) |
| 387 | uart_handle_cts_change(port, msr & UART_MSR_CTS); | 387 | uart_handle_cts_change(port, msr & UART_MSR_CTS); |
| 388 | 388 | ||
| 389 | wake_up_interruptible(&port->info->delta_msr_wait); | 389 | wake_up_interruptible(&port->state->delta_msr_wait); |
| 390 | } | 390 | } |
| 391 | 391 | ||
| 392 | static inline void transmit_chars(struct uart_port *port) | 392 | static inline void transmit_chars(struct uart_port *port) |
| @@ -394,7 +394,7 @@ static inline void transmit_chars(struct uart_port *port) | |||
| 394 | struct circ_buf *xmit; | 394 | struct circ_buf *xmit; |
| 395 | int max_count = TX_MAX_COUNT; | 395 | int max_count = TX_MAX_COUNT; |
| 396 | 396 | ||
| 397 | xmit = &port->info->xmit; | 397 | xmit = &port->state->xmit; |
| 398 | 398 | ||
| 399 | if (port->x_char) { | 399 | if (port->x_char) { |
| 400 | siu_write(port, UART_TX, port->x_char); | 400 | siu_write(port, UART_TX, port->x_char); |
diff --git a/drivers/serial/zs.c b/drivers/serial/zs.c index d8c2809b1ab6..b9c9fb9198d6 100644 --- a/drivers/serial/zs.c +++ b/drivers/serial/zs.c | |||
| @@ -602,12 +602,12 @@ static void zs_receive_chars(struct zs_port *zport) | |||
| 602 | uart_insert_char(uport, status, Rx_OVR, ch, flag); | 602 | uart_insert_char(uport, status, Rx_OVR, ch, flag); |
| 603 | } | 603 | } |
| 604 | 604 | ||
| 605 | tty_flip_buffer_push(uport->info->port.tty); | 605 | tty_flip_buffer_push(uport->state->port.tty); |
| 606 | } | 606 | } |
| 607 | 607 | ||
| 608 | static void zs_raw_transmit_chars(struct zs_port *zport) | 608 | static void zs_raw_transmit_chars(struct zs_port *zport) |
| 609 | { | 609 | { |
| 610 | struct circ_buf *xmit = &zport->port.info->xmit; | 610 | struct circ_buf *xmit = &zport->port.state->xmit; |
| 611 | 611 | ||
| 612 | /* XON/XOFF chars. */ | 612 | /* XON/XOFF chars. */ |
| 613 | if (zport->port.x_char) { | 613 | if (zport->port.x_char) { |
| @@ -686,7 +686,7 @@ static void zs_status_handle(struct zs_port *zport, struct zs_port *zport_a) | |||
| 686 | uport->icount.rng++; | 686 | uport->icount.rng++; |
| 687 | 687 | ||
| 688 | if (delta) | 688 | if (delta) |
| 689 | wake_up_interruptible(&uport->info->delta_msr_wait); | 689 | wake_up_interruptible(&uport->state->delta_msr_wait); |
| 690 | 690 | ||
| 691 | spin_lock(&scc->zlock); | 691 | spin_lock(&scc->zlock); |
| 692 | } | 692 | } |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 3cd255f0b211..c1542703fbab 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -186,7 +186,6 @@ | |||
| 186 | #include <linux/sysrq.h> | 186 | #include <linux/sysrq.h> |
| 187 | 187 | ||
| 188 | struct uart_port; | 188 | struct uart_port; |
| 189 | struct uart_info; | ||
| 190 | struct serial_struct; | 189 | struct serial_struct; |
| 191 | struct device; | 190 | struct device; |
| 192 | 191 | ||
| @@ -284,7 +283,7 @@ struct uart_port { | |||
| 284 | 283 | ||
| 285 | unsigned int read_status_mask; /* driver specific */ | 284 | unsigned int read_status_mask; /* driver specific */ |
| 286 | unsigned int ignore_status_mask; /* driver specific */ | 285 | unsigned int ignore_status_mask; /* driver specific */ |
| 287 | struct uart_info *info; /* pointer to parent info */ | 286 | struct uart_state *state; /* pointer to parent state */ |
| 288 | struct uart_icount icount; /* statistics */ | 287 | struct uart_icount icount; /* statistics */ |
| 289 | 288 | ||
| 290 | struct console *cons; /* struct console, if any */ | 289 | struct console *cons; /* struct console, if any */ |
| @@ -343,8 +342,22 @@ struct uart_port { | |||
| 343 | */ | 342 | */ |
| 344 | typedef unsigned int __bitwise__ uif_t; | 343 | typedef unsigned int __bitwise__ uif_t; |
| 345 | 344 | ||
| 346 | struct uart_info { | 345 | |
| 346 | /* | ||
| 347 | * This is the state information which is persistent across opens. | ||
| 348 | * The low level driver must not to touch any elements contained | ||
| 349 | * within. | ||
| 350 | */ | ||
| 351 | struct uart_state { | ||
| 347 | struct tty_port port; | 352 | struct tty_port port; |
| 353 | unsigned int close_delay; /* msec */ | ||
| 354 | unsigned int closing_wait; /* msec */ | ||
| 355 | |||
| 356 | #define USF_CLOSING_WAIT_INF (0) | ||
| 357 | #define USF_CLOSING_WAIT_NONE (~0U) | ||
| 358 | |||
| 359 | int count; | ||
| 360 | int pm_state; | ||
| 348 | struct circ_buf xmit; | 361 | struct circ_buf xmit; |
| 349 | uif_t flags; | 362 | uif_t flags; |
| 350 | 363 | ||
| @@ -362,24 +375,7 @@ struct uart_info { | |||
| 362 | 375 | ||
| 363 | struct tasklet_struct tlet; | 376 | struct tasklet_struct tlet; |
| 364 | wait_queue_head_t delta_msr_wait; | 377 | wait_queue_head_t delta_msr_wait; |
| 365 | }; | 378 | struct uart_port *uart_port; |
| 366 | |||
| 367 | /* | ||
| 368 | * This is the state information which is persistent across opens. | ||
| 369 | * The low level driver must not to touch any elements contained | ||
| 370 | * within. | ||
| 371 | */ | ||
| 372 | struct uart_state { | ||
| 373 | unsigned int close_delay; /* msec */ | ||
| 374 | unsigned int closing_wait; /* msec */ | ||
| 375 | |||
| 376 | #define USF_CLOSING_WAIT_INF (0) | ||
| 377 | #define USF_CLOSING_WAIT_NONE (~0U) | ||
| 378 | |||
| 379 | int count; | ||
| 380 | int pm_state; | ||
| 381 | struct uart_info info; | ||
| 382 | struct uart_port *port; | ||
| 383 | 379 | ||
| 384 | struct mutex mutex; | 380 | struct mutex mutex; |
| 385 | }; | 381 | }; |
| @@ -462,7 +458,7 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port); | |||
| 462 | 458 | ||
| 463 | static inline int uart_tx_stopped(struct uart_port *port) | 459 | static inline int uart_tx_stopped(struct uart_port *port) |
| 464 | { | 460 | { |
| 465 | struct tty_struct *tty = port->info->port.tty; | 461 | struct tty_struct *tty = port->state->port.tty; |
| 466 | if(tty->stopped || tty->hw_stopped) | 462 | if(tty->stopped || tty->hw_stopped) |
| 467 | return 1; | 463 | return 1; |
| 468 | return 0; | 464 | return 0; |
| @@ -477,7 +473,7 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch) | |||
| 477 | #ifdef SUPPORT_SYSRQ | 473 | #ifdef SUPPORT_SYSRQ |
| 478 | if (port->sysrq) { | 474 | if (port->sysrq) { |
| 479 | if (ch && time_before(jiffies, port->sysrq)) { | 475 | if (ch && time_before(jiffies, port->sysrq)) { |
| 480 | handle_sysrq(ch, port->info->port.tty); | 476 | handle_sysrq(ch, port->state->port.tty); |
| 481 | port->sysrq = 0; | 477 | port->sysrq = 0; |
| 482 | return 1; | 478 | return 1; |
| 483 | } | 479 | } |
| @@ -495,7 +491,7 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch) | |||
| 495 | */ | 491 | */ |
| 496 | static inline int uart_handle_break(struct uart_port *port) | 492 | static inline int uart_handle_break(struct uart_port *port) |
| 497 | { | 493 | { |
| 498 | struct uart_info *info = port->info; | 494 | struct uart_state *state = port->state; |
| 499 | #ifdef SUPPORT_SYSRQ | 495 | #ifdef SUPPORT_SYSRQ |
| 500 | if (port->cons && port->cons->index == port->line) { | 496 | if (port->cons && port->cons->index == port->line) { |
| 501 | if (!port->sysrq) { | 497 | if (!port->sysrq) { |
| @@ -506,7 +502,7 @@ static inline int uart_handle_break(struct uart_port *port) | |||
| 506 | } | 502 | } |
| 507 | #endif | 503 | #endif |
| 508 | if (port->flags & UPF_SAK) | 504 | if (port->flags & UPF_SAK) |
| 509 | do_SAK(info->port.tty); | 505 | do_SAK(state->port.tty); |
| 510 | return 0; | 506 | return 0; |
| 511 | } | 507 | } |
| 512 | 508 | ||
| @@ -518,7 +514,7 @@ static inline int uart_handle_break(struct uart_port *port) | |||
| 518 | static inline void | 514 | static inline void |
| 519 | uart_handle_dcd_change(struct uart_port *port, unsigned int status) | 515 | uart_handle_dcd_change(struct uart_port *port, unsigned int status) |
| 520 | { | 516 | { |
| 521 | struct uart_info *info = port->info; | 517 | struct uart_state *state = port->state; |
| 522 | 518 | ||
| 523 | port->icount.dcd++; | 519 | port->icount.dcd++; |
| 524 | 520 | ||
| @@ -527,11 +523,11 @@ uart_handle_dcd_change(struct uart_port *port, unsigned int status) | |||
| 527 | hardpps(); | 523 | hardpps(); |
| 528 | #endif | 524 | #endif |
| 529 | 525 | ||
| 530 | if (info->flags & UIF_CHECK_CD) { | 526 | if (state->flags & UIF_CHECK_CD) { |
| 531 | if (status) | 527 | if (status) |
| 532 | wake_up_interruptible(&info->port.open_wait); | 528 | wake_up_interruptible(&state->port.open_wait); |
| 533 | else if (info->port.tty) | 529 | else if (state->port.tty) |
| 534 | tty_hangup(info->port.tty); | 530 | tty_hangup(state->port.tty); |
| 535 | } | 531 | } |
| 536 | } | 532 | } |
| 537 | 533 | ||
| @@ -543,12 +539,12 @@ uart_handle_dcd_change(struct uart_port *port, unsigned int status) | |||
| 543 | static inline void | 539 | static inline void |
| 544 | uart_handle_cts_change(struct uart_port *port, unsigned int status) | 540 | uart_handle_cts_change(struct uart_port *port, unsigned int status) |
| 545 | { | 541 | { |
| 546 | struct uart_info *info = port->info; | 542 | struct uart_state *state = port->state; |
| 547 | struct tty_struct *tty = info->port.tty; | 543 | struct tty_struct *tty = state->port.tty; |
| 548 | 544 | ||
| 549 | port->icount.cts++; | 545 | port->icount.cts++; |
| 550 | 546 | ||
| 551 | if (info->flags & UIF_CTS_FLOW) { | 547 | if (state->flags & UIF_CTS_FLOW) { |
| 552 | if (tty->hw_stopped) { | 548 | if (tty->hw_stopped) { |
| 553 | if (status) { | 549 | if (status) { |
| 554 | tty->hw_stopped = 0; | 550 | tty->hw_stopped = 0; |
| @@ -570,7 +566,7 @@ static inline void | |||
| 570 | uart_insert_char(struct uart_port *port, unsigned int status, | 566 | uart_insert_char(struct uart_port *port, unsigned int status, |
| 571 | unsigned int overrun, unsigned int ch, unsigned int flag) | 567 | unsigned int overrun, unsigned int ch, unsigned int flag) |
| 572 | { | 568 | { |
| 573 | struct tty_struct *tty = port->info->port.tty; | 569 | struct tty_struct *tty = port->state->port.tty; |
| 574 | 570 | ||
| 575 | if ((status & port->ignore_status_mask & ~overrun) == 0) | 571 | if ((status & port->ignore_status_mask & ~overrun) == 0) |
| 576 | tty_insert_flip_char(tty, ch, flag); | 572 | tty_insert_flip_char(tty, ch, flag); |
