| From 714adff9a6271b5f1664b04c944b598141ebfe73 Mon Sep 17 00:00:00 2001 |
| From: Sven Schwermer <sven.schwermer@disruptive-technologies.com> |
| Date: Mon, 25 Apr 2022 16:34:49 +0200 |
| Subject: USB: serial: option: add Fibocom L610 modem |
| |
| From: Sven Schwermer <sven.schwermer@disruptive-technologies.com> |
| |
| commit 714adff9a6271b5f1664b04c944b598141ebfe73 upstream. |
| |
| The L610 modem has 3 USB configurations that are configurable via the AT |
| command AT+GTUSBMODE={31,32,33} which make the modem enumerate with the |
| following interfaces, respectively: |
| |
| 31: Modem + NV + MOS + Diag + LOG + AT + AT |
| 32: ECM + Modem + NV + MOS + Diag + LOG + AT + AT |
| 33: RNDIS + Modem + NV + MOS + Diag + LOG + AT + AT |
| |
| A detailed description of the USB configuration for each mode follows: |
| |
| +GTUSBMODE: 31 |
| -------------- |
| T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=124 Spd=480 MxCh= 0 |
| D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 |
| P: Vendor=1782 ProdID=4d10 Rev= 0.00 |
| S: Manufacturer=FIBOCOM |
| S: Product=L610 |
| C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=400mA |
| I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| 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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=83(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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=84(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=00 Prot=00 Driver=option |
| E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| |
| +GTUSBMODE: 32 |
| -------------- |
| T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=122 Spd=480 MxCh= 0 |
| D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 |
| P: Vendor=1782 ProdID=4d11 Rev= 0.00 |
| S: Manufacturer=FIBOCOM |
| S: Product=L610 |
| C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA |
| A: FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00 |
| I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether |
| E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=32ms |
| I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether |
| I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether |
| E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| |
| +GTUSBMODE: 33 |
| -------------- |
| T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=126 Spd=480 MxCh= 0 |
| D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 |
| P: Vendor=1782 ProdID=4d11 Rev= 0.00 |
| S: Manufacturer=FIBOCOM |
| S: Product=L610 |
| C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA |
| A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03 |
| I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host |
| E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=4096ms |
| I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host |
| E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option |
| E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| |
| Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.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 | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/usb/serial/option.c |
| +++ b/drivers/usb/serial/option.c |
| @@ -2125,6 +2125,8 @@ static const struct usb_device_id option |
| .driver_info = RSVD(3) }, |
| { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ |
| .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, |
| + { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */ |
| + { USB_DEVICE_INTERFACE_CLASS(0x1782, 0x4d11, 0xff) }, /* Fibocom L610 (ECM/RNDIS mode) */ |
| { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */ |
| .driver_info = RSVD(4) | RSVD(5) }, |
| { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ |