diff mbox series

[5.10,491/663] USB: serial: option: update interface mapping for ZTE P685M

Message ID 20210301161206.139213430@linuxfoundation.org
State New
Headers show
Series None | expand

Commit Message

Greg Kroah-Hartman March 1, 2021, 4:12 p.m. UTC
From: Lech Perczak <lech.perczak@gmail.com>

commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

This patch prepares for qmi_wwan driver support for the device.
Previously "option" driver mapped itself to interfaces 0 and 3 (matching
ff/ff/ff), while interface 3 is in fact a QMI port.
Interfaces 1 and 2 (matching ff/00/00) expose AT commands,
and weren't supported previously at all.
Without this patch, a possible conflict would exist if device ID was
added to qmi_wwan driver for interface 3.

Update and simplify device ID to match interfaces 0-2 directly,
to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict
with QMI (3), and ADB (4).

The modem is used inside ZTE MF283+ router and carriers identify it as
such.
Interface mapping is:
0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=19d2 ProdID=1275 Rev=f0.00
S:  Manufacturer=ZTE,Incorporated
S:  Product=ZTE Technologies MSM
S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Cc: Johan Hovold <johan@kernel.org>
Cc: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com
Cc: stable@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/serial/option.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Lech Perczak March 3, 2021, 11:58 p.m. UTC | #1
Hi,

On 2021-03-01 at 17:12, Greg Kroah-Hartman wrote:
> From: Lech Perczak <lech.perczak@gmail.com>

>

> commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

>

> This patch prepares for qmi_wwan driver support for the device.

> Previously "option" driver mapped itself to interfaces 0 and 3 (matching

> ff/ff/ff), while interface 3 is in fact a QMI port.

> Interfaces 1 and 2 (matching ff/00/00) expose AT commands,

> and weren't supported previously at all.

> Without this patch, a possible conflict would exist if device ID was

> added to qmi_wwan driver for interface 3.

>

> Update and simplify device ID to match interfaces 0-2 directly,

> to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict

> with QMI (3), and ADB (4).

>

> The modem is used inside ZTE MF283+ router and carriers identify it as

> such.

> Interface mapping is:

> 0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

>

> T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0

> D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

> P:  Vendor=19d2 ProdID=1275 Rev=f0.00

> S:  Manufacturer=ZTE,Incorporated

> S:  Product=ZTE Technologies MSM

> S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0

> C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA

> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan

> E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms

> E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

> E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>

> Cc: Johan Hovold <johan@kernel.org>

> Cc: Bjørn Mork <bjorn@mork.no>

> Signed-off-by: Lech Perczak <lech.perczak@gmail.com>

> Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com

> Cc: stable@vger.kernel.org

> Signed-off-by: Johan Hovold <johan@kernel.org>

> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> ---

>   drivers/usb/serial/option.c |    3 ++-

>   1 file changed, 2 insertions(+), 1 deletion(-)

>

> --- a/drivers/usb/serial/option.c

> +++ b/drivers/usb/serial/option.c

> @@ -1569,7 +1569,8 @@ static const struct usb_device_id option

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },

> -	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },

> +	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */

> +	  .driver_info = RSVD(3) | RSVD(4) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },

>

>

If this patch is selected, then 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2 
("net: usb: qmi_wwan: support ZTE P685M modem")
probably should be selected, too. This patch frees up an interface to be 
claimed by qmi_wwan driver by the mentioned patch.
The mentioned patch only adds a device ID to qmi_wwan driver.

In my opinion, those two should come in pair. Regarding version, I think 
that backporting to 5.4.y and later is enough, as OpenWrt,
from which those patches originate is currently on 5.4.y on the target 
requiring it, and will move to 5.10.y soon.
Backporting this would certainly make OpenWrt folks happy, however I 
don't insist on it.

-- 
With kind regards,
Lech Perczak
Lech Perczak March 4, 2021, 12:01 a.m. UTC | #2
Hi,

On 2021-03-01 at 17:12, Greg Kroah-Hartman wrote:
> From: Lech Perczak <lech.perczak@gmail.com>

>

> commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

>

> This patch prepares for qmi_wwan driver support for the device.

