Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc4c2c15 authored by Johan Hovold's avatar Johan Hovold
Browse files

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: default avatarJohan Hovold <johan@kernel.org>
parent ea3c6ebd
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -950,17 +950,23 @@ static int mxuport_calc_num_ports(struct usb_serial *serial,
					struct usb_serial_endpoints *epds)
{
	unsigned long features = (unsigned long)usb_get_serial_data(serial);
	int num_ports;

	if (features & MX_UPORT_2_PORT) {
		num_ports = 2;
	} else if (features & MX_UPORT_4_PORT) {
		num_ports = 4;
	} else if (features & MX_UPORT_8_PORT) {
		num_ports = 8;
	} else if (features & MX_UPORT_16_PORT) {
		num_ports = 16;
	} else {
		dev_warn(&serial->interface->dev,
				"unknown device, assuming two ports\n");
		num_ports = 2;
	}

	if (features & MX_UPORT_2_PORT)
		return 2;
	if (features & MX_UPORT_4_PORT)
		return 4;
	if (features & MX_UPORT_8_PORT)
		return 8;
	if (features & MX_UPORT_16_PORT)
		return 16;

	return 0;
	return num_ports;
}

/* Get the version of the firmware currently running. */
@@ -1367,7 +1373,6 @@ static struct usb_serial_driver mxuport_device = {
	},
	.description		= "MOXA UPort",
	.id_table		= mxuport_idtable,
	.num_ports		= 0,
	.probe			= mxuport_probe,
	.port_probe		= mxuport_port_probe,
	.attach			= mxuport_attach,