Message ID | 20210730122156.718-1-johan@kernel.org |
---|---|
State | Accepted |
Commit | 1e9faef4d26de33bd6b5018695996e7394119e5b |
Headers | show |
Series | USB: serial: pl2303: fix HX type detection | expand |
On Fri, Jul 30, 2021 at 02:21:56PM +0200, Johan Hovold wrote: > The device release number for HX-type devices is configurable in > EEPROM/OTPROM and cannot be used reliably for type detection. > > Assume all (non-H) devices with bcdUSB 1.1 and unknown bcdDevice to be > of HX type while adding a bcdDevice check for HXD and TB (1.1 and 2.0, > respectively). > > Reported-by: Chris <chris@cyber-anlage.de> > Fixes: 8a7bf7510d1f ("USB: serial: pl2303: amend and tighten type detection") > Cc: stable@vger.kernel.org # 5.13 > Signed-off-by: Johan Hovold <johan@kernel.org> > --- > drivers/usb/serial/pl2303.c | 41 ++++++++++++++++++++++--------------- > 1 file changed, 25 insertions(+), 16 deletions(-) > Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
On Fri, Jul 30, 2021 at 02:29:55PM +0200, Greg Kroah-Hartman wrote: > On Fri, Jul 30, 2021 at 02:21:56PM +0200, Johan Hovold wrote: > > The device release number for HX-type devices is configurable in > > EEPROM/OTPROM and cannot be used reliably for type detection. > > > > Assume all (non-H) devices with bcdUSB 1.1 and unknown bcdDevice to be > > of HX type while adding a bcdDevice check for HXD and TB (1.1 and 2.0, > > respectively). > > > > Reported-by: Chris <chris@cyber-anlage.de> > > Fixes: 8a7bf7510d1f ("USB: serial: pl2303: amend and tighten type detection") > > Cc: stable@vger.kernel.org # 5.13 > > Signed-off-by: Johan Hovold <johan@kernel.org> > > --- > > drivers/usb/serial/pl2303.c | 41 ++++++++++++++++++++++--------------- > > 1 file changed, 25 insertions(+), 16 deletions(-) > > > > Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Thanks for reviewing. Now applied. Johan
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 2f2f5047452b..17601e32083e 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -418,24 +418,33 @@ static int pl2303_detect_type(struct usb_serial *serial) bcdDevice = le16_to_cpu(desc->bcdDevice); bcdUSB = le16_to_cpu(desc->bcdUSB); - switch (bcdDevice) { - case 0x100: - /* - * Assume it's an HXN-type if the device doesn't support the old read - * request value. - */ - if (bcdUSB == 0x200 && !pl2303_supports_hx_status(serial)) - return TYPE_HXN; + switch (bcdUSB) { + case 0x110: + switch (bcdDevice) { + case 0x300: + return TYPE_HX; + case 0x400: + return TYPE_HXD; + default: + return TYPE_HX; + } break; - case 0x300: - if (bcdUSB == 0x200) + case 0x200: + switch (bcdDevice) { + case 0x100: + /* + * Assume it's an HXN-type if the device doesn't + * support the old read request value. + */ + if (!pl2303_supports_hx_status(serial)) + return TYPE_HXN; + break; + case 0x300: return TYPE_TA; - - return TYPE_HX; - case 0x400: - return TYPE_HXD; - case 0x500: - return TYPE_TB; + case 0x500: + return TYPE_TB; + } + break; } dev_err(&serial->interface->dev,
The device release number for HX-type devices is configurable in EEPROM/OTPROM and cannot be used reliably for type detection. Assume all (non-H) devices with bcdUSB 1.1 and unknown bcdDevice to be of HX type while adding a bcdDevice check for HXD and TB (1.1 and 2.0, respectively). Reported-by: Chris <chris@cyber-anlage.de> Fixes: 8a7bf7510d1f ("USB: serial: pl2303: amend and tighten type detection") Cc: stable@vger.kernel.org # 5.13 Signed-off-by: Johan Hovold <johan@kernel.org> --- drivers/usb/serial/pl2303.c | 41 ++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 16 deletions(-)