> Previously "option" driver mapped itself to interfaces 0 and 3 (matching

> ff/ff/ff), while interface 3 is in fact a QMI port.

> Interfaces 1 and 2 (matching ff/00/00) expose AT commands,

> and weren't supported previously at all.

> Without this patch, a possible conflict would exist if device ID was

> added to qmi_wwan driver for interface 3.

>

> Update and simplify device ID to match interfaces 0-2 directly,

> to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict

> with QMI (3), and ADB (4).

>

> The modem is used inside ZTE MF283+ router and carriers identify it as

> such.

> Interface mapping is:

> 0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

>

> T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0

> D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

> P:  Vendor=19d2 ProdID=1275 Rev=f0.00

> S:  Manufacturer=ZTE,Incorporated

> S:  Product=ZTE Technologies MSM

> S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0

> C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA

> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan

> E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms

> E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

> E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>

> Cc: Johan Hovold <johan@kernel.org>

> Cc: Bjørn Mork <bjorn@mork.no>

> Signed-off-by: Lech Perczak <lech.perczak@gmail.com>

> Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com

> Cc: stable@vger.kernel.org

> Signed-off-by: Johan Hovold <johan@kernel.org>

> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> ---

>   drivers/usb/serial/option.c |    3 ++-

>   1 file changed, 2 insertions(+), 1 deletion(-)

>

> --- a/drivers/usb/serial/option.c

> +++ b/drivers/usb/serial/option.c

> @@ -1569,7 +1569,8 @@ static const struct usb_device_id option

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },

> -	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },

> +	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */

> +	  .driver_info = RSVD(3) | RSVD(4) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },

>   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },

>

>

If this patch is selected, then 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2 
("net: usb: qmi_wwan: support ZTE P685M modem")
should probably be selected, too, or both be dropped.
This patch frees up an interface to be claimed by qmi_wwan driver by the 
mentioned patch.
The mentioned patch only adds a device ID to qmi_wwan driver.

Regarding version, I think that backporting to 5.4.y and later is 
enough, as OpenWrt,
from which both patches originate, is currently on 5.4.y on the target 
requiring them, and will move to 5.10.y soon.
Backporting this would certainly make OpenWrt folks happy for two 
backports fewer, however I don't insist on it.

-- 
With kind regards,
Lech Perczak
Greg Kroah-Hartman March 4, 2021, 1:26 p.m. UTC | #3
On Thu, Mar 04, 2021 at 12:58:19AM +0100, Lech Perczak wrote:
> Hi,

> 

> On 2021-03-01 at 17:12, Greg Kroah-Hartman wrote:

> > From: Lech Perczak <lech.perczak@gmail.com>

> > 

> > commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

> > 

> > This patch prepares for qmi_wwan driver support for the device.

> > Previously "option" driver mapped itself to interfaces 0 and 3 (matching

> > ff/ff/ff), while interface 3 is in fact a QMI port.

> > Interfaces 1 and 2 (matching ff/00/00) expose AT commands,

> > and weren't supported previously at all.

> > Without this patch, a possible conflict would exist if device ID was

> > added to qmi_wwan driver for interface 3.

> > 

> > Update and simplify device ID to match interfaces 0-2 directly,

> > to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict

> > with QMI (3), and ADB (4).

> > 

> > The modem is used inside ZTE MF283+ router and carriers identify it as

> > such.

> > Interface mapping is:

> > 0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

> > 

> > T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0

> > D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

> > P:  Vendor=19d2 ProdID=1275 Rev=f0.00

> > S:  Manufacturer=ZTE,Incorporated

> > S:  Product=ZTE Technologies MSM

> > S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0

> > C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA

> > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

> > E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> > E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> > E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> > E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> > E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan

> > E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms

> > E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

> > E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > 

> > Cc: Johan Hovold <johan@kernel.org>

> > Cc: Bjørn Mork <bjorn@mork.no>

> > Signed-off-by: Lech Perczak <lech.perczak@gmail.com>

> > Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com

> > Cc: stable@vger.kernel.org

> > Signed-off-by: Johan Hovold <johan@kernel.org>

> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> > ---

> >   drivers/usb/serial/option.c |    3 ++-

> >   1 file changed, 2 insertions(+), 1 deletion(-)

