diff mbox series

[v2,1/2] net: usb: qmi_wwan: support ZTE P685M modem

Message ID 20210205173904.13916-2-lech.perczak@gmail.com
State Superseded
Headers show
Series usb: add full support for ZTE P685M modem | expand

Commit Message

Lech Perczak Feb. 5, 2021, 5:39 p.m. UTC
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: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
---
v2: no changes to this patch, resend as series.

 drivers/net/usb/qmi_wwan.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Bjørn Mork Feb. 6, 2021, 2:19 p.m. UTC | #1
Lech Perczak <lech.perczak@gmail.com> writes:

> 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


This lookes weird.  But I guess that's really the string presented by
this device?

> 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: Bjørn Mork <bjorn@mork.no>

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


Patch looks fine to me.  But I don't think you can submit a net and usb
serial patch in a series. These are two different subsystems.

There's no dependency between the patches so you can just submit
them as standalone patches.  I.e. no series.

Feel free to include

Acked-by: Bjørn Mork <bjorn@mork.no>
Lech Perczak Feb. 6, 2021, 2:50 p.m. UTC | #2
Hi,

W dniu 2021-02-06 o 15:19, Bjørn Mork pisze:
> Lech Perczak<lech.perczak@gmail.com>  writes:

>

>> 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

> This lookes weird.  But I guess that's really the string presented by

> this device?

Yes indeed. Looked weird to me too, but at least it confirms the model 
name found in Windows drivers.
>> 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: Bjørn Mork<bjorn@mork.no>

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

> Patch looks fine to me.  But I don't think you can submit a net and usb

> serial patch in a series. These are two different subsystems.

>

> There's no dependency between the patches so you can just submit

> them as standalone patches.  I.e. no series.

Actually, there is, and I just noticed, that patches are in wrong order.
Without patch 2/2 for 'option' driver, there is possibility for that 
driver to steal
interface 3 from qmi_wwan, as currently it will match interface 3 as 
ff/ff/ff.

With that in mind I'm not really sure how to proceed.

What comes to my mind, is either submit this as series again, with 
ordering swapped,
or submit 2/2 first, wait for it to become merged, and then submit 1/2.

> Feel free to include

>

> Acked-by: Bjørn Mork<bjorn@mork.no>


Thank you.

--
With kind regards,
Lech
Jakub Kicinski Feb. 6, 2021, 8:13 p.m. UTC | #3
On Sat, 6 Feb 2021 15:50:41 +0100 Lech Perczak wrote:
> >> Cc: Bjørn Mork<bjorn@mork.no>

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

> > Patch looks fine to me.  But I don't think you can submit a net and usb

> > serial patch in a series. These are two different subsystems.

> >

> > There's no dependency between the patches so you can just submit

> > them as standalone patches.  I.e. no series.  

> Actually, there is, and I just noticed, that patches are in wrong order.

> Without patch 2/2 for 'option' driver, there is possibility for that 

> driver to steal

> interface 3 from qmi_wwan, as currently it will match interface 3 as 

> ff/ff/ff.

> 

> With that in mind I'm not really sure how to proceed.

> 

> What comes to my mind, is either submit this as series again, with 

> ordering swapped,

> or submit 2/2 first, wait for it to become merged, and then submit 1/2.


Send patch 2, wait for it to hit net, send 1 seems like the safest
option. If we're lucky Johan can still send patch 2 for 5.11, otherwise
we'll wait until the merge window - we're at rc7 already, it won't take
too long.
Johan Hovold Feb. 8, 2021, 9:35 a.m. UTC | #4
On Sat, Feb 06, 2021 at 12:13:22PM -0800, Jakub Kicinski wrote:
> On Sat, 6 Feb 2021 15:50:41 +0100 Lech Perczak wrote:

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

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

> > > Patch looks fine to me.  But I don't think you can submit a net and usb

> > > serial patch in a series. These are two different subsystems.

> > >

> > > There's no dependency between the patches so you can just submit

> > > them as standalone patches.  I.e. no series.  

