2020-09-01 05:03:50

by William Sung

[permalink] [raw]
Subject: [PATCH 1/2] usb: serial: option: Fix the lackage for Quectel EG95 LTE modem support

* Add reset-resume callback for resetting USB devices after MCU exits
from suspend/sleep mode.

* Because Quectel EG95 uses USB interface 4 as a USB network device, so
return from option_startup() to prevent being used as a USB serial
device.

Fixes: da6902e5b6db ("USB: serial: option: add Quectel EG95 LTE modem"

Signed-off-by: William Sung <[email protected]>
---
drivers/usb/serial/option.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 89b3192af326..9de8aec47e5e 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -2069,6 +2069,7 @@ static struct usb_serial_driver option_1port_device = {
#ifdef CONFIG_PM
.suspend = usb_wwan_suspend,
.resume = usb_wwan_resume,
+ .reset_resume = usb_wwan_resume,
#endif
};

@@ -2104,6 +2105,11 @@ static int option_probe(struct usb_serial *serial,
if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2)
return -ENODEV;

+ /* Quectel EC25 & EC21 & EG91 & EG95 ... interface 4 can be used as USB network device */
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2c7c) &&
+ serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+ return -ENODEV;
+
/* Store the device flags so we can use them during attach. */
usb_set_serial_data(serial, (void *)device_flags);

--
2.17.1


2020-09-18 07:53:52

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH 1/2] usb: serial: option: Fix the lackage for Quectel EG95 LTE modem support

On Tue, Sep 01, 2020 at 01:00:21PM +0800, William Sung wrote:
> * Add reset-resume callback for resetting USB devices after MCU exits
> from suspend/sleep mode.

Please split this in it's own patch and argue for why it's needed.

> * Because Quectel EG95 uses USB interface 4 as a USB network device, so
> return from option_startup() to prevent being used as a USB serial
> device.
>
> Fixes: da6902e5b6db ("USB: serial: option: add Quectel EG95 LTE modem"
>
> Signed-off-by: William Sung <[email protected]>
> ---
> drivers/usb/serial/option.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> index 89b3192af326..9de8aec47e5e 100644
> --- a/drivers/usb/serial/option.c
> +++ b/drivers/usb/serial/option.c
> @@ -2069,6 +2069,7 @@ static struct usb_serial_driver option_1port_device = {
> #ifdef CONFIG_PM
> .suspend = usb_wwan_suspend,
> .resume = usb_wwan_resume,
> + .reset_resume = usb_wwan_resume,
> #endif
> };
>
> @@ -2104,6 +2105,11 @@ static int option_probe(struct usb_serial *serial,
> if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2)
> return -ENODEV;
>
> + /* Quectel EC25 & EC21 & EG91 & EG95 ... interface 4 can be used as USB network device */
> + if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2c7c) &&
> + serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
> + return -ENODEV;

And please use the normal mechanisms for blacklisting interfaces (e.g.
the RSVD() macro).

> +
> /* Store the device flags so we can use them during attach. */
> usb_set_serial_data(serial, (void *)device_flags);

Also make sure your patches have distinct and descriptive summaries
(Subject lines).

Johan