mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] USB: serial: option: add Fibocom FM350-GL
@ 2024-06-26 13:32 Bjørn Mork
  2024-06-27  7:35 ` Johan Hovold
  0 siblings, 1 reply; 4+ messages in thread
From: Bjørn Mork @ 2024-06-26 13:32 UTC (permalink / raw)
  To: linux-usb
  Cc: Johan Hovold, Greg Kroah-Hartman, linux-kernel, Bjørn Mork, stable

FM350-GL is 5G Sub-6 WWAN module which uses M.2 form factor interface.
It is based on Mediatek's MTK T700 CPU. The module supports PCIe Gen3
x1 and USB 2.0 and 3.0 interfaces.

The manufacturer states that USB is "for debug" but it has been
confirmed to be fully functional, except for modem-control requests on
some of the interfaces.

USB device composition is controlled by AT+GTUSBMODE=<mode> command.
Two values are currently supported for the <mode>:

40: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB
41: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB+AP(LOG)+AP(META)(default value)

Mode 40 corresponds to:

T:  Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 22 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0e8d ProdID=7126 Rev= 0.01
S:  Manufacturer=Fibocom Wireless Inc.
S:  Product=FM350-GL
C:* #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=ff Driver=rndis_host
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=125us
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=42 Prot=01 Driver=(none)
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

Mode 41 corresponds to:

T:  Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0e8d ProdID=7127 Rev= 0.01
S:  Manufacturer=Fibocom Wireless Inc.
S:  Product=FM350-GL
C:* #Ifs=10 Cfg#= 1 Atr=a0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=ff Driver=rndis_host
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=125us
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=42 Prot=01 Driver=(none)
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
I:* If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Cc: stable@vger.kernel.org
Signed-off-by: Bjørn Mork <bjorn@mork.no>
---
 drivers/usb/serial/option.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 8a5846d4adf6..599439bddfb7 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -2224,6 +2224,10 @@ static const struct usb_device_id option_ids[] = {
 	{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x7126, 0xff, 0x00, 0x00),
+	  .driver_info = NCTRL(2) },
+	{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x7127, 0xff, 0x00, 0x00),
+	  .driver_info = NCTRL(2) | NCTRL(3) | NCTRL(4) },
 	{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
 	{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MPL200),
 	  .driver_info = RSVD(1) | RSVD(4) },
-- 
2.39.2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] USB: serial: option: add Fibocom FM350-GL
  2024-06-26 13:32 [PATCH] USB: serial: option: add Fibocom FM350-GL Bjørn Mork
@ 2024-06-27  7:35 ` Johan Hovold
  2024-06-27  8:09   ` Bjørn Mork
  0 siblings, 1 reply; 4+ messages in thread
From: Johan Hovold @ 2024-06-27  7:35 UTC (permalink / raw)
  To: Bjørn Mork; +Cc: linux-usb, Greg Kroah-Hartman, linux-kernel, stable

On Wed, Jun 26, 2024 at 03:32:23PM +0200, Bjørn Mork wrote:
> FM350-GL is 5G Sub-6 WWAN module which uses M.2 form factor interface.
> It is based on Mediatek's MTK T700 CPU. The module supports PCIe Gen3
> x1 and USB 2.0 and 3.0 interfaces.
> 
> The manufacturer states that USB is "for debug" but it has been
> confirmed to be fully functional, except for modem-control requests on
> some of the interfaces.
> 
> USB device composition is controlled by AT+GTUSBMODE=<mode> command.
> Two values are currently supported for the <mode>:
> 
> 40: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB
> 41: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB+AP(LOG)+AP(META)(default value)

The order here does not seem to match the usb-devices output below (e.g.
with ADB as interface 3 and 5, respectively). 

Could you just update these two lines so we the interface mapping right?

Johan

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] USB: serial: option: add Fibocom FM350-GL
  2024-06-27  7:35 ` Johan Hovold
@ 2024-06-27  8:09   ` Bjørn Mork
  2024-06-27  8:21     ` Johan Hovold
  0 siblings, 1 reply; 4+ messages in thread
From: Bjørn Mork @ 2024-06-27  8:09 UTC (permalink / raw)
  To: Johan Hovold; +Cc: linux-usb, Greg Kroah-Hartman, linux-kernel, stable

Johan Hovold <johan@kernel.org> writes:
> On Wed, Jun 26, 2024 at 03:32:23PM +0200, Bjørn Mork wrote:
>> FM350-GL is 5G Sub-6 WWAN module which uses M.2 form factor interface.
>> It is based on Mediatek's MTK T700 CPU. The module supports PCIe Gen3
>> x1 and USB 2.0 and 3.0 interfaces.
>> 
>> The manufacturer states that USB is "for debug" but it has been
>> confirmed to be fully functional, except for modem-control requests on
>> some of the interfaces.
>> 
>> USB device composition is controlled by AT+GTUSBMODE=<mode> command.
>> Two values are currently supported for the <mode>:
>> 
>> 40: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB
>> 41: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB+AP(LOG)+AP(META)(default value)
>
> The order here does not seem to match the usb-devices output below (e.g.
> with ADB as interface 3 and 5, respectively). 
>
> Could you just update these two lines so we the interface mapping right?

Thanks, I didn't notice that.

This part was copied from the Fibocom AT+GTUSBMODE documentation and
seems to list supported functions independently of the resulting USB
interface order.

I'm afraid I can't verify the actual order since I don't have access to
this module myself, and there is no way to tell the AT, GNSS, META,
DEBUG, NPT and LOG functons from eacohother based on USB descriptors.

The best I can do is dropping these two lines. Is that better?



Bjørn

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] USB: serial: option: add Fibocom FM350-GL
  2024-06-27  8:09   ` Bjørn Mork
@ 2024-06-27  8:21     ` Johan Hovold
  0 siblings, 0 replies; 4+ messages in thread
From: Johan Hovold @ 2024-06-27  8:21 UTC (permalink / raw)
  To: Bjørn Mork; +Cc: linux-usb, Greg Kroah-Hartman, linux-kernel, stable

On Thu, Jun 27, 2024 at 10:09:31AM +0200, Bjørn Mork wrote:
> Johan Hovold <johan@kernel.org> writes:
> > On Wed, Jun 26, 2024 at 03:32:23PM +0200, Bjørn Mork wrote:
> >> FM350-GL is 5G Sub-6 WWAN module which uses M.2 form factor interface.
> >> It is based on Mediatek's MTK T700 CPU. The module supports PCIe Gen3
> >> x1 and USB 2.0 and 3.0 interfaces.
> >> 
> >> The manufacturer states that USB is "for debug" but it has been
> >> confirmed to be fully functional, except for modem-control requests on
> >> some of the interfaces.
> >> 
> >> USB device composition is controlled by AT+GTUSBMODE=<mode> command.
> >> Two values are currently supported for the <mode>:
> >> 
> >> 40: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB
> >> 41: RNDIS+AT+AP(GNSS)+META+DEBUG+NPT+ADB+AP(LOG)+AP(META)(default value)
> >
> > The order here does not seem to match the usb-devices output below (e.g.
> > with ADB as interface 3 and 5, respectively). 
> >
> > Could you just update these two lines so we the interface mapping right?
> 
> Thanks, I didn't notice that.
> 
> This part was copied from the Fibocom AT+GTUSBMODE documentation and
> seems to list supported functions independently of the resulting USB
> interface order.
> 
> I'm afraid I can't verify the actual order since I don't have access to
> this module myself, and there is no way to tell the AT, GNSS, META,
> DEBUG, NPT and LOG functons from eacohother based on USB descriptors.
> 
> The best I can do is dropping these two lines. Is that better?

No, I'll just amend the commit message to clarify that the order is
unspecified. Thanks.

Johan

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-06-27  8:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-26 13:32 [PATCH] USB: serial: option: add Fibocom FM350-GL Bjørn Mork
2024-06-27  7:35 ` Johan Hovold
2024-06-27  8:09   ` Bjørn Mork
2024-06-27  8:21     ` Johan Hovold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®