> > 

> > --- a/drivers/usb/serial/option.c

> > +++ b/drivers/usb/serial/option.c

> > @@ -1569,7 +1569,8 @@ static const struct usb_device_id option

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },

> > -	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },

> > +	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */

> > +	  .driver_info = RSVD(3) | RSVD(4) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },

> > 

> > 

> If this patch is selected, then 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2

> ("net: usb: qmi_wwan: support ZTE P685M modem")

> probably should be selected, too. This patch frees up an interface to be

> claimed by qmi_wwan driver by the mentioned patch.

> The mentioned patch only adds a device ID to qmi_wwan driver.

> 

> In my opinion, those two should come in pair. Regarding version, I think

> that backporting to 5.4.y and later is enough, as OpenWrt,

> from which those patches originate is currently on 5.4.y on the target

> requiring it, and will move to 5.10.y soon.

> Backporting this would certainly make OpenWrt folks happy, however I don't

> insist on it.


Now queued up, thanks.

greg k-h
Johan Hovold March 5, 2021, 10:06 a.m. UTC | #4
On Thu, Mar 04, 2021 at 01:01:17AM +0100, Lech Perczak wrote:
> Hi,

> 

> On 2021-03-01 at 17:12, Greg Kroah-Hartman wrote:

> > From: Lech Perczak <lech.perczak@gmail.com>

> >

> > commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

> >

> > This patch prepares for qmi_wwan driver support for the device.

> > Previously "option" driver mapped itself to interfaces 0 and 3 (matching

> > ff/ff/ff), while interface 3 is in fact a QMI port.

> > Interfaces 1 and 2 (matching ff/00/00) expose AT commands,

> > and weren't supported previously at all.

> > Without this patch, a possible conflict would exist if device ID was

> > added to qmi_wwan driver for interface 3.

> >

> > Update and simplify device ID to match interfaces 0-2 directly,

> > to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict

> > with QMI (3), and ADB (4).

> >

> > The modem is used inside ZTE MF283+ router and carriers identify it as

> > such.

> > Interface mapping is:

> > 0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

> >

> > T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0

> > D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

> > P:  Vendor=19d2 ProdID=1275 Rev=f0.00

> > S:  Manufacturer=ZTE,Incorporated

> > S:  Product=ZTE Technologies MSM

> > S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0

> > C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA

> > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

> > E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> > E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> > E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

> > E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

> > E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan

> > E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms

> > E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

> > E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> > E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

> >

> > Cc: Johan Hovold <johan@kernel.org>

> > Cc: Bjørn Mork <bjorn@mork.no>

> > Signed-off-by: Lech Perczak <lech.perczak@gmail.com>

> > Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com

> > Cc: stable@vger.kernel.org

> > Signed-off-by: Johan Hovold <johan@kernel.org>

> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> > ---

> >   drivers/usb/serial/option.c |    3 ++-

> >   1 file changed, 2 insertions(+), 1 deletion(-)

> >

> > --- a/drivers/usb/serial/option.c

> > +++ b/drivers/usb/serial/option.c

> > @@ -1569,7 +1569,8 @@ static const struct usb_device_id option

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },

> > -	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },

> > +	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */

> > +	  .driver_info = RSVD(3) | RSVD(4) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },

> >   	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },

> >

> >

> If this patch is selected, then 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2 

> ("net: usb: qmi_wwan: support ZTE P685M modem")

> should probably be selected, too, or both be dropped.

> This patch frees up an interface to be claimed by qmi_wwan driver by the 

> mentioned patch.

> The mentioned patch only adds a device ID to qmi_wwan driver.


Greg's already picked up the networking one, but why would we drop this
one without the net patch? What good is the QMI interface unless bound
to the network driver? And claiming the ADB port doesn't make any sense.

> Regarding version, I think that backporting to 5.4.y and later is 

> enough, as OpenWrt,

> from which both patches originate, is currently on 5.4.y on the target 

> requiring them, and will move to 5.10.y soon.

> Backporting this would certainly make OpenWrt folks happy for two 

> backports fewer, however I don't insist on it.


We typically backport device ids to all active stable trees.

Johan
Lech Perczak March 5, 2021, 6:03 p.m. UTC | #5
Hello Johan

