aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial
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/serial
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/serial')
-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
15 files changed, 35 insertions, 29 deletions
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;