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;
124 int usb_serial_claim_interface(struct usb_serial *serial, struct usb_interface *intf)
126 struct usb_driver *driver = serial->type->usb_driver;
129 if (serial->sibling)
132 ret = usb_driver_claim_interface(driver, intf, serial);
134 dev_err(&serial->interface->dev,
139 serial->sibling = intf;
145 static void release_sibling(struct usb_serial *serial, struct usb_interface *intf)
147 struct usb_driver *driver = serial->type->usb_driver;
150 if (!serial->sibling)
153 if (intf == serial->sibling)
154 sibling = serial->interface;
156 sibling = serial->sibling;
164 struct usb_serial *serial;
168 serial = to_usb_serial(kref);
171 if (serial->minors_reserved)
172 release_minors(serial);
174 if (serial->attached && serial->type->release)
175 serial->type->release(serial);
178 for (i = 0; i < serial->num_port_pointers; ++i) {
179 port = serial->port[i];
181 port->serial = NULL;
186 usb_put_intf(serial->interface);
187 usb_put_dev(serial->dev);
188 kfree(serial);
191 void usb_serial_put(struct usb_serial *serial)
193 kref_put(&serial->kref, destroy_serial);
206 * USB serial settings but permit them to be overridden by
207 * serial->type->init_termios on first open.
217 struct usb_serial *serial;
226 serial = port->serial;
227 if (!try_module_get(serial->type->driver.owner))
236 mutex_unlock(&serial->disc_mutex);
239 if (init_termios && serial->type->init_termios)
240 serial->type->init_termios(tty);
247 module_put(serial->type->driver.owner);
249 usb_serial_put(serial);
250 mutex_unlock(&serial->disc_mutex);
258 struct usb_serial *serial = port->serial;
261 mutex_lock(&serial->disc_mutex);
262 if (serial->disconnected) {
267 retval = usb_autopm_get_interface(serial->interface);
271 retval = port->serial->type->open(tty, port);
273 usb_autopm_put_interface(serial->interface);
275 mutex_unlock(&serial->disc_mutex);
296 * Shut down a USB serial port. Serialized against activate by the
306 struct usb_serial_driver *drv = port->serial->type;
311 usb_autopm_put_interface(port->serial->interface);
344 struct usb_serial *serial;
357 serial = port->serial;
358 owner = serial->type->driver.owner;
360 usb_serial_put(serial);
369 if (port->serial->dev->state == USB_STATE_NOTATTACHED)
374 retval = port->serial->type->write(tty, port, buf, count);
387 return port->serial->type->write_room(tty);
393 struct usb_serial *serial = port->serial;
397 if (serial->disconnected)
400 return serial->type->chars_in_buffer(tty);
406 struct usb_serial *serial = port->serial;
410 if (!port->serial->type->wait_until_sent)
413 mutex_lock(&serial->disc_mutex);
414 if (!serial->disconnected)
415 port->serial->type->wait_until_sent(tty, timeout);
416 mutex_unlock(&serial->disc_mutex);
425 if (port->serial->type->throttle)
426 port->serial->type->throttle(tty);
435 if (port->serial->type->unthrottle)
436 port->serial->type->unthrottle(tty);
456 if (port->serial->type->get_serial)
457 port->serial->type->get_serial(tty, ss);
486 if (port->serial->type->set_serial) {
487 ret = port->serial->type->set_serial(tty, ss);
510 if (port->serial->type->tiocmiwait)
511 retval = port->serial->type->tiocmiwait(tty, arg);
514 if (port->serial->type->ioctl)
515 retval = port->serial->type->ioctl(tty, cmd, arg);
528 if (port->serial->type->set_termios)
529 port->serial->type->set_termios(tty, port, old);
540 if (port->serial->type->break_ctl)
541 return port->serial->type->break_ctl(tty, break_state);
548 struct usb_serial *serial;
558 serial = port->serial;
561 if (serial->type->driver.owner)
563 module_name(serial->type->driver.owner));
565 serial->type->description);
567 le16_to_cpu(serial->dev->descriptor.idVendor),
568 le16_to_cpu(serial->dev->descriptor.idProduct));
569 seq_printf(m, " num_ports:%d", serial->num_ports);
571 usb_make_path(serial->dev, tmp, sizeof(tmp));
575 usb_serial_put(serial);
576 mutex_unlock(&serial->disc_mutex);
587 if (port->serial->type->tiocmget)
588 return port->serial->type->tiocmget(tty);
599 if (port->serial->type->tiocmset)
600 return port->serial->type->tiocmset(tty, set, clear);
611 if (port->serial->type->get_icount)
612 return port->serial->type->get_icount(tty, icount);
689 struct usb_serial *serial;
691 serial = kzalloc(sizeof(*serial), GFP_KERNEL);
692 if (!serial)
694 serial->dev = usb_get_dev(dev);
695 serial->type = driver;
696 serial->interface = usb_get_intf(interface);
697 kref_init(&serial->kref);
698 mutex_init(&serial->disc_mutex);
699 serial->minors_reserved = 0;
701 return serial;
759 struct usb_serial_driver *drv = p->serial->type;
770 struct usb_serial_driver *drv = p->serial->type;
798 static void store_endpoint(struct usb_serial *serial,
802 struct device *dev = &serial->interface->dev;
828 static void find_endpoints(struct usb_serial *serial,
839 store_endpoint(serial, epds, epd);
846 struct usb_serial_driver *type = port->serial->type;
847 struct usb_device *udev = port->serial->dev;
878 struct usb_serial_driver *type = port->serial->type;
879 struct usb_device *udev = port->serial->dev;
915 struct usb_serial_driver *type = port->serial->type;
916 struct usb_device *udev = port->serial->dev;
939 struct usb_serial_driver *type = port->serial->type;
940 struct usb_device *udev = port->serial->dev;
966 struct usb_serial *serial = NULL;
990 serial = create_serial(dev, interface, type);
991 if (!serial) {
1001 retval = type->probe(serial, id);
1016 find_endpoints(serial, epds, interface);
1017 if (serial->sibling)
1018 find_endpoints(serial, epds, serial->sibling);
1030 retval = type->calc_num_ports(serial, epds);
1044 serial->num_ports = (unsigned char)num_ports;
1045 serial->num_bulk_in = epds->num_bulk_in;
1046 serial->num_bulk_out = epds->num_bulk_out;
1047 serial->num_interrupt_in = epds->num_interrupt_in;
1048 serial->num_interrupt_out = epds->num_interrupt_out;
1059 max_endpoints = max(max_endpoints, serial->num_ports);
1060 serial->num_port_pointers = max_endpoints;
1071 port->serial = serial;
1076 serial->port[i] = port;
1087 retval = setup_port_bulk_in(serial->port[i], epds->bulk_in[i]);
1093 retval = setup_port_bulk_out(serial->port[i],
1099 if (serial->type->read_int_callback) {
1101 retval = setup_port_interrupt_in(serial->port[i],
1110 if (serial->type->write_int_callback) {
1112 retval = setup_port_interrupt_out(serial->port[i],
1121 usb_set_intfdata(interface, serial);
1125 retval = type->attach(serial);
1128 serial->attached = 1;
1131 serial port as it's about to disappear */
1132 serial->num_ports = 0;
1136 serial->attached = 1;
1139 retval = allocate_minors(serial, num_ports);
1141 dev_err(ddev, "No more free serial minor numbers\n");
1147 port = serial->port[i];
1158 usb_serial_console_init(serial->port[0]->minor);
1167 release_sibling(serial, interface);
1168 usb_serial_put(serial);
1178 struct usb_serial *serial = usb_get_intfdata(interface);
1184 if (!serial)
1187 usb_serial_console_disconnect(serial);
1189 mutex_lock(&serial->disc_mutex);
1191 serial->disconnected = 1;
1192 mutex_unlock(&serial->disc_mutex);
1194 for (i = 0; i < serial->num_ports; ++i) {
1195 port = serial->port[i];
1207 if (serial->type->disconnect)
1208 serial->type->disconnect(serial);
1210 release_sibling(serial, interface);
1213 usb_serial_put(serial);
1219 struct usb_serial *serial = usb_get_intfdata(intf);
1223 if (serial->suspend_count++)
1227 * serial->type->suspend() MUST return 0 in system sleep context,
1231 if (serial->type->suspend) {
1232 r = serial->type->suspend(serial, message);
1234 serial->suspend_count--;
1239 for (i = 0; i < serial->num_ports; ++i)
1240 usb_serial_port_poison_urbs(serial->port[i]);
1246 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial)
1250 for (i = 0; i < serial->num_ports; ++i)
1251 usb_serial_port_unpoison_urbs(serial->port[i]);
1256 struct usb_serial *serial = usb_get_intfdata(intf);
1260 if (--serial->suspend_count)
1263 usb_serial_unpoison_port_urbs(serial);
1265 if (serial->type->resume)
1266 rv = serial->type->resume(serial);
1268 rv = usb_serial_generic_resume(serial);
1276 struct usb_serial *serial = usb_get_intfdata(intf);
1280 if (--serial->suspend_count)
1283 usb_serial_unpoison_port_urbs(serial);
1285 if (serial->type->reset_resume) {
1286 rv = serial->type->reset_resume(serial);
1462 * usb_serial_register_drivers - register drivers for a usb-serial module
1479 * udriver must be registered before any of the serial drivers,
1480 * because the store_new_id() routine for the serial drivers (in
1484 * the serial drivers are registered, because the probe would
1485 * simply fail for lack of a matching serial driver.
1488 * Suspend/resume support is implemented in the usb-serial core,
1538 * usb_serial_deregister_drivers - deregister drivers for a usb-serial module