On 2021-03-05 at 11:06, Johan Hovold wrote:
> On Thu, Mar 04, 2021 at 01:01:17AM +0100, Lech Perczak wrote:

>> Hi,

>>

>> On 2021-03-01 at 17:12, Greg Kroah-Hartman wrote:

>>> From: Lech Perczak <lech.perczak@gmail.com>

>>>

>>> commit 6420a569504e212d618d4a4736e2c59ed80a8478 upstream.

>>>

>>> This patch prepares for qmi_wwan driver support for the device.

>>> Previously "option" driver mapped itself to interfaces 0 and 3 (matching

>>> ff/ff/ff), while interface 3 is in fact a QMI port.

>>> Interfaces 1 and 2 (matching ff/00/00) expose AT commands,

>>> and weren't supported previously at all.

>>> Without this patch, a possible conflict would exist if device ID was

>>> added to qmi_wwan driver for interface 3.

>>>

>>> Update and simplify device ID to match interfaces 0-2 directly,

>>> to expose QCDM (0), PCUI (1), and modem (2) ports and avoid conflict

>>> with QMI (3), and ADB (4).

>>>

>>> The modem is used inside ZTE MF283+ router and carriers identify it as

>>> such.

>>> Interface mapping is:

>>> 0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB

>>>

>>> T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0

>>> D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

>>> P:  Vendor=19d2 ProdID=1275 Rev=f0.00

>>> S:  Manufacturer=ZTE,Incorporated

>>> S:  Product=ZTE Technologies MSM

>>> S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0

>>> C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA

>>> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

>>> E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

>>> E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

>>> E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

>>> E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms

>>> E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan

>>> E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms

>>> E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

>>> E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>> E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

>>>

>>> Cc: Johan Hovold <johan@kernel.org>

>>> Cc: Bjørn Mork <bjorn@mork.no>

>>> Signed-off-by: Lech Perczak <lech.perczak@gmail.com>

>>> Link: https://lore.kernel.org/r/20210207005443.12936-1-lech.perczak@gmail.com

>>> Cc: stable@vger.kernel.org

>>> Signed-off-by: Johan Hovold <johan@kernel.org>

>>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

>>> ---

>>>    drivers/usb/serial/option.c |    3 ++-

>>>    1 file changed, 2 insertions(+), 1 deletion(-)

>>>

>>> --- a/drivers/usb/serial/option.c

>>> +++ b/drivers/usb/serial/option.c

>>> @@ -1569,7 +1569,8 @@ static const struct usb_device_id option

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },

>>> -	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },

>>> +	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */

>>> +	  .driver_info = RSVD(3) | RSVD(4) },

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },

>>>    	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },

>>>

>>>

>> If this patch is selected, then 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2

>> ("net: usb: qmi_wwan: support ZTE P685M modem")

>> should probably be selected, too, or both be dropped.

>> This patch frees up an interface to be claimed by qmi_wwan driver by the

>> mentioned patch.

>> The mentioned patch only adds a device ID to qmi_wwan driver.

> Greg's already picked up the networking one, but why would we drop this

> one without the net patch? What good is the QMI interface unless bound

> to the network driver? And claiming the ADB port doesn't make any sense.

It might be a misunderstanding. I just meant that both patches should go 
together. It happened, so all is fine.
It's true that 'option' driver bound to QMI port serves no purpose, so 
first patch is valid on its own.
ADB isn't bound anywhere, I just noted purpose of interface 4 in the 
commit message for reference.
>

>> Regarding version, I think that backporting to 5.4.y and later is

>> enough, as OpenWrt,

>> from which both patches originate, is currently on 5.4.y on the target

>> requiring them, and will move to 5.10.y soon.

>> Backporting this would certainly make OpenWrt folks happy for two

>> backports fewer, however I don't insist on it.

> We typically backport device ids to all active stable trees.

Understood, thanks!
>

> Johan



-- 
With kind regards.
Lech Perczak
diff mbox series

Patch

--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1569,7 +1569,8 @@  static const struct usb_device_id option
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },
-	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },
+	{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),	/* ZTE P685M */
+	  .driver_info = RSVD(3) | RSVD(4) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },