USB: serial: mxuport: register two ports for unknown devices

Print a message and register two ports for interfaces for which we do
not know how many ports there are instead of binding, allocating
resources, but not register any ports.

This provides a hint that anyone adding a dynamic device id must also
provide a reference id (driver info) from which the port count can be
retrieved, for example:

	echo <vid> <pid> 0 0x110A 0x1410 > new_id

Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
Johan Hovold 2017-03-16 17:13:54 +01:00
parent ea3c6ebdcb
commit bc4c2c15cb

View file

@ -950,17 +950,23 @@ static int mxuport_calc_num_ports(struct usb_serial *serial,
struct usb_serial_endpoints *epds) struct usb_serial_endpoints *epds)
{ {
unsigned long features = (unsigned long)usb_get_serial_data(serial); unsigned long features = (unsigned long)usb_get_serial_data(serial);
int num_ports;
if (features & MX_UPORT_2_PORT) if (features & MX_UPORT_2_PORT) {
return 2; num_ports = 2;
if (features & MX_UPORT_4_PORT) } else if (features & MX_UPORT_4_PORT) {
return 4; num_ports = 4;
if (features & MX_UPORT_8_PORT) } else if (features & MX_UPORT_8_PORT) {
return 8; num_ports = 8;
if (features & MX_UPORT_16_PORT) } else if (features & MX_UPORT_16_PORT) {
return 16; num_ports = 16;
} else {
dev_warn(&serial->interface->dev,
"unknown device, assuming two ports\n");
num_ports = 2;
}
return 0; return num_ports;
} }
/* Get the version of the firmware currently running. */ /* Get the version of the firmware currently running. */
@ -1367,7 +1373,6 @@ static struct usb_serial_driver mxuport_device = {
}, },
.description = "MOXA UPort", .description = "MOXA UPort",
.id_table = mxuport_idtable, .id_table = mxuport_idtable,
.num_ports = 0,
.probe = mxuport_probe, .probe = mxuport_probe,
.port_probe = mxuport_port_probe, .port_probe = mxuport_port_probe,
.attach = mxuport_attach, .attach = mxuport_attach,