diff options
author | Johan Hovold <johan@kernel.org> | 2017-03-16 17:13:30 +0100 |
---|---|---|
committer | Johan Hovold <johan@kernel.org> | 2017-03-28 10:54:39 +0200 |
commit | 07814246dd5530860ef758fd9b2b5f2e26472aa2 (patch) | |
tree | e27c9ae087d22c49b063e365df2c7f2ba479c253 /drivers/usb/serial/visor.c | |
parent | USB: serial: whiteheat: simplify endpoint check (diff) | |
download | linux-07814246dd5530860ef758fd9b2b5f2e26472aa2.tar.xz linux-07814246dd5530860ef758fd9b2b5f2e26472aa2.zip |
USB: serial: allow subdrivers to modify port-endpoint mapping
Allow subdrivers to modify the port-endpoint mapping by passing the
endpoint descriptors to calc_num_ports.
The callback can now also be used to verify that the required endpoints
exists and abort probing otherwise.
This will allow us to get rid of a few hacks in subdrivers that are
already modifying the port-endpoint mapping (or aborting probe due to
missing endpoints), but only after the port structures have been setup.
Signed-off-by: Johan Hovold <johan@kernel.org>
Diffstat (limited to 'drivers/usb/serial/visor.c')
-rw-r--r-- | drivers/usb/serial/visor.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 337a0be89fcf..3f943f877ac2 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c @@ -40,7 +40,8 @@ static int visor_open(struct tty_struct *tty, struct usb_serial_port *port); static void visor_close(struct usb_serial_port *port); static int visor_probe(struct usb_serial *serial, const struct usb_device_id *id); -static int visor_calc_num_ports(struct usb_serial *serial); +static int visor_calc_num_ports(struct usb_serial *serial, + struct usb_serial_endpoints *epds); static void visor_read_int_callback(struct urb *urb); static int clie_3_5_startup(struct usb_serial *serial); static int treo_attach(struct usb_serial *serial); @@ -466,7 +467,8 @@ static int visor_probe(struct usb_serial *serial, return retval; } -static int visor_calc_num_ports(struct usb_serial *serial) +static int visor_calc_num_ports(struct usb_serial *serial, + struct usb_serial_endpoints *epds) { int num_ports = (int)(long)(usb_get_serial_data(serial)); |