Lines Matching refs:port
106 int usb_serial_generic_open(struct tty_struct *tty, struct usb_serial_port *port)
110 clear_bit(USB_SERIAL_THROTTLED, &port->flags);
112 if (port->bulk_in_size)
113 result = usb_serial_generic_submit_read_urbs(port, GFP_KERNEL);
119 void usb_serial_generic_close(struct usb_serial_port *port)
124 if (port->bulk_out_size) {
125 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
126 usb_kill_urb(port->write_urbs[i]);
128 spin_lock_irqsave(&port->lock, flags);
129 kfifo_reset_out(&port->write_fifo);
130 spin_unlock_irqrestore(&port->lock, flags);
132 if (port->bulk_in_size) {
133 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
134 usb_kill_urb(port->read_urbs[i]);
139 int usb_serial_generic_prepare_write_buffer(struct usb_serial_port *port,
142 return kfifo_out_locked(&port->write_fifo, dest, size, &port->lock);
147 * @port: usb-serial port
154 int usb_serial_generic_write_start(struct usb_serial_port *port,
162 if (test_and_set_bit_lock(USB_SERIAL_WRITE_BUSY, &port->flags))
165 spin_lock_irqsave(&port->lock, flags);
166 if (!port->write_urbs_free || !kfifo_len(&port->write_fifo)) {
167 clear_bit_unlock(USB_SERIAL_WRITE_BUSY, &port->flags);
168 spin_unlock_irqrestore(&port->lock, flags);
171 i = (int)find_first_bit(&port->write_urbs_free,
172 ARRAY_SIZE(port->write_urbs));
173 spin_unlock_irqrestore(&port->lock, flags);
175 urb = port->write_urbs[i];
176 count = port->serial->type->prepare_write_buffer(port,
178 port->bulk_out_size);
180 usb_serial_debug_data(&port->dev, __func__, count, urb->transfer_buffer);
181 spin_lock_irqsave(&port->lock, flags);
182 port->tx_bytes += count;
183 spin_unlock_irqrestore(&port->lock, flags);
185 clear_bit(i, &port->write_urbs_free);
188 dev_err_console(port, "%s - error submitting urb: %d\n",
190 set_bit(i, &port->write_urbs_free);
191 spin_lock_irqsave(&port->lock, flags);
192 port->tx_bytes -= count;
193 spin_unlock_irqrestore(&port->lock, flags);
195 clear_bit_unlock(USB_SERIAL_WRITE_BUSY, &port->flags);
205 * @tty: tty for the port
206 * @port: usb-serial port
214 struct usb_serial_port *port, const unsigned char *buf, int count)
218 if (!port->bulk_out_size)
224 count = kfifo_in_locked(&port->write_fifo, buf, count, &port->lock);
225 result = usb_serial_generic_write_start(port, GFP_ATOMIC);
235 struct usb_serial_port *port = tty->driver_data;
239 if (!port->bulk_out_size)
242 spin_lock_irqsave(&port->lock, flags);
243 room = kfifo_avail(&port->write_fifo);
244 spin_unlock_irqrestore(&port->lock, flags);
246 dev_dbg(&port->dev, "%s - returns %d\n", __func__, room);
252 struct usb_serial_port *port = tty->driver_data;
256 if (!port->bulk_out_size)
259 spin_lock_irqsave(&port->lock, flags);
260 chars = kfifo_len(&port->write_fifo) + port->tx_bytes;
261 spin_unlock_irqrestore(&port->lock, flags);
263 dev_dbg(&port->dev, "%s - returns %d\n", __func__, chars);
270 struct usb_serial_port *port = tty->driver_data;
286 dev_dbg(&port->dev, "%s - timeout = %u ms, period = %u ms\n",
290 while (!port->serial->type->tx_empty(port)) {
300 static int usb_serial_generic_submit_read_urb(struct usb_serial_port *port,
305 if (!test_and_clear_bit(index, &port->read_urbs_free))
308 dev_dbg(&port->dev, "%s - urb %d\n", __func__, index);
310 res = usb_submit_urb(port->read_urbs[index], mem_flags);
313 dev_err(&port->dev,
317 set_bit(index, &port->read_urbs_free);
324 int usb_serial_generic_submit_read_urbs(struct usb_serial_port *port,
330 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
331 res = usb_serial_generic_submit_read_urb(port, i, mem_flags);
339 usb_kill_urb(port->read_urbs[i]);
347 struct usb_serial_port *port = urb->context;
358 if (port->sysrq) {
360 if (!usb_serial_handle_sysrq_char(port, *ch))
361 tty_insert_flip_char(&port->port, *ch, TTY_NORMAL);
364 tty_insert_flip_string(&port->port, ch, urb->actual_length);
366 tty_flip_buffer_push(&port->port);
372 struct usb_serial_port *port = urb->context;
378 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
379 if (urb == port->read_urbs[i])
383 dev_dbg(&port->dev, "%s - urb %d, len %d\n", __func__, i,
387 usb_serial_debug_data(&port->dev, __func__, urb->actual_length,
389 port->serial->type->process_read_urb(urb);
394 dev_dbg(&port->dev, "%s - urb stopped: %d\n",
399 dev_err(&port->dev, "%s - urb stopped: %d\n",
404 dev_dbg(&port->dev, "%s - nonzero urb status: %d\n",
416 set_bit(i, &port->read_urbs_free);
427 if (test_bit(USB_SERIAL_THROTTLED, &port->flags))
430 usb_serial_generic_submit_read_urb(port, i, GFP_ATOMIC);
437 struct usb_serial_port *port = urb->context;
441 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) {
442 if (port->write_urbs[i] == urb)
445 spin_lock_irqsave(&port->lock, flags);
446 port->tx_bytes -= urb->transfer_buffer_length;
447 set_bit(i, &port->write_urbs_free);
448 spin_unlock_irqrestore(&port->lock, flags);
456 dev_dbg(&port->dev, "%s - urb stopped: %d\n",
460 dev_err_console(port, "%s - urb stopped: %d\n",
464 dev_err_console(port, "%s - nonzero urb status: %d\n",
469 usb_serial_generic_write_start(port, GFP_ATOMIC);
470 usb_serial_port_softint(port);
476 struct usb_serial_port *port = tty->driver_data;
478 set_bit(USB_SERIAL_THROTTLED, &port->flags);
484 struct usb_serial_port *port = tty->driver_data;
486 clear_bit(USB_SERIAL_THROTTLED, &port->flags);
494 usb_serial_generic_submit_read_urbs(port, GFP_KERNEL);
501 struct usb_serial_port *port = tty->driver_data;
507 * Use tty-port initialised flag to detect all hangups including the
510 if (!tty_port_initialized(&port->port))
513 spin_lock_irqsave(&port->lock, flags);
514 cnow = port->icount; /* atomic copy*/
515 spin_unlock_irqrestore(&port->lock, flags);
529 struct usb_serial_port *port = tty->driver_data;
534 spin_lock_irqsave(&port->lock, flags);
535 cnow = port->icount; /* atomic copy */
536 spin_unlock_irqrestore(&port->lock, flags);
538 ret = wait_event_interruptible(port->port.delta_msr_wait,
540 if (!ret && !tty_port_initialized(&port->port))
550 struct usb_serial_port *port = tty->driver_data;
554 spin_lock_irqsave(&port->lock, flags);
555 cnow = port->icount; /* atomic copy */
556 spin_unlock_irqrestore(&port->lock, flags);
575 int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch)
577 if (port->sysrq) {
578 if (ch && time_before(jiffies, port->sysrq)) {
580 port->sysrq = 0;
583 port->sysrq = 0;
589 int usb_serial_handle_break(struct usb_serial_port *port)
591 if (!port->port.console)
594 if (!port->sysrq) {
595 port->sysrq = jiffies + HZ*5;
598 port->sysrq = 0;
606 * @port: usb-serial port
607 * @tty: tty for the port
610 void usb_serial_handle_dcd_change(struct usb_serial_port *port,
613 dev_dbg(&port->dev, "%s - status %d\n", __func__, status);
626 wake_up_interruptible(&port->port.open_wait);
634 struct usb_serial_port *port;
638 port = serial->port[i];
639 if (!tty_port_initialized(&port->port))
642 if (port->bulk_in_size) {
643 r = usb_serial_generic_submit_read_urbs(port,
649 if (port->bulk_out_size) {
650 r = usb_serial_generic_write_start(port, GFP_NOIO);