|
@@ -48,14 +48,28 @@ static int usb_serial_generic_probe(struct usb_serial *serial,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-struct usb_serial_driver usb_serial_generic_device = {
|
|
|
+static int usb_serial_generic_calc_num_ports(struct usb_serial *serial,
|
|
|
+ struct usb_serial_endpoints *epds)
|
|
|
+{
|
|
|
+ struct device *dev = &serial->interface->dev;
|
|
|
+ int num_ports = epds->num_bulk_out;
|
|
|
+
|
|
|
+ if (num_ports == 0) {
|
|
|
+ dev_err(dev, "Generic device with no bulk out, not allowed.\n");
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ return num_ports;
|
|
|
+}
|
|
|
+
|
|
|
+static struct usb_serial_driver usb_serial_generic_device = {
|
|
|
.driver = {
|
|
|
.owner = THIS_MODULE,
|
|
|
.name = "generic",
|
|
|
},
|
|
|
.id_table = generic_device_ids,
|
|
|
- .num_ports = 1,
|
|
|
.probe = usb_serial_generic_probe,
|
|
|
+ .calc_num_ports = usb_serial_generic_calc_num_ports,
|
|
|
.throttle = usb_serial_generic_throttle,
|
|
|
.unthrottle = usb_serial_generic_unthrottle,
|
|
|
.resume = usb_serial_generic_resume,
|