diff mbox series

[2/2] usb: serial: option: add AT ports for ZTE P685M

Message ID 20210204215130.27656-1-lech.perczak@gmail.com
State New
Headers show
Series [1/2] net: usb: qmi_wwan: support ZTE P685M modem | expand

Commit Message

Lech Perczak Feb. 4, 2021, 9:51 p.m. UTC
Only 1st (DIAG) port was supported, support ports 1 (PCUI) and 2 (Modem)
on ff/00/00 too. Ports expose AT command interface.

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>
---
 drivers/usb/serial/option.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Lars Melin Feb. 5, 2021, 6:30 a.m. UTC | #1
On 2/5/2021 04:51, Lech Perczak wrote:
> Only 1st (DIAG) port was supported, support ports 1 (PCUI) and 2 (Modem)

> on ff/00/00 too. Ports expose AT command interface.

> 

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

> ---

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

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

> 

> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c

> index 3fe959104311..087520afdbde 100644

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

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

> @@ -1567,7 +1567,8 @@ static const struct usb_device_id option_ids[] = {

>   	{ 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_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0x00, 0x00) }, /* ZTE P685M AT */

> +	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) }, /* ZTE P685M QCDM */

>   	{ 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) },

> 


You'll need to blacklist the net interface which also has the attributes 
ff/ff/ff, if you don't then the option driver could steal it.

You can simplify the entry for the device to:
{ USB_DEVICE(ZTE_VENDOR_ID, 0x1275),
  .driver_info = RSVD(3) | RSVD(4) },


thanks
Lars
diff mbox series

Patch

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 3fe959104311..087520afdbde 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1567,7 +1567,8 @@  static const struct usb_device_id option_ids[] = {
 	{ 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_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0x00, 0x00) }, /* ZTE P685M AT */
+	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) }, /* ZTE P685M QCDM */
 	{ 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) },