Re: [PATCH] USB: serial: option: add Fibocom L7xx modules

From: Victor Fragoso
Date: Fri Oct 27 2023 - 13:55:35 EST


On Thu, 2023-10-26 at 08:49 -0500, Dan Williams wrote:
> On Thu, 2023-10-26 at 01:24 +0000, Victor Fragoso wrote:
> > Add support for Fibocom L7xx module series and variants.
> >
> > L716-EU-60 (ECM):
> > T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 17 Spd=480  MxCh= 0
> > D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> > P:  Vendor=19d2 ProdID=0579 Rev= 1.00
> > S:  Manufacturer=Fibocom,Incorporated
> > S:  Product=Fibocom Mobile Boardband
> > S:  SerialNumber=1234567890ABCDEF
> > C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
> > 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=87(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=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=ff Prot=ff 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#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
> > E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> >
> > L716-EU-60 (RNDIS):
> > T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 21 Spd=480  MxCh= 0
> > D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> > P:  Vendor=2cb7 ProdID=0001 Rev= 1.00
> > S:  Manufacturer=Fibocom,Incorporated
> > S:  Product=Fibocom Mobile Boardband
> > S:  SerialNumber=1234567890ABCDEF
> > C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
> > 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=87(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=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=ff Prot=ff 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#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
> > E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> >
> > L716-EU-10 (ECM):
> > T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 21 Spd=480  MxCh= 0
> > D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> > P:  Vendor=2cb7 ProdID=0001 Rev= 1.00
> > S:  Manufacturer=Fibocom,Incorporated
> > S:  Product=Fibocom Mobile Boardband
> > S:  SerialNumber=1234567890ABCDEF
> > C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
> > 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=87(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=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=ff Prot=ff 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#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
> > E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> >
> > Signed-off-by: Victor Fragoso <victorffs@xxxxxxxxxxx>
> > ---
> >  drivers/usb/serial/option.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> > index 45dcfaadaf98..4ba3dc352d65 100644
> > --- a/drivers/usb/serial/option.c
> > +++ b/drivers/usb/serial/option.c
> > @@ -2262,6 +2262,11 @@ static const struct usb_device_id option_ids[] =
> > {
> >         { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff)
> > },                      /* Fibocom FM101-GL (laptop MBIM) */
> >         { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4,
> > 0xff),                  /* Fibocom FM101-GL (laptop MBIM) */
>
> It looks like your mail client wrapped long lines; you'll want to
> resend with a "preformatted" option or something, or use "git send-
> email" to make sure the formatting doesn't get screwed up.
>
> Also, are you at all able to give hints in the comments about what kind
> of ports these are? AT? GPS? PPP? etc? That's usually described in the
> driver documentation or in the Windows drivers themselves.
>
> Dan
>
> >           .driver_info = RSVD(4) },
> > +       { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0001, 0xff, 0xff,
> > 0xff) },        /* Fibocom L71x */
> > +       { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0001, 0x0a, 0x00,
> > 0xff) },        /* Fibocom L71x */
> > +       { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0100, 0xff, 0xff,
> > 0xff) },        /* Fibocom L71x */
> > +       { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0x0256, 0xff, 0xff,
> > 0xff) },        /* Fibocom L71x */
> > +       { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0x0579, 0xff, 0xff,
> > 0xff) },        /* Fibocom L71x */
> >         { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff)
> > },                      /* LongSung M5710 */
> >         { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff)
> > },                      /* GosunCn GM500 RNDIS */
> >         { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff)
> > },                      /* GosunCn GM500 MBIM */
> > --
> > 2.34.1
> >
> >
>

Hi Dan, sorry about the wrapped lines. I hope will be right for next
one.

About the hints on comments (AT, PPP, etc) I am not so sure if I should
add other hints.
As I've mentioned on the other email to Lars:
I am a Field Application Enginner at Fibocom Brazil and I am using the
IDs from our internal and official documentation.
This IDs will guarantee that can be used on all the variants devices
from L71x series.
For example, the 0x2cb7 0x0001 can be used by L716-EU on RNDIS, L716-
EU-10 on ECM and L710 too. While 19d2 0579 can be used by L716-EU-60 on
ECM and probably other variants.

So, to avoid any misunderstand I prefer to keep it simple and mention
just as L71x series.

What do you think?

Victor Fragoso