Lines Matching refs:serial
63 struct usb_serial *serial; in usb_serial_port_get_by_minor() local
71 serial = port->serial; in usb_serial_port_get_by_minor()
72 mutex_lock(&serial->disc_mutex); in usb_serial_port_get_by_minor()
73 if (serial->disconnected) { in usb_serial_port_get_by_minor()
74 mutex_unlock(&serial->disc_mutex); in usb_serial_port_get_by_minor()
77 kref_get(&serial->kref); in usb_serial_port_get_by_minor()
84 static int allocate_minors(struct usb_serial *serial, int num_ports) in allocate_minors() argument
90 dev_dbg(&serial->interface->dev, "%s %d\n", __func__, num_ports); in allocate_minors()
94 port = serial->port[i]; in allocate_minors()
102 serial->minors_reserved = 1; in allocate_minors()
108 idr_remove(&serial_minors, serial->port[j]->minor); in allocate_minors()
113 static void release_minors(struct usb_serial *serial) in release_minors() argument
118 for (i = 0; i < serial->num_ports; ++i) in release_minors()
119 idr_remove(&serial_minors, serial->port[i]->minor); in release_minors()
121 serial->minors_reserved = 0; in release_minors()
124 int usb_serial_claim_interface(struct usb_serial *serial, struct usb_interface *intf) in usb_serial_claim_interface() argument
126 struct usb_driver *driver = serial->type->usb_driver; in usb_serial_claim_interface()
129 if (serial->sibling) in usb_serial_claim_interface()
132 ret = usb_driver_claim_interface(driver, intf, serial); in usb_serial_claim_interface()
134 dev_err(&serial->interface->dev, in usb_serial_claim_interface()
139 serial->sibling = intf; in usb_serial_claim_interface()
145 static void release_sibling(struct usb_serial *serial, struct usb_interface *intf) in release_sibling() argument
147 struct usb_driver *driver = serial->type->usb_driver; in release_sibling()
150 if (!serial->sibling) in release_sibling()
153 if (intf == serial->sibling) in release_sibling()
154 sibling = serial->interface; in release_sibling()
156 sibling = serial->sibling; in release_sibling()
164 struct usb_serial *serial; in destroy_serial() local
168 serial = to_usb_serial(kref); in destroy_serial()
171 if (serial->minors_reserved) in destroy_serial()
172 release_minors(serial); in destroy_serial()
174 if (serial->attached && serial->type->release) in destroy_serial()
175 serial->type->release(serial); in destroy_serial()
178 for (i = 0; i < serial->num_port_pointers; ++i) { in destroy_serial()
179 port = serial->port[i]; in destroy_serial()
181 port->serial = NULL; in destroy_serial()
186 usb_put_intf(serial->interface); in destroy_serial()
187 usb_put_dev(serial->dev); in destroy_serial()
188 kfree(serial); in destroy_serial()
191 void usb_serial_put(struct usb_serial *serial) in usb_serial_put() argument
193 kref_put(&serial->kref, destroy_serial); in usb_serial_put()
217 struct usb_serial *serial; in serial_install() local
226 serial = port->serial; in serial_install()
227 if (!try_module_get(serial->type->driver.owner)) in serial_install()
236 mutex_unlock(&serial->disc_mutex); in serial_install()
239 if (init_termios && serial->type->init_termios) in serial_install()
240 serial->type->init_termios(tty); in serial_install()
247 module_put(serial->type->driver.owner); in serial_install()
249 usb_serial_put(serial); in serial_install()
250 mutex_unlock(&serial->disc_mutex); in serial_install()
258 struct usb_serial *serial = port->serial; in serial_port_activate() local
261 mutex_lock(&serial->disc_mutex); in serial_port_activate()
262 if (serial->disconnected) { in serial_port_activate()
267 retval = usb_autopm_get_interface(serial->interface); in serial_port_activate()
271 retval = port->serial->type->open(tty, port); in serial_port_activate()
273 usb_autopm_put_interface(serial->interface); in serial_port_activate()
275 mutex_unlock(&serial->disc_mutex); in serial_port_activate()
306 struct usb_serial_driver *drv = port->serial->type; in serial_port_shutdown()
311 usb_autopm_put_interface(port->serial->interface); in serial_port_shutdown()
344 struct usb_serial *serial; in serial_cleanup() local
357 serial = port->serial; in serial_cleanup()
358 owner = serial->type->driver.owner; in serial_cleanup()
360 usb_serial_put(serial); in serial_cleanup()
370 if (port->serial->dev->state == USB_STATE_NOTATTACHED) in serial_write()
375 retval = port->serial->type->write(tty, port, buf, count); in serial_write()
388 return port->serial->type->write_room(tty); in serial_write_room()
394 struct usb_serial *serial = port->serial; in serial_chars_in_buffer() local
398 if (serial->disconnected) in serial_chars_in_buffer()
401 return serial->type->chars_in_buffer(tty); in serial_chars_in_buffer()
407 struct usb_serial *serial = port->serial; in serial_wait_until_sent() local
411 if (!port->serial->type->wait_until_sent) in serial_wait_until_sent()
414 mutex_lock(&serial->disc_mutex); in serial_wait_until_sent()
415 if (!serial->disconnected) in serial_wait_until_sent()
416 port->serial->type->wait_until_sent(tty, timeout); in serial_wait_until_sent()
417 mutex_unlock(&serial->disc_mutex); in serial_wait_until_sent()
426 if (port->serial->type->throttle) in serial_throttle()
427 port->serial->type->throttle(tty); in serial_throttle()
436 if (port->serial->type->unthrottle) in serial_unthrottle()
437 port->serial->type->unthrottle(tty); in serial_unthrottle()
457 if (port->serial->type->get_serial) in serial_get_serial()
458 port->serial->type->get_serial(tty, ss); in serial_get_serial()
487 if (port->serial->type->set_serial) { in serial_set_serial()
488 ret = port->serial->type->set_serial(tty, ss); in serial_set_serial()
511 if (port->serial->type->tiocmiwait) in serial_ioctl()
512 retval = port->serial->type->tiocmiwait(tty, arg); in serial_ioctl()
515 if (port->serial->type->ioctl) in serial_ioctl()
516 retval = port->serial->type->ioctl(tty, cmd, arg); in serial_ioctl()
529 if (port->serial->type->set_termios) in serial_set_termios()
530 port->serial->type->set_termios(tty, port, old); in serial_set_termios()
541 if (port->serial->type->break_ctl) in serial_break()
542 port->serial->type->break_ctl(tty, break_state); in serial_break()
549 struct usb_serial *serial; in serial_proc_show() local
559 serial = port->serial; in serial_proc_show()
562 if (serial->type->driver.owner) in serial_proc_show()
564 module_name(serial->type->driver.owner)); in serial_proc_show()
566 serial->type->description); in serial_proc_show()
568 le16_to_cpu(serial->dev->descriptor.idVendor), in serial_proc_show()
569 le16_to_cpu(serial->dev->descriptor.idProduct)); in serial_proc_show()
570 seq_printf(m, " num_ports:%d", serial->num_ports); in serial_proc_show()
572 usb_make_path(serial->dev, tmp, sizeof(tmp)); in serial_proc_show()
576 usb_serial_put(serial); in serial_proc_show()
577 mutex_unlock(&serial->disc_mutex); in serial_proc_show()
588 if (port->serial->type->tiocmget) in serial_tiocmget()
589 return port->serial->type->tiocmget(tty); in serial_tiocmget()
600 if (port->serial->type->tiocmset) in serial_tiocmset()
601 return port->serial->type->tiocmset(tty, set, clear); in serial_tiocmset()
612 if (port->serial->type->get_icount) in serial_get_icount()
613 return port->serial->type->get_icount(tty, icount); in serial_get_icount()
690 struct usb_serial *serial; in create_serial() local
692 serial = kzalloc(sizeof(*serial), GFP_KERNEL); in create_serial()
693 if (!serial) in create_serial()
695 serial->dev = usb_get_dev(dev); in create_serial()
696 serial->type = driver; in create_serial()
697 serial->interface = usb_get_intf(interface); in create_serial()
698 kref_init(&serial->kref); in create_serial()
699 mutex_init(&serial->disc_mutex); in create_serial()
700 serial->minors_reserved = 0; in create_serial()
702 return serial; in create_serial()
760 struct usb_serial_driver *drv = p->serial->type; in serial_port_carrier_raised()
771 struct usb_serial_driver *drv = p->serial->type; in serial_port_dtr_rts()
799 static void store_endpoint(struct usb_serial *serial, in store_endpoint() argument
803 struct device *dev = &serial->interface->dev; in store_endpoint()
829 static void find_endpoints(struct usb_serial *serial, in find_endpoints() argument
840 store_endpoint(serial, epds, epd); in find_endpoints()
847 struct usb_serial_driver *type = port->serial->type; in setup_port_bulk_in()
848 struct usb_device *udev = port->serial->dev; in setup_port_bulk_in()
879 struct usb_serial_driver *type = port->serial->type; in setup_port_bulk_out()
880 struct usb_device *udev = port->serial->dev; in setup_port_bulk_out()
916 struct usb_serial_driver *type = port->serial->type; in setup_port_interrupt_in()
917 struct usb_device *udev = port->serial->dev; in setup_port_interrupt_in()
940 struct usb_serial_driver *type = port->serial->type; in setup_port_interrupt_out()
941 struct usb_device *udev = port->serial->dev; in setup_port_interrupt_out()
967 struct usb_serial *serial = NULL; in usb_serial_probe() local
991 serial = create_serial(dev, interface, type); in usb_serial_probe()
992 if (!serial) { in usb_serial_probe()
1002 retval = type->probe(serial, id); in usb_serial_probe()
1017 find_endpoints(serial, epds, interface); in usb_serial_probe()
1018 if (serial->sibling) in usb_serial_probe()
1019 find_endpoints(serial, epds, serial->sibling); in usb_serial_probe()
1031 retval = type->calc_num_ports(serial, epds); in usb_serial_probe()
1045 serial->num_ports = (unsigned char)num_ports; in usb_serial_probe()
1046 serial->num_bulk_in = epds->num_bulk_in; in usb_serial_probe()
1047 serial->num_bulk_out = epds->num_bulk_out; in usb_serial_probe()
1048 serial->num_interrupt_in = epds->num_interrupt_in; in usb_serial_probe()
1049 serial->num_interrupt_out = epds->num_interrupt_out; in usb_serial_probe()
1060 max_endpoints = max(max_endpoints, serial->num_ports); in usb_serial_probe()
1061 serial->num_port_pointers = max_endpoints; in usb_serial_probe()
1072 port->serial = serial; in usb_serial_probe()
1077 serial->port[i] = port; in usb_serial_probe()
1088 retval = setup_port_bulk_in(serial->port[i], epds->bulk_in[i]); in usb_serial_probe()
1094 retval = setup_port_bulk_out(serial->port[i], in usb_serial_probe()
1100 if (serial->type->read_int_callback) { in usb_serial_probe()
1102 retval = setup_port_interrupt_in(serial->port[i], in usb_serial_probe()
1111 if (serial->type->write_int_callback) { in usb_serial_probe()
1113 retval = setup_port_interrupt_out(serial->port[i], in usb_serial_probe()
1122 usb_set_intfdata(interface, serial); in usb_serial_probe()
1126 retval = type->attach(serial); in usb_serial_probe()
1129 serial->attached = 1; in usb_serial_probe()
1133 serial->num_ports = 0; in usb_serial_probe()
1137 serial->attached = 1; in usb_serial_probe()
1140 retval = allocate_minors(serial, num_ports); in usb_serial_probe()
1148 port = serial->port[i]; in usb_serial_probe()
1159 usb_serial_console_init(serial->port[0]->minor); in usb_serial_probe()
1168 release_sibling(serial, interface); in usb_serial_probe()
1169 usb_serial_put(serial); in usb_serial_probe()
1179 struct usb_serial *serial = usb_get_intfdata(interface); in usb_serial_disconnect() local
1185 if (!serial) in usb_serial_disconnect()
1188 usb_serial_console_disconnect(serial); in usb_serial_disconnect()
1190 mutex_lock(&serial->disc_mutex); in usb_serial_disconnect()
1192 serial->disconnected = 1; in usb_serial_disconnect()
1193 mutex_unlock(&serial->disc_mutex); in usb_serial_disconnect()
1195 for (i = 0; i < serial->num_ports; ++i) { in usb_serial_disconnect()
1196 port = serial->port[i]; in usb_serial_disconnect()
1208 if (serial->type->disconnect) in usb_serial_disconnect()
1209 serial->type->disconnect(serial); in usb_serial_disconnect()
1211 release_sibling(serial, interface); in usb_serial_disconnect()
1214 usb_serial_put(serial); in usb_serial_disconnect()
1220 struct usb_serial *serial = usb_get_intfdata(intf); in usb_serial_suspend() local
1224 if (serial->suspend_count++) in usb_serial_suspend()
1232 if (serial->type->suspend) { in usb_serial_suspend()
1233 r = serial->type->suspend(serial, message); in usb_serial_suspend()
1235 serial->suspend_count--; in usb_serial_suspend()
1240 for (i = 0; i < serial->num_ports; ++i) in usb_serial_suspend()
1241 usb_serial_port_poison_urbs(serial->port[i]); in usb_serial_suspend()
1247 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial) in usb_serial_unpoison_port_urbs() argument
1251 for (i = 0; i < serial->num_ports; ++i) in usb_serial_unpoison_port_urbs()
1252 usb_serial_port_unpoison_urbs(serial->port[i]); in usb_serial_unpoison_port_urbs()
1257 struct usb_serial *serial = usb_get_intfdata(intf); in usb_serial_resume() local
1261 if (--serial->suspend_count) in usb_serial_resume()
1264 usb_serial_unpoison_port_urbs(serial); in usb_serial_resume()
1266 if (serial->type->resume) in usb_serial_resume()
1267 rv = serial->type->resume(serial); in usb_serial_resume()
1269 rv = usb_serial_generic_resume(serial); in usb_serial_resume()
1277 struct usb_serial *serial = usb_get_intfdata(intf); in usb_serial_reset_resume() local
1281 if (--serial->suspend_count) in usb_serial_reset_resume()
1284 usb_serial_unpoison_port_urbs(serial); in usb_serial_reset_resume()
1286 if (serial->type->reset_resume) { in usb_serial_reset_resume()
1287 rv = serial->type->reset_resume(serial); in usb_serial_reset_resume()