mbox series

[v2,0/2] usb: add full support for ZTE P685M modem

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

Message

Lech Perczak Feb. 5, 2021, 5:39 p.m. UTC
This modem is used in ZTE MF283+ LTE SOHO router, and carriers usually
identify it as such. This series is a part of effort to get this router
fully supported by OpenWrt. With this series, all interfaces of the modem
are fully supported, and it can establish connection through QMI interface.


Lech Perczak (2):
  net: usb: qmi_wwan: support ZTE P685M modem
  usb: serial: option: add full support for ZTE P685M

 drivers/net/usb/qmi_wwan.c  | 1 +
 drivers/usb/serial/option.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

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!