Lines Matching refs:port

106 int usb_serial_generic_open(struct tty_struct *tty, struct usb_serial_port *port)  in usb_serial_generic_open()  argument
111 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_open()
112 port->throttled = 0; in usb_serial_generic_open()
113 port->throttle_req = 0; in usb_serial_generic_open()
114 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_open()
116 if (port->bulk_in_size) in usb_serial_generic_open()
117 result = usb_serial_generic_submit_read_urbs(port, GFP_KERNEL); in usb_serial_generic_open()
123 void usb_serial_generic_close(struct usb_serial_port *port) in usb_serial_generic_close() argument
128 if (port->bulk_out_size) { in usb_serial_generic_close()
129 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) in usb_serial_generic_close()
130 usb_kill_urb(port->write_urbs[i]); in usb_serial_generic_close()
132 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_close()
133 kfifo_reset_out(&port->write_fifo); in usb_serial_generic_close()
134 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_close()
136 if (port->bulk_in_size) { in usb_serial_generic_close()
137 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) in usb_serial_generic_close()
138 usb_kill_urb(port->read_urbs[i]); in usb_serial_generic_close()
143 int usb_serial_generic_prepare_write_buffer(struct usb_serial_port *port, in usb_serial_generic_prepare_write_buffer() argument
146 return kfifo_out_locked(&port->write_fifo, dest, size, &port->lock); in usb_serial_generic_prepare_write_buffer()
158 int usb_serial_generic_write_start(struct usb_serial_port *port, in usb_serial_generic_write_start() argument
166 if (test_and_set_bit_lock(USB_SERIAL_WRITE_BUSY, &port->flags)) in usb_serial_generic_write_start()
169 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_write_start()
170 if (!port->write_urbs_free || !kfifo_len(&port->write_fifo)) { in usb_serial_generic_write_start()
171 clear_bit_unlock(USB_SERIAL_WRITE_BUSY, &port->flags); in usb_serial_generic_write_start()
172 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_start()
175 i = (int)find_first_bit(&port->write_urbs_free, in usb_serial_generic_write_start()
176 ARRAY_SIZE(port->write_urbs)); in usb_serial_generic_write_start()
177 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_start()
179 urb = port->write_urbs[i]; in usb_serial_generic_write_start()
180 count = port->serial->type->prepare_write_buffer(port, in usb_serial_generic_write_start()
182 port->bulk_out_size); in usb_serial_generic_write_start()
184 usb_serial_debug_data(&port->dev, __func__, count, urb->transfer_buffer); in usb_serial_generic_write_start()
185 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_write_start()
186 port->tx_bytes += count; in usb_serial_generic_write_start()
187 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_start()
189 clear_bit(i, &port->write_urbs_free); in usb_serial_generic_write_start()
192 dev_err_console(port, "%s - error submitting urb: %d\n", in usb_serial_generic_write_start()
194 set_bit(i, &port->write_urbs_free); in usb_serial_generic_write_start()
195 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_write_start()
196 port->tx_bytes -= count; in usb_serial_generic_write_start()
197 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_start()
199 clear_bit_unlock(USB_SERIAL_WRITE_BUSY, &port->flags); in usb_serial_generic_write_start()
218 struct usb_serial_port *port, const unsigned char *buf, int count) in usb_serial_generic_write() argument
222 if (!port->bulk_out_size) in usb_serial_generic_write()
228 count = kfifo_in_locked(&port->write_fifo, buf, count, &port->lock); in usb_serial_generic_write()
229 result = usb_serial_generic_write_start(port, GFP_ATOMIC); in usb_serial_generic_write()
239 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_write_room() local
243 if (!port->bulk_out_size) in usb_serial_generic_write_room()
246 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_write_room()
247 room = kfifo_avail(&port->write_fifo); in usb_serial_generic_write_room()
248 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_room()
250 dev_dbg(&port->dev, "%s - returns %d\n", __func__, room); in usb_serial_generic_write_room()
256 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_chars_in_buffer() local
260 if (!port->bulk_out_size) in usb_serial_generic_chars_in_buffer()
263 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_chars_in_buffer()
264 chars = kfifo_len(&port->write_fifo) + port->tx_bytes; in usb_serial_generic_chars_in_buffer()
265 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_chars_in_buffer()
267 dev_dbg(&port->dev, "%s - returns %d\n", __func__, chars); in usb_serial_generic_chars_in_buffer()
274 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_wait_until_sent() local
290 dev_dbg(&port->dev, "%s - timeout = %u ms, period = %u ms\n", in usb_serial_generic_wait_until_sent()
294 while (!port->serial->type->tx_empty(port)) { in usb_serial_generic_wait_until_sent()
304 static int usb_serial_generic_submit_read_urb(struct usb_serial_port *port, in usb_serial_generic_submit_read_urb() argument
309 if (!test_and_clear_bit(index, &port->read_urbs_free)) in usb_serial_generic_submit_read_urb()
312 dev_dbg(&port->dev, "%s - urb %d\n", __func__, index); in usb_serial_generic_submit_read_urb()
314 res = usb_submit_urb(port->read_urbs[index], mem_flags); in usb_serial_generic_submit_read_urb()
317 dev_err(&port->dev, in usb_serial_generic_submit_read_urb()
321 set_bit(index, &port->read_urbs_free); in usb_serial_generic_submit_read_urb()
328 int usb_serial_generic_submit_read_urbs(struct usb_serial_port *port, in usb_serial_generic_submit_read_urbs() argument
334 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) { in usb_serial_generic_submit_read_urbs()
335 res = usb_serial_generic_submit_read_urb(port, i, mem_flags); in usb_serial_generic_submit_read_urbs()
343 usb_kill_urb(port->read_urbs[i]); in usb_serial_generic_submit_read_urbs()
351 struct usb_serial_port *port = urb->context; in usb_serial_generic_process_read_urb() local
362 if (!port->port.console || !port->sysrq) { in usb_serial_generic_process_read_urb()
363 tty_insert_flip_string(&port->port, ch, urb->actual_length); in usb_serial_generic_process_read_urb()
366 if (!usb_serial_handle_sysrq_char(port, *ch)) in usb_serial_generic_process_read_urb()
367 tty_insert_flip_char(&port->port, *ch, TTY_NORMAL); in usb_serial_generic_process_read_urb()
370 tty_flip_buffer_push(&port->port); in usb_serial_generic_process_read_urb()
376 struct usb_serial_port *port = urb->context; in usb_serial_generic_read_bulk_callback() local
382 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) { in usb_serial_generic_read_bulk_callback()
383 if (urb == port->read_urbs[i]) in usb_serial_generic_read_bulk_callback()
386 set_bit(i, &port->read_urbs_free); in usb_serial_generic_read_bulk_callback()
388 dev_dbg(&port->dev, "%s - urb %d, len %d\n", __func__, i, in usb_serial_generic_read_bulk_callback()
396 dev_dbg(&port->dev, "%s - urb stopped: %d\n", in usb_serial_generic_read_bulk_callback()
400 dev_err(&port->dev, "%s - urb stopped: %d\n", in usb_serial_generic_read_bulk_callback()
404 dev_dbg(&port->dev, "%s - nonzero urb status: %d\n", in usb_serial_generic_read_bulk_callback()
409 usb_serial_debug_data(&port->dev, __func__, urb->actual_length, data); in usb_serial_generic_read_bulk_callback()
410 port->serial->type->process_read_urb(urb); in usb_serial_generic_read_bulk_callback()
414 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_read_bulk_callback()
415 port->throttled = port->throttle_req; in usb_serial_generic_read_bulk_callback()
416 if (!port->throttled) { in usb_serial_generic_read_bulk_callback()
417 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_read_bulk_callback()
418 usb_serial_generic_submit_read_urb(port, i, GFP_ATOMIC); in usb_serial_generic_read_bulk_callback()
420 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_read_bulk_callback()
428 struct usb_serial_port *port = urb->context; in usb_serial_generic_write_bulk_callback() local
432 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) { in usb_serial_generic_write_bulk_callback()
433 if (port->write_urbs[i] == urb) in usb_serial_generic_write_bulk_callback()
436 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_write_bulk_callback()
437 port->tx_bytes -= urb->transfer_buffer_length; in usb_serial_generic_write_bulk_callback()
438 set_bit(i, &port->write_urbs_free); in usb_serial_generic_write_bulk_callback()
439 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_write_bulk_callback()
447 dev_dbg(&port->dev, "%s - urb stopped: %d\n", in usb_serial_generic_write_bulk_callback()
451 dev_err_console(port, "%s - urb stopped: %d\n", in usb_serial_generic_write_bulk_callback()
455 dev_err_console(port, "%s - nonzero urb status: %d\n", in usb_serial_generic_write_bulk_callback()
461 usb_serial_generic_write_start(port, GFP_ATOMIC); in usb_serial_generic_write_bulk_callback()
462 usb_serial_port_softint(port); in usb_serial_generic_write_bulk_callback()
468 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_throttle() local
471 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_throttle()
472 port->throttle_req = 1; in usb_serial_generic_throttle()
473 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_throttle()
479 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_unthrottle() local
482 spin_lock_irq(&port->lock); in usb_serial_generic_unthrottle()
483 was_throttled = port->throttled; in usb_serial_generic_unthrottle()
484 port->throttled = port->throttle_req = 0; in usb_serial_generic_unthrottle()
485 spin_unlock_irq(&port->lock); in usb_serial_generic_unthrottle()
488 usb_serial_generic_submit_read_urbs(port, GFP_KERNEL); in usb_serial_generic_unthrottle()
495 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_msr_changed() local
504 if (!tty_port_initialized(&port->port)) in usb_serial_generic_msr_changed()
507 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_msr_changed()
508 cnow = port->icount; /* atomic copy*/ in usb_serial_generic_msr_changed()
509 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_msr_changed()
523 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_tiocmiwait() local
528 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_tiocmiwait()
529 cnow = port->icount; /* atomic copy */ in usb_serial_generic_tiocmiwait()
530 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_tiocmiwait()
532 ret = wait_event_interruptible(port->port.delta_msr_wait, in usb_serial_generic_tiocmiwait()
534 if (!ret && !tty_port_initialized(&port->port)) in usb_serial_generic_tiocmiwait()
544 struct usb_serial_port *port = tty->driver_data; in usb_serial_generic_get_icount() local
548 spin_lock_irqsave(&port->lock, flags); in usb_serial_generic_get_icount()
549 cnow = port->icount; /* atomic copy */ in usb_serial_generic_get_icount()
550 spin_unlock_irqrestore(&port->lock, flags); in usb_serial_generic_get_icount()
569 int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch) in usb_serial_handle_sysrq_char() argument
571 if (port->sysrq && port->port.console) { in usb_serial_handle_sysrq_char()
572 if (ch && time_before(jiffies, port->sysrq)) { in usb_serial_handle_sysrq_char()
574 port->sysrq = 0; in usb_serial_handle_sysrq_char()
577 port->sysrq = 0; in usb_serial_handle_sysrq_char()
582 int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch) in usb_serial_handle_sysrq_char() argument
589 int usb_serial_handle_break(struct usb_serial_port *port) in usb_serial_handle_break() argument
591 if (!port->sysrq) { in usb_serial_handle_break()
592 port->sysrq = jiffies + HZ*5; in usb_serial_handle_break()
595 port->sysrq = 0; in usb_serial_handle_break()
609 struct tty_port *port = &usb_port->port; in usb_serial_handle_dcd_change() local
624 wake_up_interruptible(&port->open_wait); in usb_serial_handle_dcd_change()
632 struct usb_serial_port *port; in usb_serial_generic_resume() local
636 port = serial->port[i]; in usb_serial_generic_resume()
637 if (!tty_port_initialized(&port->port)) in usb_serial_generic_resume()
640 if (port->bulk_in_size) { in usb_serial_generic_resume()
641 r = usb_serial_generic_submit_read_urbs(port, in usb_serial_generic_resume()
647 if (port->bulk_out_size) { in usb_serial_generic_resume()
648 r = usb_serial_generic_write_start(port, GFP_NOIO); in usb_serial_generic_resume()