Lines Matching refs:serial
13 * See Documentation/usb/usb-serial.rst for more information on using this
33 #include <linux/serial.h>
35 #include <linux/usb/serial.h>
46 the MODULE_DEVICE_TABLE declarations in each serial driver
48 via modprobe, and modprobe will load usbserial because the serial
57 * Look up the serial port structure. If it is found and it hasn't been
63 struct usb_serial *serial;
71 serial = port->serial;
72 mutex_lock(&serial->disc_mutex);
73 if (serial->disconnected) {
74 mutex_unlock(&serial->disc_mutex);
77 kref_get(&serial->kref);
84 static int allocate_minors(struct usb_serial *serial, int num_ports)
90 dev_dbg(&serial->interface->dev, "%s %d\n", __func__, num_ports);
94 port = serial->port[i];
102 serial->minors_reserved = 1;
108 idr_remove(&serial_minors, serial->port[j]->minor);
113 static void release_minors(struct usb_serial *serial)
118 for (i = 0; i < serial->num_ports; ++i)
119 idr_remove(&serial_minors, serial->port[i]->minor);
121 serial->minors_reserved = 0;
126 struct usb_serial *serial;
130 serial = to_usb_serial(kref);
133 if (serial->minors_reserved)
134 release_minors(serial);
136 if (serial->attached && serial->type->release)
137 serial->type->release(serial);
140 for (i = 0; i < serial->num_port_pointers; ++i) {
141 port = serial->port[i];
143 port->serial = NULL;
148 usb_put_intf(serial->interface);
149 usb_put_dev(serial->dev);
150 kfree(serial);
153 void usb_serial_put(struct usb_serial *serial)
155 kref_put(&serial->kref, destroy_serial);
168 * USB serial settings but permit them to be overridden by
169 * serial->type->init_termios on first open.
179 struct usb_serial *serial;
188 serial = port->serial;
189 if (!try_module_get(serial->type->driver.owner))
192 retval = usb_autopm_get_interface(serial->interface);
202 mutex_unlock(&serial->disc_mutex);
205 if (init_termios && serial->type->init_termios)
206 serial->type->init_termios(tty);
213 usb_autopm_put_interface(serial->interface);
215 module_put(serial->type->driver.owner);
217 usb_serial_put(serial);
218 mutex_unlock(&serial->disc_mutex);
226 struct usb_serial *serial = port->serial;
229 mutex_lock(&serial->disc_mutex);
230 if (serial->disconnected)
233 retval = port->serial->type->open(tty, port);
234 mutex_unlock(&serial->disc_mutex);
255 * Shut down a USB serial port. Serialized against activate by the
265 struct usb_serial_driver *drv = port->serial->type;
301 struct usb_serial *serial;
314 serial = port->serial;
315 owner = serial->type->driver.owner;
317 usb_autopm_put_interface(serial->interface);
319 usb_serial_put(serial);
329 if (port->serial->dev->state == USB_STATE_NOTATTACHED)
334 retval = port->serial->type->write(tty, port, buf, count);
347 return port->serial->type->write_room(tty);
353 struct usb_serial *serial = port->serial;
357 if (serial->disconnected)
360 return serial->type->chars_in_buffer(tty);
366 struct usb_serial *serial = port->serial;
370 if (!port->serial->type->wait_until_sent)
373 mutex_lock(&serial->disc_mutex);
374 if (!serial->disconnected)
375 port->serial->type->wait_until_sent(tty, timeout);
376 mutex_unlock(&serial->disc_mutex);
385 if (port->serial->type->throttle)
386 port->serial->type->throttle(tty);
395 if (port->serial->type->unthrottle)
396 port->serial->type->unthrottle(tty);
403 if (port->serial->type->get_serial)
404 return port->serial->type->get_serial(tty, ss);
412 if (port->serial->type->set_serial)
413 return port->serial->type->set_serial(tty, ss);
427 if (port->serial->type->tiocmiwait)
428 retval = port->serial->type->tiocmiwait(tty, arg);
431 if (port->serial->type->ioctl)
432 retval = port->serial->type->ioctl(tty, cmd, arg);
444 if (port->serial->type->set_termios)
445 port->serial->type->set_termios(tty, port, old);
456 if (port->serial->type->break_ctl)
457 port->serial->type->break_ctl(tty, break_state);
464 struct usb_serial *serial;
474 serial = port->serial;
477 if (serial->type->driver.owner)
479 module_name(serial->type->driver.owner));
481 serial->type->description);
483 le16_to_cpu(serial->dev->descriptor.idVendor),
484 le16_to_cpu(serial->dev->descriptor.idProduct));
485 seq_printf(m, " num_ports:%d", serial->num_ports);
487 usb_make_path(serial->dev, tmp, sizeof(tmp));
491 usb_serial_put(serial);
492 mutex_unlock(&serial->disc_mutex);
503 if (port->serial->type->tiocmget)
504 return port->serial->type->tiocmget(tty);
515 if (port->serial->type->tiocmset)
516 return port->serial->type->tiocmset(tty, set, clear);
527 if (port->serial->type->get_icount)
528 return port->serial->type->get_icount(tty, icount);
605 struct usb_serial *serial;
607 serial = kzalloc(sizeof(*serial), GFP_KERNEL);
608 if (!serial)
610 serial->dev = usb_get_dev(dev);
611 serial->type = driver;
612 serial->interface = usb_get_intf(interface);
613 kref_init(&serial->kref);
614 mutex_init(&serial->disc_mutex);
615 serial->minors_reserved = 0;
617 return serial;
675 struct usb_serial_driver *drv = p->serial->type;
686 struct usb_serial_driver *drv = p->serial->type;
714 static void find_endpoints(struct usb_serial *serial,
717 struct device *dev = &serial->interface->dev;
727 iface_desc = serial->interface->cur_altsetting;
750 struct usb_serial_driver *type = port->serial->type;
751 struct usb_device *udev = port->serial->dev;
782 struct usb_serial_driver *type = port->serial->type;
783 struct usb_device *udev = port->serial->dev;
819 struct usb_serial_driver *type = port->serial->type;
820 struct usb_device *udev = port->serial->dev;
843 struct usb_serial_driver *type = port->serial->type;
844 struct usb_device *udev = port->serial->dev;
870 struct usb_serial *serial = NULL;
894 serial = create_serial(dev, interface, type);
895 if (!serial) {
905 retval = type->probe(serial, id);
920 find_endpoints(serial, epds);
932 retval = type->calc_num_ports(serial, epds);
946 serial->num_ports = (unsigned char)num_ports;
947 serial->num_bulk_in = epds->num_bulk_in;
948 serial->num_bulk_out = epds->num_bulk_out;
949 serial->num_interrupt_in = epds->num_interrupt_in;
950 serial->num_interrupt_out = epds->num_interrupt_out;
961 max_endpoints = max(max_endpoints, serial->num_ports);
962 serial->num_port_pointers = max_endpoints;
973 port->serial = serial;
978 serial->port[i] = port;
989 retval = setup_port_bulk_in(serial->port[i], epds->bulk_in[i]);
995 retval = setup_port_bulk_out(serial->port[i],
1001 if (serial->type->read_int_callback) {
1003 retval = setup_port_interrupt_in(serial->port[i],
1012 if (serial->type->write_int_callback) {
1014 retval = setup_port_interrupt_out(serial->port[i],
1023 usb_set_intfdata(interface, serial);
1027 retval = type->attach(serial);
1030 serial->attached = 1;
1033 serial port as it's about to disappear */
1034 serial->num_ports = 0;
1038 serial->attached = 1;
1041 retval = allocate_minors(serial, num_ports);
1043 dev_err(ddev, "No more free serial minor numbers\n");
1049 port = serial->port[i];
1060 usb_serial_console_init(serial->port[0]->minor);
1069 usb_serial_put(serial);
1079 struct usb_serial *serial = usb_get_intfdata(interface);
1084 usb_serial_console_disconnect(serial);
1086 mutex_lock(&serial->disc_mutex);
1088 serial->disconnected = 1;
1089 mutex_unlock(&serial->disc_mutex);
1091 for (i = 0; i < serial->num_ports; ++i) {
1092 port = serial->port[i];
1104 if (serial->type->disconnect)
1105 serial->type->disconnect(serial);
1108 usb_serial_put(serial);
1114 struct usb_serial *serial = usb_get_intfdata(intf);
1117 serial->suspending = 1;
1120 * serial->type->suspend() MUST return 0 in system sleep context,
1124 if (serial->type->suspend) {
1125 r = serial->type->suspend(serial, message);
1127 serial->suspending = 0;
1132 for (i = 0; i < serial->num_ports; ++i)
1133 usb_serial_port_poison_urbs(serial->port[i]);
1139 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial)
1143 for (i = 0; i < serial->num_ports; ++i)
1144 usb_serial_port_unpoison_urbs(serial->port[i]);
1149 struct usb_serial *serial = usb_get_intfdata(intf);
1152 usb_serial_unpoison_port_urbs(serial);
1154 serial->suspending = 0;
1155 if (serial->type->resume)
1156 rv = serial->type->resume(serial);
1158 rv = usb_serial_generic_resume(serial);
1166 struct usb_serial *serial = usb_get_intfdata(intf);
1169 usb_serial_unpoison_port_urbs(serial);
1171 serial->suspending = 0;
1172 if (serial->type->reset_resume) {
1173 rv = serial->type->reset_resume(serial);
1352 * usb_serial_register_drivers - register drivers for a usb-serial module
1369 * udriver must be registered before any of the serial drivers,
1370 * because the store_new_id() routine for the serial drivers (in
1374 * the serial drivers are registered, because the probe would
1375 * simply fail for lack of a matching serial driver.
1378 * Suspend/resume support is implemented in the usb-serial core,
1428 * usb_serial_deregister_drivers - deregister drivers for a usb-serial module