> > Actually, there is, and I just noticed, that patches are in wrong order.

> > Without patch 2/2 for 'option' driver, there is possibility for that 

> > driver to steal

> > interface 3 from qmi_wwan, as currently it will match interface 3 as 

> > ff/ff/ff.

> > 

> > With that in mind I'm not really sure how to proceed.

> > 

> > What comes to my mind, is either submit this as series again, with 

> > ordering swapped,

> > or submit 2/2 first, wait for it to become merged, and then submit 1/2.

> 

> Send patch 2, wait for it to hit net, send 1 seems like the safest

> option. If we're lucky Johan can still send patch 2 for 5.11, otherwise

> we'll wait until the merge window - we're at rc7 already, it won't take

> too long.


I usually don't send on new device-ids this late in the release cycle,
so I'll queue the USB-serial one up for 5.12-rc1 and you can take this
one through net-next.

Johan
Johan Hovold Feb. 8, 2021, 9:51 a.m. UTC | #5
On Sun, Feb 07, 2021 at 01:54:43AM +0100, Lech Perczak wrote:
> 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>

> ---

> v3: No changes to contents of the patch.

> Resend as separate patch to be merged through USB subsystem, the

> following patch for qmi_wwan will go through netdev tree after this is

> merged.

> Updated commit description, added note about possible qmi_wwan conflict.

> 

> v2: Blacklist ports 3-4 and simplify device ID,

> as suggested by Lars Melin.


Now applied for -next, thanks.

Johan
Jakub Kicinski Feb. 8, 2021, 5:52 p.m. UTC | #6
On Mon, 8 Feb 2021 10:35:24 +0100 Johan Hovold wrote:
> > Send patch 2, wait for it to hit net, send 1 seems like the safest

> > option. If we're lucky Johan can still send patch 2 for 5.11, otherwise

> > we'll wait until the merge window - we're at rc7 already, it won't take

> > too long.  

> 

> I usually don't send on new device-ids this late in the release cycle,

> so I'll queue the USB-serial one up for 5.12-rc1 and you can take this

> one through net-next.


s/net-next/net/  Sound like a plan, thanks!
Johan Hovold Feb. 9, 2021, 12:09 p.m. UTC | #7
On Mon, Feb 08, 2021 at 09:52:52AM -0800, Jakub Kicinski wrote:
> On Mon, 8 Feb 2021 10:35:24 +0100 Johan Hovold wrote:

> > > Send patch 2, wait for it to hit net, send 1 seems like the safest

> > > option. If we're lucky Johan can still send patch 2 for 5.11, otherwise

> > > we'll wait until the merge window - we're at rc7 already, it won't take

> > > too long.  

> > 

> > I usually don't send on new device-ids this late in the release cycle,

> > so I'll queue the USB-serial one up for 5.12-rc1 and you can take this

> > one through net-next.

> 

> s/net-next/net/  Sound like a plan, thanks!


I did mean net-next so that both would end up in -rc1 and allowing you
to apply it straight away, but either works. :)

While there is a dependency of sort here, it's not the end of the world
if the networking one goes in before the USB-serial one; the serial
driver might just continue to claim those ports a while longer in some
setups (depending on probe order).

Johan
diff mbox series

Patch

diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index cc4819282820..a0bf7737402f 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1235,6 +1235,7 @@  static const struct usb_device_id products[] = {
 	{QMI_FIXED_INTF(0x19d2, 0x1255, 4)},
 	{QMI_FIXED_INTF(0x19d2, 0x1256, 4)},
 	{QMI_FIXED_INTF(0x19d2, 0x1270, 5)},	/* ZTE MF667 */
+	{QMI_FIXED_INTF(0x19d2, 0x1275, 3)},	/* ZTE P685M */
 	{QMI_FIXED_INTF(0x19d2, 0x1401, 2)},
 	{QMI_FIXED_INTF(0x19d2, 0x1402, 2)},	/* ZTE MF60 */
 	{QMI_FIXED_INTF(0x19d2, 0x1424, 2)},