aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2013-01-03 09:53:04 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-16 01:22:35 -0500
commit05c7cd39907184328f48d3e7899f9cdd653ad336 (patch)
tree9d1ed5c757426aa20b7eccd853faa6b519a4aa7b /drivers/tty
parent92a19f9cec9a80ad93c06e115822deb729e2c6ad (diff)
TTY: switch tty_insert_flip_string
Now, we start converting tty buffer functions to actually use tty_port. This will allow us to get rid of the need of tty in many call sites. Only tty_port will needed and hence no more tty_port_tty_get in those paths. tty_insert_flip_string this time. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/bfin_jtag_comm.c2
-rw-r--r--drivers/tty/ehv_bytechan.c2
-rw-r--r--drivers/tty/hvc/hvcs.c2
-rw-r--r--drivers/tty/ipwireless/tty.c2
-rw-r--r--drivers/tty/n_gsm.c2
-rw-r--r--drivers/tty/nozomi.c14
-rw-r--r--drivers/tty/pty.c2
-rw-r--r--drivers/tty/serial/amba-pl011.c6
-rw-r--r--drivers/tty/serial/atmel_serial.c6
-rw-r--r--drivers/tty/serial/crisv10.c2
-rw-r--r--drivers/tty/serial/icom.c2
-rw-r--r--drivers/tty/serial/ifx6x60.c2
-rw-r--r--drivers/tty/serial/ioc3_serial.c3
-rw-r--r--drivers/tty/serial/ioc4_serial.c2
-rw-r--r--drivers/tty/serial/jsm/jsm_tty.c2
-rw-r--r--drivers/tty/serial/mfd.c5
-rw-r--r--drivers/tty/serial/mrst_max3110.c2
-rw-r--r--drivers/tty/serial/msm_serial.c2
-rw-r--r--drivers/tty/serial/msm_serial_hs.c2
-rw-r--r--drivers/tty/serial/mxs-auart.c5
-rw-r--r--drivers/tty/serial/pch_uart.c10
-rw-r--r--drivers/tty/serial/sunhv.c13
22 files changed, 46 insertions, 44 deletions
diff --git a/drivers/tty/bfin_jtag_comm.c b/drivers/tty/bfin_jtag_comm.c
index 1cfcdbf1d0cc..143c38579cb5 100644
--- a/drivers/tty/bfin_jtag_comm.c
+++ b/drivers/tty/bfin_jtag_comm.c
@@ -104,7 +104,7 @@ bfin_jc_emudat_manager(void *arg)
104 size_t num_chars = (4 <= inbound_len ? 4 : inbound_len); 104 size_t num_chars = (4 <= inbound_len ? 4 : inbound_len);
105 pr_debug(" incoming data: 0x%08x (pushing %zu)\n", emudat, num_chars); 105 pr_debug(" incoming data: 0x%08x (pushing %zu)\n", emudat, num_chars);
106 inbound_len -= num_chars; 106 inbound_len -= num_chars;
107 tty_insert_flip_string(tty, (unsigned char *)&emudat, num_chars); 107 tty_insert_flip_string(&port, (unsigned char *)&emudat, num_chars);
108 tty_flip_buffer_push(tty); 108 tty_flip_buffer_push(tty);
109 } 109 }
110 } 110 }
diff --git a/drivers/tty/ehv_bytechan.c b/drivers/tty/ehv_bytechan.c
index af97e39d641c..5164f9a57017 100644
--- a/drivers/tty/ehv_bytechan.c
+++ b/drivers/tty/ehv_bytechan.c
@@ -407,7 +407,7 @@ static irqreturn_t ehv_bc_tty_rx_isr(int irq, void *data)
407 */ 407 */
408 408
409 /* Pass the received data to the tty layer. */ 409 /* Pass the received data to the tty layer. */
410 ret = tty_insert_flip_string(ttys, buffer, len); 410 ret = tty_insert_flip_string(&bc->port, buffer, len);
411 411
412 /* 'ret' is the number of bytes that the TTY layer accepted. 412 /* 'ret' is the number of bytes that the TTY layer accepted.
413 * If it's not equal to 'len', then it means the buffer is 413 * If it's not equal to 'len', then it means the buffer is
diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
index 4a0ab98e9a63..7bfc0a924b2f 100644
--- a/drivers/tty/hvc/hvcs.c
+++ b/drivers/tty/hvc/hvcs.c
@@ -613,7 +613,7 @@ static int hvcs_io(struct hvcs_struct *hvcsd)
613 got = hvc_get_chars(unit_address, 613 got = hvc_get_chars(unit_address,
614 &buf[0], 614 &buf[0],
615 HVCS_BUFF_LEN); 615 HVCS_BUFF_LEN);
616 tty_insert_flip_string(tty, buf, got); 616 tty_insert_flip_string(&hvcsd->port, buf, got);
617 } 617 }
618 618
619 /* Give the TTY time to process the data we just sent. */ 619 /* Give the TTY time to process the data we just sent. */
diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
index 2cde13ddf9fc..a3ad5e14cbef 100644
--- a/drivers/tty/ipwireless/tty.c
+++ b/drivers/tty/ipwireless/tty.c
@@ -176,7 +176,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
176 } 176 }
177 mutex_unlock(&tty->ipw_tty_mutex); 177 mutex_unlock(&tty->ipw_tty_mutex);
178 178
179 work = tty_insert_flip_string(linux_tty, data, length); 179 work = tty_insert_flip_string(&tty->port, data, length);
180 180
181 if (work != length) 181 if (work != length)
182 printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME 182 printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 769016504c88..4a3342d21c8f 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -1578,7 +1578,7 @@ static void gsm_dlci_data(struct gsm_dlci *dlci, u8 *data, int clen)
1578 /* Line state will go via DLCI 0 controls only */ 1578 /* Line state will go via DLCI 0 controls only */
1579 case 1: 1579 case 1:
1580 default: 1580 default:
1581 tty_insert_flip_string(tty, data, len); 1581 tty_insert_flip_string(port, data, len);
1582 tty_flip_buffer_push(tty); 1582 tty_flip_buffer_push(tty);
1583 } 1583 }
1584 tty_kref_put(tty); 1584 tty_kref_put(tty);
diff --git a/drivers/tty/nozomi.c b/drivers/tty/nozomi.c
index 437a6366fb7b..941fe8060ea5 100644
--- a/drivers/tty/nozomi.c
+++ b/drivers/tty/nozomi.c
@@ -827,15 +827,10 @@ static int receive_data(enum port_type index, struct nozomi *dc)
827 struct tty_struct *tty = tty_port_tty_get(&port->port); 827 struct tty_struct *tty = tty_port_tty_get(&port->port);
828 int i, ret; 828 int i, ret;
829 829
830 if (unlikely(!tty)) {
831 DBG1("tty not open for port: %d?", index);
832 return 1;
833 }
834
835 read_mem32((u32 *) &size, addr, 4); 830 read_mem32((u32 *) &size, addr, 4);
836 /* DBG1( "%d bytes port: %d", size, index); */ 831 /* DBG1( "%d bytes port: %d", size, index); */
837 832
838 if (test_bit(TTY_THROTTLED, &tty->flags)) { 833 if (tty && test_bit(TTY_THROTTLED, &tty->flags)) {
839 DBG1("No room in tty, don't read data, don't ack interrupt, " 834 DBG1("No room in tty, don't read data, don't ack interrupt, "
840 "disable interrupt"); 835 "disable interrupt");
841 836
@@ -858,10 +853,11 @@ static int receive_data(enum port_type index, struct nozomi *dc)
858 tty_insert_flip_char(&port->port, buf[0], TTY_NORMAL); 853 tty_insert_flip_char(&port->port, buf[0], TTY_NORMAL);
859 size = 0; 854 size = 0;
860 } else if (size < RECEIVE_BUF_MAX) { 855 } else if (size < RECEIVE_BUF_MAX) {
861 size -= tty_insert_flip_string(tty, (char *) buf, size); 856 size -= tty_insert_flip_string(&port->port,
857 (char *)buf, size);
862 } else { 858 } else {
863 i = tty_insert_flip_string(tty, \ 859 i = tty_insert_flip_string(&port->port,
864 (char *) buf, RECEIVE_BUF_MAX); 860 (char *)buf, RECEIVE_BUF_MAX);
865 size -= i; 861 size -= i;
866 offset += i; 862 offset += i;
867 } 863 }
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index be6a373601b7..3c285d398f38 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -120,7 +120,7 @@ static int pty_write(struct tty_struct *tty, const unsigned char *buf, int c)
120 120
121 if (c > 0) { 121 if (c > 0) {
122 /* Stuff the data into the input queue of the other end */ 122 /* Stuff the data into the input queue of the other end */
123 c = tty_insert_flip_string(to, buf, c); 123 c = tty_insert_flip_string(to->port, buf, c);
124 /* And shovel */ 124 /* And shovel */
125 if (c) { 125 if (c) {
126 tty_flip_buffer_push(to); 126 tty_flip_buffer_push(to);
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 7fca4022a8b2..e1257d17f5f0 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -698,7 +698,8 @@ static void pl011_dma_rx_chars(struct uart_amba_port *uap,
698 u32 pending, bool use_buf_b, 698 u32 pending, bool use_buf_b,
699 bool readfifo) 699 bool readfifo)
700{ 700{
701 struct tty_struct *tty = uap->port.state->port.tty; 701 struct tty_port *port = &uap->port.state->port;
702 struct tty_struct *tty = port->tty;
702 struct pl011_sgbuf *sgbuf = use_buf_b ? 703 struct pl011_sgbuf *sgbuf = use_buf_b ?
703 &uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a; 704 &uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a;
704 struct device *dev = uap->dmarx.chan->device->dev; 705 struct device *dev = uap->dmarx.chan->device->dev;
@@ -715,8 +716,7 @@ static void pl011_dma_rx_chars(struct uart_amba_port *uap,
715 * Note that tty_insert_flip_buf() tries to take as many chars 716 * Note that tty_insert_flip_buf() tries to take as many chars
716 * as it can. 717 * as it can.
717 */ 718 */
718 dma_count = tty_insert_flip_string(uap->port.state->port.tty, 719 dma_count = tty_insert_flip_string(port, sgbuf->buf, pending);
719 sgbuf->buf, pending);
720 720
721 /* Return buffer to device */ 721 /* Return buffer to device */
722 dma_sync_sg_for_device(dev, &sgbuf->sg, 1, DMA_FROM_DEVICE); 722 dma_sync_sg_for_device(dev, &sgbuf->sg, 1, DMA_FROM_DEVICE);
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 922e85aeb63a..929567038c5a 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -781,7 +781,8 @@ static void atmel_rx_from_ring(struct uart_port *port)
781static void atmel_rx_from_dma(struct uart_port *port) 781static void atmel_rx_from_dma(struct uart_port *port)
782{ 782{
783 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); 783 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
784 struct tty_struct *tty = port->state->port.tty; 784 struct tty_port *tport = &port->state->port;
785 struct tty_struct *tty = tport->tty;
785 struct atmel_dma_buffer *pdc; 786 struct atmel_dma_buffer *pdc;
786 int rx_idx = atmel_port->pdc_rx_idx; 787 int rx_idx = atmel_port->pdc_rx_idx;
787 unsigned int head; 788 unsigned int head;
@@ -820,7 +821,8 @@ static void atmel_rx_from_dma(struct uart_port *port)
820 */ 821 */
821 count = head - tail; 822 count = head - tail;
822 823
823 tty_insert_flip_string(tty, pdc->buf + pdc->ofs, count); 824 tty_insert_flip_string(tport, pdc->buf + pdc->ofs,
825 count);
824 826
825 dma_sync_single_for_device(port->dev, pdc->dma_addr, 827 dma_sync_single_for_device(port->dev, pdc->dma_addr,
826 pdc->dma_size, DMA_FROM_DEVICE); 828 pdc->dma_size, DMA_FROM_DEVICE);
diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
index d12306625458..c82601d4dc53 100644
--- a/drivers/tty/serial/crisv10.c
+++ b/drivers/tty/serial/crisv10.c
@@ -2119,7 +2119,7 @@ static void flush_to_flip_buffer(struct e100_serial *info)
2119 while ((buffer = info->first_recv_buffer) != NULL) { 2119 while ((buffer = info->first_recv_buffer) != NULL) {
2120 unsigned int count = buffer->length; 2120 unsigned int count = buffer->length;
2121 2121
2122 tty_insert_flip_string(tty, buffer->buffer, count); 2122 tty_insert_flip_string(&info->port, buffer->buffer, count);
2123 info->recv_cnt -= count; 2123 info->recv_cnt -= count;
2124 2124
2125 if (count == buffer->length) { 2125 if (count == buffer->length) {
diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c
index 2b0b60ff7f01..54903ee5e5ab 100644
--- a/drivers/tty/serial/icom.c
+++ b/drivers/tty/serial/icom.c
@@ -762,7 +762,7 @@ static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port)
762 /* Block copy all but the last byte as this may have status */ 762 /* Block copy all but the last byte as this may have status */
763 if (count > 0) { 763 if (count > 0) {
764 first = icom_port->recv_buf[offset]; 764 first = icom_port->recv_buf[offset];
765 tty_insert_flip_string(tty, icom_port->recv_buf + offset, count - 1); 765 tty_insert_flip_string(port, icom_port->recv_buf + offset, count - 1);
766 } 766 }
767 767
768 icount = &icom_port->uart_port.icount; 768 icount = &icom_port->uart_port.icount;
diff --git a/drivers/tty/serial/ifx6x60.c b/drivers/tty/serial/ifx6x60.c
index 675d94ab0aff..bfb634ea8145 100644
--- a/drivers/tty/serial/ifx6x60.c
+++ b/drivers/tty/serial/ifx6x60.c
@@ -672,7 +672,7 @@ static void ifx_spi_insert_flip_string(struct ifx_spi_device *ifx_dev,
672 struct tty_struct *tty = tty_port_tty_get(&ifx_dev->tty_port); 672 struct tty_struct *tty = tty_port_tty_get(&ifx_dev->tty_port);
673 if (!tty) 673 if (!tty)
674 return; 674 return;
675 tty_insert_flip_string(tty, chars, size); 675 tty_insert_flip_string(&ifx_dev->tty_port, chars, size);
676 tty_flip_buffer_push(tty); 676 tty_flip_buffer_push(tty);
677 tty_kref_put(tty); 677 tty_kref_put(tty);
678} 678}
diff --git a/drivers/tty/serial/ioc3_serial.c b/drivers/tty/serial/ioc3_serial.c
index d8f1d1d54471..0f25ce49c7f9 100644
--- a/drivers/tty/serial/ioc3_serial.c
+++ b/drivers/tty/serial/ioc3_serial.c
@@ -1415,7 +1415,8 @@ static int receive_chars(struct uart_port *the_port)
1415 read_count = do_read(the_port, ch, MAX_CHARS); 1415 read_count = do_read(the_port, ch, MAX_CHARS);
1416 if (read_count > 0) { 1416 if (read_count > 0) {
1417 flip = 1; 1417 flip = 1;
1418 read_room = tty_insert_flip_string(tty, ch, read_count); 1418 read_room = tty_insert_flip_string(&state->port, ch,
1419 read_count);
1419 the_port->icount.rx += read_count; 1420 the_port->icount.rx += read_count;
1420 } 1421 }
1421 spin_unlock_irqrestore(&the_port->lock, pflags); 1422 spin_unlock_irqrestore(&the_port->lock, pflags);
diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c
index 710ce87ffbeb..3b021b03ae56 100644
--- a/drivers/tty/serial/ioc4_serial.c
+++ b/drivers/tty/serial/ioc4_serial.c
@@ -2362,7 +2362,7 @@ static void receive_chars(struct uart_port *the_port)
2362 icount = &the_port->icount; 2362 icount = &the_port->icount;
2363 read_count = do_read(the_port, ch, request_count); 2363 read_count = do_read(the_port, ch, request_count);
2364 if (read_count > 0) { 2364 if (read_count > 0) {
2365 tty_insert_flip_string(tty, ch, read_count); 2365 tty_insert_flip_string(&state->port, ch, read_count);
2366 icount->rx += read_count; 2366 icount->rx += read_count;
2367 } 2367 }
2368 } 2368 }
diff --git a/drivers/tty/serial/jsm/jsm_tty.c b/drivers/tty/serial/jsm/jsm_tty.c
index ac1d36cb2032..c9ce00dd1f8a 100644
--- a/drivers/tty/serial/jsm/jsm_tty.c
+++ b/drivers/tty/serial/jsm/jsm_tty.c
@@ -640,7 +640,7 @@ void jsm_input(struct jsm_channel *ch)
640 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_NORMAL); 640 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_NORMAL);
641 } 641 }
642 } else { 642 } else {
643 tty_insert_flip_string(tp, ch->ch_rqueue + tail, s) ; 643 tty_insert_flip_string(port, ch->ch_rqueue + tail, s);
644 } 644 }
645 tail += s; 645 tail += s;
646 n -= s; 646 n -= s;
diff --git a/drivers/tty/serial/mfd.c b/drivers/tty/serial/mfd.c
index 2c01344dc332..60d585ab4870 100644
--- a/drivers/tty/serial/mfd.c
+++ b/drivers/tty/serial/mfd.c
@@ -387,7 +387,8 @@ void hsu_dma_rx(struct uart_hsu_port *up, u32 int_sts)
387 struct hsu_dma_buffer *dbuf = &up->rxbuf; 387 struct hsu_dma_buffer *dbuf = &up->rxbuf;
388 struct hsu_dma_chan *chan = up->rxc; 388 struct hsu_dma_chan *chan = up->rxc;
389 struct uart_port *port = &up->port; 389 struct uart_port *port = &up->port;
390 struct tty_struct *tty = port->state->port.tty; 390 struct tty_port *tport = &port->state->port;
391 struct tty_struct *tty = tport->tty;
391 int count; 392 int count;
392 393
393 if (!tty) 394 if (!tty)
@@ -423,7 +424,7 @@ void hsu_dma_rx(struct uart_hsu_port *up, u32 int_sts)
423 * explicitly set tail to 0. So head will 424 * explicitly set tail to 0. So head will
424 * always be greater than tail. 425 * always be greater than tail.
425 */ 426 */
426 tty_insert_flip_string(tty, dbuf->buf, count); 427 tty_insert_flip_string(tport, dbuf->buf, count);
427 port->icount.rx += count; 428 port->icount.rx += count;
428 429
429 dma_sync_single_for_device(up->port.dev, dbuf->dma_addr, 430 dma_sync_single_for_device(up->port.dev, dbuf->dma_addr,
diff --git a/drivers/tty/serial/mrst_max3110.c b/drivers/tty/serial/mrst_max3110.c
index 776431ff0190..3b8df7b93b73 100644
--- a/drivers/tty/serial/mrst_max3110.c
+++ b/drivers/tty/serial/mrst_max3110.c
@@ -374,7 +374,7 @@ receive_chars(struct uart_max3110 *max, unsigned short *str, int len)
374 for (r = 0; w; r += usable, w -= usable) { 374 for (r = 0; w; r += usable, w -= usable) {
375 usable = tty_buffer_request_room(tport, w); 375 usable = tty_buffer_request_room(tport, w);
376 if (usable) { 376 if (usable) {
377 tty_insert_flip_string(tty, buf + r, usable); 377 tty_insert_flip_string(tport, buf + r, usable);
378 port->icount.rx += usable; 378 port->icount.rx += usable;
379 } 379 }
380 } 380 }
diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index e4eb81a12793..cb787c0e279a 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -133,7 +133,7 @@ static void handle_rx_dm(struct uart_port *port, unsigned int misr)
133 port->icount.frame++; 133 port->icount.frame++;
134 134
135 /* TODO: handle sysrq */ 135 /* TODO: handle sysrq */
136 tty_insert_flip_string(tty, (char *) &c, 136 tty_insert_flip_string(tport, (char *)&c,
137 (count > 4) ? 4 : count); 137 (count > 4) ? 4 : count);
138 count -= 4; 138 count -= 4;
139 } 139 }
diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c
index 6aa9d470ef54..11b7f5b2eb5f 100644
--- a/drivers/tty/serial/msm_serial_hs.c
+++ b/drivers/tty/serial/msm_serial_hs.c
@@ -961,7 +961,7 @@ static void msm_hs_dmov_rx_callback(struct msm_dmov_cmd *cmd_ptr,
961 rx_count = msm_hs_read(uport, UARTDM_RX_TOTAL_SNAP_ADDR); 961 rx_count = msm_hs_read(uport, UARTDM_RX_TOTAL_SNAP_ADDR);
962 962
963 if (0 != (uport->read_status_mask & CREAD)) { 963 if (0 != (uport->read_status_mask & CREAD)) {
964 retval = tty_insert_flip_string(tty, msm_uport->rx.buffer, 964 retval = tty_insert_flip_string(port, msm_uport->rx.buffer,
965 rx_count); 965 rx_count);
966 BUG_ON(retval != rx_count); 966 BUG_ON(retval != rx_count);
967 } 967 }
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index fa31bc38b105..37a0046ef531 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -457,7 +457,8 @@ static int mxs_auart_dma_prep_rx(struct mxs_auart_port *s);
457static void dma_rx_callback(void *arg) 457static void dma_rx_callback(void *arg)
458{ 458{
459 struct mxs_auart_port *s = (struct mxs_auart_port *) arg; 459 struct mxs_auart_port *s = (struct mxs_auart_port *) arg;
460 struct tty_struct *tty = s->port.state->port.tty; 460 struct tty_port *port = &s->port.state->port;
461 struct tty_struct *tty = port->tty;
461 int count; 462 int count;
462 u32 stat; 463 u32 stat;
463 464
@@ -468,7 +469,7 @@ static void dma_rx_callback(void *arg)
468 AUART_STAT_PERR | AUART_STAT_FERR); 469 AUART_STAT_PERR | AUART_STAT_FERR);
469 470
470 count = stat & AUART_STAT_RXCOUNT_MASK; 471 count = stat & AUART_STAT_RXCOUNT_MASK;
471 tty_insert_flip_string(tty, s->rx_dma_buf, count); 472 tty_insert_flip_string(port, s->rx_dma_buf, count);
472 473
473 writel(stat, s->port.membase + AUART_STAT); 474 writel(stat, s->port.membase + AUART_STAT);
474 tty_flip_buffer_push(tty); 475 tty_flip_buffer_push(tty);
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
index 4f1774be2a8c..967f1cb311f3 100644
--- a/drivers/tty/serial/pch_uart.c
+++ b/drivers/tty/serial/pch_uart.c
@@ -591,17 +591,17 @@ static void pch_uart_hal_set_break(struct eg20t_port *priv, int on)
591static int push_rx(struct eg20t_port *priv, const unsigned char *buf, 591static int push_rx(struct eg20t_port *priv, const unsigned char *buf,
592 int size) 592 int size)
593{ 593{
594 struct uart_port *port; 594 struct uart_port *port = &priv->port;
595 struct tty_port *tport = &port->state->port;
595 struct tty_struct *tty; 596 struct tty_struct *tty;
596 597
597 port = &priv->port; 598 tty = tty_port_tty_get(tport);
598 tty = tty_port_tty_get(&port->state->port);
599 if (!tty) { 599 if (!tty) {
600 dev_dbg(priv->port.dev, "%s:tty is busy now", __func__); 600 dev_dbg(priv->port.dev, "%s:tty is busy now", __func__);
601 return -EBUSY; 601 return -EBUSY;
602 } 602 }
603 603
604 tty_insert_flip_string(tty, buf, size); 604 tty_insert_flip_string(tport, buf, size);
605 tty_flip_buffer_push(tty); 605 tty_flip_buffer_push(tty);
606 tty_kref_put(tty); 606 tty_kref_put(tty);
607 607
@@ -646,7 +646,7 @@ static int dma_push_rx(struct eg20t_port *priv, int size)
646 if (!room) 646 if (!room)
647 return room; 647 return room;
648 648
649 tty_insert_flip_string(tty, sg_virt(&priv->sg_rx), size); 649 tty_insert_flip_string(tport, sg_virt(&priv->sg_rx), size);
650 650
651 port->icount.rx += room; 651 port->icount.rx += room;
652 tty_kref_put(tty); 652 tty_kref_put(tty);
diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c
index bbb102e3c035..defe92b19e16 100644
--- a/drivers/tty/serial/sunhv.c
+++ b/drivers/tty/serial/sunhv.c
@@ -72,7 +72,7 @@ static void transmit_chars_write(struct uart_port *port, struct circ_buf *xmit)
72 } 72 }
73} 73}
74 74
75static int receive_chars_getchar(struct uart_port *port, struct tty_struct *tty) 75static int receive_chars_getchar(struct uart_port *port)
76{ 76{
77 int saw_console_brk = 0; 77 int saw_console_brk = 0;
78 int limit = 10000; 78 int limit = 10000;
@@ -115,7 +115,7 @@ static int receive_chars_getchar(struct uart_port *port, struct tty_struct *tty)
115 return saw_console_brk; 115 return saw_console_brk;
116} 116}
117 117
118static int receive_chars_read(struct uart_port *port, struct tty_struct *tty) 118static int receive_chars_read(struct uart_port *port)
119{ 119{
120 int saw_console_brk = 0; 120 int saw_console_brk = 0;
121 int limit = 10000; 121 int limit = 10000;
@@ -152,12 +152,13 @@ static int receive_chars_read(struct uart_port *port, struct tty_struct *tty)
152 for (i = 0; i < bytes_read; i++) 152 for (i = 0; i < bytes_read; i++)
153 uart_handle_sysrq_char(port, con_read_page[i]); 153 uart_handle_sysrq_char(port, con_read_page[i]);
154 154
155 if (tty == NULL) 155 if (port->state == NULL)
156 continue; 156 continue;
157 157
158 port->icount.rx += bytes_read; 158 port->icount.rx += bytes_read;
159 159
160 tty_insert_flip_string(tty, con_read_page, bytes_read); 160 tty_insert_flip_string(&port->state->port, con_read_page,
161 bytes_read);
161 } 162 }
162 163
163 return saw_console_brk; 164 return saw_console_brk;
@@ -165,7 +166,7 @@ static int receive_chars_read(struct uart_port *port, struct tty_struct *tty)
165 166
166struct sunhv_ops { 167struct sunhv_ops {
167 void (*transmit_chars)(struct uart_port *port, struct circ_buf *xmit); 168 void (*transmit_chars)(struct uart_port *port, struct circ_buf *xmit);
168 int (*receive_chars)(struct uart_port *port, struct tty_struct *tty); 169 int (*receive_chars)(struct uart_port *port);
169}; 170};
170 171
171static struct sunhv_ops bychar_ops = { 172static struct sunhv_ops bychar_ops = {
@@ -187,7 +188,7 @@ static struct tty_struct *receive_chars(struct uart_port *port)
187 if (port->state != NULL) /* Unopened serial console */ 188 if (port->state != NULL) /* Unopened serial console */
188 tty = port->state->port.tty; 189 tty = port->state->port.tty;
189 190
190 if (sunhv_ops->receive_chars(port, tty)) 191 if (sunhv_ops->receive_chars(port))
191 sun_do_break(); 192 sun_do_break();
192 193
193 return tty; 194 return tty;