diff --git a/drivers/staging/dgrp/dgrp_net_ops.c b/drivers/staging/dgrp/dgrp_net_ops.c index c0aeaaa094f1a2bc1d2c175a11e55e00c696e5a4..df3ebcdf7ed8f5dee93254bd61e56398d7f30286 100644 --- a/drivers/staging/dgrp/dgrp_net_ops.c +++ b/drivers/staging/dgrp/dgrp_net_ops.c @@ -232,7 +232,7 @@ static void dgrp_input(struct ch_struct *ch) (nd->nd_dpa_port == PORT_NUM(MINOR(tty_devnum(tty))))) dgrp_dpa_data(nd, 1, myflipbuf, len); - tty_insert_flip_string_flags(tty, myflipbuf, + tty_insert_flip_string_flags(&ch->port, myflipbuf, myflipflagbuf, len); tty_flip_buffer_push(tty); diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c index 61ee29083b268ece51870b1c80c60035acd4fa55..85dbdc1eccecf20e62296302eacbe308cac7626f 100644 --- a/drivers/staging/fwserial/fwserial.c +++ b/drivers/staging/fwserial/fwserial.c @@ -507,7 +507,8 @@ static void fwtty_emit_breaks(struct work_struct *work) while (n) { t = min(n, 16); - c = tty_insert_flip_string_fixed_flag(tty, buf, TTY_BREAK, t); + c = tty_insert_flip_string_fixed_flag(&port->port, buf, + TTY_BREAK, t); n -= c; brk += c; if (c < t) @@ -535,7 +536,7 @@ static void fwtty_pushrx(struct work_struct *work) spin_lock_bh(&port->lock); list_for_each_entry_safe(buf, next, &port->buf_list, list) { - n = tty_insert_flip_string_fixed_flag(tty, buf->data, + n = tty_insert_flip_string_fixed_flag(&port->port, buf->data, TTY_NORMAL, buf->n); c += n; port->buffered -= n; @@ -630,7 +631,8 @@ static int fwtty_rx(struct fwtty_port *port, unsigned char *data, size_t len) } if (!test_bit(BUFFERING_RX, &port->flags)) { - c = tty_insert_flip_string_fixed_flag(tty, data, TTY_NORMAL, n); + c = tty_insert_flip_string_fixed_flag(&port->port, data, + TTY_NORMAL, n); if (c > 0) tty_flip_buffer_push(tty); n -= c; diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c index b85acc74eb0db89adef9b94f5cb37de200689cc5..0b7573dbf439d285743d0475f5c6a8f7b003a676 100644 --- a/drivers/tty/cyclades.c +++ b/drivers/tty/cyclades.c @@ -968,7 +968,7 @@ static void cyz_handle_rx(struct cyclades_port *info, struct tty_struct *tty) for performance, but because of buffer boundaries, there may be several steps to the operation */ while (1) { - len = tty_prepare_flip_string(tty, &buf, + len = tty_prepare_flip_string(port, &buf, char_count); if (!len) break; diff --git a/drivers/tty/isicom.c b/drivers/tty/isicom.c index 3205b2e9090bd23cee149a73137c0c50f6042240..e9fc15f00f4820eadf2935c5038e3072bd5070bf 100644 --- a/drivers/tty/isicom.c +++ b/drivers/tty/isicom.c @@ -650,8 +650,8 @@ static irqreturn_t isicom_interrupt(int irq, void *dev_id) break; } } else { /* Data Packet */ - - count = tty_prepare_flip_string(tty, &rp, byte_count & ~1); + count = tty_prepare_flip_string(&port->port, &rp, + byte_count & ~1); pr_debug("%s: Can rx %d of %d bytes.\n", __func__, count, byte_count); word_count = count >> 1; diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index f9d28503bdec1928e01f91198187931b6fdc4734..fcaac4870d5f77e29a65094dca188048eb538770 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -1966,7 +1966,7 @@ static int MoxaPortReadData(struct moxa_port *port) ofs = baseAddr + DynPage_addr + bufhead + head; len = (tail >= head) ? (tail - head) : (rx_mask + 1 - head); - len = tty_prepare_flip_string(tty, &dst, + len = tty_prepare_flip_string(&port->port, &dst, min(len, count)); memcpy_fromio(dst, ofs, len); head = (head + len) & rx_mask; @@ -1978,7 +1978,7 @@ static int MoxaPortReadData(struct moxa_port *port) while (count > 0) { writew(pageno, baseAddr + Control_reg); ofs = baseAddr + DynPage_addr + pageofs; - len = tty_prepare_flip_string(tty, &dst, + len = tty_prepare_flip_string(&port->port, &dst, min(Page_size - pageofs, count)); memcpy_fromio(dst, ofs, len); diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c index e42009a0052902f576196ffd5e427dce0c945733..77d7bc94afaa777280692b8048c4901f17bf79a9 100644 --- a/drivers/tty/rocket.c +++ b/drivers/tty/rocket.c @@ -399,7 +399,7 @@ static void rp_do_receive(struct r_port *info, * characters at time by doing repeated word IO * transfer. */ - space = tty_prepare_flip_string(tty, &cbuf, ToRecv); + space = tty_prepare_flip_string(&info->port, &cbuf, ToRecv); if (space < ToRecv) { #ifdef ROCKET_DEBUG_RECEIVE printk(KERN_INFO "rp_do_receive:insufficient space ToRecv=%d space=%d\n", ToRecv, space); diff --git a/drivers/tty/serial/msm_smd_tty.c b/drivers/tty/serial/msm_smd_tty.c index 925d1fa153db328a3d75a45583cfe6415a11f0af..b43b4ec3926907010b01e03b40e49897fb5e26b0 100644 --- a/drivers/tty/serial/msm_smd_tty.c +++ b/drivers/tty/serial/msm_smd_tty.c @@ -70,7 +70,7 @@ static void smd_tty_notify(void *priv, unsigned event) if (avail == 0) break; - avail = tty_prepare_flip_string(tty, &ptr, avail); + avail = tty_prepare_flip_string(&info->port, &ptr, avail); if (smd_read(info->ch, ptr, avail) != avail) { /* shouldn't be possible since we're in interrupt diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c index f897332fb4eec124bf28f3e6a81ab4d6a360d271..31873e42602a98ba29cf2b98708ce3080337bc53 100644 --- a/drivers/tty/tty_buffer.c +++ b/drivers/tty/tty_buffer.c @@ -257,7 +257,7 @@ EXPORT_SYMBOL_GPL(tty_buffer_request_room); /** * tty_insert_flip_string_fixed_flag - Add characters to the tty buffer - * @tty: tty structure + * @port: tty port * @chars: characters * @flag: flag value for each character * @size: size @@ -268,10 +268,10 @@ EXPORT_SYMBOL_GPL(tty_buffer_request_room); * Locking: Called functions may take port->buf.lock */ -int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, +int tty_insert_flip_string_fixed_flag(struct tty_port *port, const unsigned char *chars, char flag, size_t size) { - struct tty_bufhead *buf = &tty->port->buf; + struct tty_bufhead *buf = &port->buf; int copied = 0; do { int goal = min_t(size_t, size - copied, TTY_BUFFER_PAGE); @@ -280,7 +280,7 @@ int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, struct tty_buffer *tb; spin_lock_irqsave(&buf->lock, flags); - space = __tty_buffer_request_room(tty->port, goal); + space = __tty_buffer_request_room(port, goal); tb = buf->tail; /* If there is no space then tb may be NULL */ if (unlikely(space == 0)) { @@ -302,7 +302,7 @@ EXPORT_SYMBOL(tty_insert_flip_string_fixed_flag); /** * tty_insert_flip_string_flags - Add characters to the tty buffer - * @tty: tty structure + * @port: tty port * @chars: characters * @flags: flag bytes * @size: size @@ -314,10 +314,10 @@ EXPORT_SYMBOL(tty_insert_flip_string_fixed_flag); * Locking: Called functions may take port->buf.lock */ -int tty_insert_flip_string_flags(struct tty_struct *tty, +int tty_insert_flip_string_flags(struct tty_port *port, const unsigned char *chars, const char *flags, size_t size) { - struct tty_bufhead *buf = &tty->port->buf; + struct tty_bufhead *buf = &port->buf; int copied = 0; do { int goal = min_t(size_t, size - copied, TTY_BUFFER_PAGE); @@ -326,7 +326,7 @@ int tty_insert_flip_string_flags(struct tty_struct *tty, struct tty_buffer *tb; spin_lock_irqsave(&buf->lock, __flags); - space = __tty_buffer_request_room(tty->port, goal); + space = __tty_buffer_request_room(port, goal); tb = buf->tail; /* If there is no space then tb may be NULL */ if (unlikely(space == 0)) { @@ -376,7 +376,7 @@ EXPORT_SYMBOL(tty_schedule_flip); /** * tty_prepare_flip_string - make room for characters - * @tty: tty + * @port: tty port * @chars: return pointer for character write area * @size: desired size * @@ -389,16 +389,16 @@ EXPORT_SYMBOL(tty_schedule_flip); * Locking: May call functions taking port->buf.lock */ -int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, +int tty_prepare_flip_string(struct tty_port *port, unsigned char **chars, size_t size) { - struct tty_bufhead *buf = &tty->port->buf; + struct tty_bufhead *buf = &port->buf; int space; unsigned long flags; struct tty_buffer *tb; spin_lock_irqsave(&buf->lock, flags); - space = __tty_buffer_request_room(tty->port, size); + space = __tty_buffer_request_room(port, size); tb = buf->tail; if (likely(space)) { @@ -413,7 +413,7 @@ EXPORT_SYMBOL_GPL(tty_prepare_flip_string); /** * tty_prepare_flip_string_flags - make room for characters - * @tty: tty + * @port: tty port * @chars: return pointer for character write area * @flags: return pointer for status flag write area * @size: desired size @@ -427,16 +427,16 @@ EXPORT_SYMBOL_GPL(tty_prepare_flip_string); * Locking: May call functions taking port->buf.lock */ -int tty_prepare_flip_string_flags(struct tty_struct *tty, +int tty_prepare_flip_string_flags(struct tty_port *port, unsigned char **chars, char **flags, size_t size) { - struct tty_bufhead *buf = &tty->port->buf; + struct tty_bufhead *buf = &port->buf; int space; unsigned long __flags; struct tty_buffer *tb; spin_lock_irqsave(&buf->lock, __flags); - space = __tty_buffer_request_room(tty->port, size); + space = __tty_buffer_request_room(port, size); tb = buf->tail; if (likely(space)) { diff --git a/drivers/usb/serial/ark3116.c b/drivers/usb/serial/ark3116.c index a88882c0e2376283a015d38732096472a50fb5f7..e2d653d00ea245ceaece973c958fe5c1a5c3908d 100644 --- a/drivers/usb/serial/ark3116.c +++ b/drivers/usb/serial/ark3116.c @@ -705,7 +705,7 @@ static void ark3116_process_read_urb(struct urb *urb) if (lsr & UART_LSR_OE) tty_insert_flip_char(tty, 0, TTY_OVERRUN); } - tty_insert_flip_string_fixed_flag(tty, data, tty_flag, + tty_insert_flip_string_fixed_flag(&port->port, data, tty_flag, urb->actual_length); tty_flip_buffer_push(tty); tty_kref_put(tty); diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c index b72a4c1667055b7881f9ec8513006f36029628cb..a213d1be94620c8c133349e4b91d903f988c0bff 100644 --- a/drivers/usb/serial/belkin_sa.c +++ b/drivers/usb/serial/belkin_sa.c @@ -279,7 +279,7 @@ static void belkin_sa_process_read_urb(struct urb *urb) tty_insert_flip_char(tty, 0, TTY_OVERRUN); } - tty_insert_flip_string_fixed_flag(tty, data, tty_flag, + tty_insert_flip_string_fixed_flag(&port->port, data, tty_flag, urb->actual_length); tty_flip_buffer_push(tty); tty_kref_put(tty); diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c index fd8c35fd452e168b1fc6a948c9d5819e1625a386..ac14e3eb95ea1a29b61d39286d3f041694a6fede 100644 --- a/drivers/usb/serial/cypress_m8.c +++ b/drivers/usb/serial/cypress_m8.c @@ -1215,7 +1215,7 @@ static void cypress_read_int_callback(struct urb *urb) /* process read if there is data other than line status */ if (tty && bytes > i) { - tty_insert_flip_string_fixed_flag(tty, data + i, + tty_insert_flip_string_fixed_flag(&port->port, data + i, tty_flag, bytes - i); tty_flip_buffer_push(tty); } diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c index 45d4af62967ff239fa2894d52318c75ada2a4f83..efbc4035410c63fce87d572dbcea18c8990ba30b 100644 --- a/drivers/usb/serial/digi_acceleport.c +++ b/drivers/usb/serial/digi_acceleport.c @@ -1455,8 +1455,8 @@ static int digi_read_inb_callback(struct urb *urb) /* data length is len-1 (one byte of len is port_status) */ --len; if (len > 0) { - tty_insert_flip_string_fixed_flag(tty, data, flag, - len); + tty_insert_flip_string_fixed_flag(&port->port, data, + flag, len); tty_flip_buffer_push(tty); } } diff --git a/drivers/usb/serial/f81232.c b/drivers/usb/serial/f81232.c index 6e4eb57d0177406c5eb8f9d30c83f0551dd159f7..a8c6430bf1b329e3de5b8394589db16665253d42 100644 --- a/drivers/usb/serial/f81232.c +++ b/drivers/usb/serial/f81232.c @@ -140,7 +140,7 @@ static void f81232_process_read_urb(struct urb *urb) if (!usb_serial_handle_sysrq_char(port, data[i])) tty_insert_flip_char(tty, data[i], tty_flag); } else { - tty_insert_flip_string_fixed_flag(tty, data, tty_flag, + tty_insert_flip_string_fixed_flag(&port->port, data, tty_flag, urb->actual_length); } diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 0a373b3ae96a77c5f43afbc316c5faaba82e0609..0416d952a448490e8eb150b1ca12eacc89406de1 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -2032,7 +2032,7 @@ static int ftdi_process_packet(struct tty_struct *tty, tty_insert_flip_char(tty, *ch, flag); } } else { - tty_insert_flip_string_fixed_flag(tty, ch, flag, len); + tty_insert_flip_string_fixed_flag(&port->port, ch, flag, len); } return len; diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 600241901361e62458d0d002e22261e1e5c0bc5f..86789b0477c5407c24e940de2f498115e6db8d87 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -812,7 +812,7 @@ static void pl2303_process_read_urb(struct urb *urb) if (!usb_serial_handle_sysrq_char(port, data[i])) tty_insert_flip_char(tty, data[i], tty_flag); } else { - tty_insert_flip_string_fixed_flag(tty, data, tty_flag, + tty_insert_flip_string_fixed_flag(&port->port, data, tty_flag, urb->actual_length); } diff --git a/drivers/usb/serial/spcp8x5.c b/drivers/usb/serial/spcp8x5.c index a42536af1256afd47352e3ee2de2165ff4312232..fa42f1b907d0100d9339a9d417bda40e4ca6bdfa 100644 --- a/drivers/usb/serial/spcp8x5.c +++ b/drivers/usb/serial/spcp8x5.c @@ -505,7 +505,7 @@ static void spcp8x5_process_read_urb(struct urb *urb) priv->line_status & MSR_STATUS_LINE_DCD); } - tty_insert_flip_string_fixed_flag(tty, data, tty_flag, + tty_insert_flip_string_fixed_flag(&port->port, data, tty_flag, urb->actual_length); tty_flip_buffer_push(tty); tty_kref_put(tty); diff --git a/drivers/usb/serial/ssu100.c b/drivers/usb/serial/ssu100.c index 4543ea35022939976886dc576b7e6c1f2d37584c..37476c6240c2fca84bc1d31a21851f5058d2e2c8 100644 --- a/drivers/usb/serial/ssu100.c +++ b/drivers/usb/serial/ssu100.c @@ -617,7 +617,7 @@ static int ssu100_process_packet(struct urb *urb, tty_insert_flip_char(tty, *ch, flag); } } else - tty_insert_flip_string_fixed_flag(tty, ch, flag, len); + tty_insert_flip_string_fixed_flag(&port->port, ch, flag, len); return len; } diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h index 78207ca8fab1e9058a94c84bbc501c9a2d8026d4..743f1d076467307a2e7d5aca1212ab60fef8278f 100644 --- a/include/linux/tty_flip.h +++ b/include/linux/tty_flip.h @@ -2,10 +2,14 @@ #define _LINUX_TTY_FLIP_H extern int tty_buffer_request_room(struct tty_port *port, size_t size); -extern int tty_insert_flip_string_flags(struct tty_struct *tty, const unsigned char *chars, const char *flags, size_t size); -extern int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, const unsigned char *chars, char flag, size_t size); -extern int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size); -extern int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size); +extern int tty_insert_flip_string_flags(struct tty_port *port, + const unsigned char *chars, const char *flags, size_t size); +extern int tty_insert_flip_string_fixed_flag(struct tty_port *port, + const unsigned char *chars, char flag, size_t size); +extern int tty_prepare_flip_string(struct tty_port *port, + unsigned char **chars, size_t size); +extern int tty_prepare_flip_string_flags(struct tty_port *port, + unsigned char **chars, char **flags, size_t size); void tty_schedule_flip(struct tty_struct *tty); static inline int tty_insert_flip_char(struct tty_struct *tty, @@ -17,12 +21,12 @@ static inline int tty_insert_flip_char(struct tty_struct *tty, tb->char_buf_ptr[tb->used++] = ch; return 1; } - return tty_insert_flip_string_flags(tty, &ch, &flag, 1); + return tty_insert_flip_string_flags(tty->port, &ch, &flag, 1); } static inline int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, size_t size) { - return tty_insert_flip_string_fixed_flag(tty, chars, TTY_NORMAL, size); + return tty_insert_flip_string_fixed_flag(tty->port, chars, TTY_NORMAL, size); } #endif /* _LINUX_TTY_FLIP_H */