diff mbox series

USB: serial: option: add support for Foxconn T99W651

Message ID 20240705081709.105496-1-slark_xiao@163.com
State New
Headers show
Series USB: serial: option: add support for Foxconn T99W651 | expand

Commit Message

Slark Xiao July 5, 2024, 8:17 a.m. UTC
T99W651 is a RNDIS based modem device. There are 3 serial ports
need to be enumerated: Diag, NMEA and AT.

Test evidence as below:
T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0489 ProdID=e145 Rev=05.15
S:  Manufacturer=QCOM
S:  Product=SDXPINN-IDP _SN:93B562B2
S:  SerialNumber=82e6fe26
C:  #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
I:  If#=0x5 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
I:  If#=0x6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

0&1: RNDIS, 2:AT, 3:NMEA, 4:DIAG, 5:QDSS, 6:ADB
QDSS is not a serial port.

Signed-off-by: Slark Xiao <slark_xiao@163.com>
---
 drivers/usb/serial/option.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Slark Xiao Sept. 2, 2024, 3:59 a.m. UTC | #1
At 2024-07-05 17:39:56, "Greg KH" <gregkh@linuxfoundation.org> wrote:
>On Fri, Jul 05, 2024 at 05:34:06PM +0800, Slark Xiao wrote:
>> 
>> At 2024-07-05 17:22:13, "Johan Hovold" <johan@kernel.org> wrote:
>> >On Fri, Jul 05, 2024 at 05:11:22PM +0800, Slark Xiao wrote:
>> >
>> >> I have a concern about the test result of "usb-devices" in Ubuntu
>> >> 22.04. Do you know why it wouldn't show our devices any more? 
>> >
>> >No, sorry, no idea. Everything seems to work here with the latest
>> >usbutils-017.
>> >
>> >Is it just your devices that no longer show up or doesn't it work at
>> >all?
>> >
>> A lot of devices missed in Ubuntu 22.04, especially for modem devices.
>> Nothing would be printed for modem devices.
>
>What specific version of usbutils are you using?
>
>If you pull from the github repo, can you try the version there?
>
>And if that has problems, a diff of both working and not-working would
>be great.
>
>thanks,
>
>greg k-h
Hi Greg,
I reproduced this issue again. And now I checked it with different usbutils
version one by one.  Version 014 has this issue. Both 013 and 015 works well.
Please see attached log:

//V013
jbd@jbd-Precision-3490:~/usb-utils/usbutils-013$ lsusb -V
lsusb (usbutils) 013
jbd@jbd-Precision-3490:~/usb-utils/usbutils-013$ usb-devices 

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 1
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=20000 MxCh= 4
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=12
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=03 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0033 Rev=00.00
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

T:  Bus=03 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  8 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=046d ProdID=c534 Rev=51.00
S:  Manufacturer=Logitech
S:  Product=USB Receiver
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

//Modem device could be found
T:  Bus=03 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  5 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1e2d ProdID=00f1 Rev=05.04
S:  Manufacturer=Cinterion
S:  Product=Cinterion PID 0x00F1 USB Mobile Broadband
S:  SerialNumber=ea1054e8
C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option

T:  Bus=03 Lev=01 Prnt=01 Port=05 Cnt=04 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.01 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=5587 Rev=34.31
S:  Manufacturer=CN0997FY8LG003AJA0A6X02
S:  Product=Integrated_Webcam_FHD
S:  SerialNumber=200901010001
C:  #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I:  If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
I:  If#=0x2 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)

T:  Bus=03 Lev=01 Prnt=01 Port=07 Cnt=05 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0a5c ProdID=5865 Rev=01.01
S:  Manufacturer=Broadcom Corp
S:  Product=58200
S:  SerialNumber=0123456789ABCD
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=fe(app. ) Sub=00 Prot=00 Driver=(none)
I:  If#=0x1 Alt= 0 #EPs= 3 Cls=0b(scard) Sub=00 Prot=00 Driver=(none)

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=20000 MxCh= 2
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller

//V014
jbd@jbd-Precision-3490:~/usb-utils/usbutils-014$ lsusb -V
lsusb (usbutils) 014
jbd@jbd-Precision-3490:~/usb-utils/usbutils-014$ usb-devices 

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 1
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=20000 MxCh= 4
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=12
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0033 Rev=00.00
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=20000 MxCh= 2
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=06.10
S:  Manufacturer=Linux 6.10.6 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

Not only modem device is missing, some other device can't be found in V014
as well:

P:  Vendor=046d ProdID=c534 Rev=51.00
S:  Manufacturer=Logitech 

P:  Vendor=0bda ProdID=5587 Rev=34.31
S:  Manufacturer=CN0997FY8LG003AJA0A6X02
S:  Product=Integrated_Webcam_FHD

P:  Vendor=0a5c ProdID=5865 Rev=01.01
S:  Manufacturer=Broadcom Corp

Please help check which commit was merged for this issue?
Or this issue was not be found , but fixed in other commits?
If you need more logs please let me know.

Thanks
Greg KH Sept. 2, 2024, 5:59 a.m. UTC | #2
On Mon, Sep 02, 2024 at 11:59:42AM +0800, Slark Xiao wrote:
> At 2024-07-05 17:39:56, "Greg KH" <gregkh@linuxfoundation.org> wrote:
> >On Fri, Jul 05, 2024 at 05:34:06PM +0800, Slark Xiao wrote:
> >> 
> >> At 2024-07-05 17:22:13, "Johan Hovold" <johan@kernel.org> wrote:
> >> >On Fri, Jul 05, 2024 at 05:11:22PM +0800, Slark Xiao wrote:
> >> >
> >> >> I have a concern about the test result of "usb-devices" in Ubuntu
> >> >> 22.04. Do you know why it wouldn't show our devices any more? 
> >> >
> >> >No, sorry, no idea. Everything seems to work here with the latest
> >> >usbutils-017.
> >> >
> >> >Is it just your devices that no longer show up or doesn't it work at
> >> >all?
> >> >
> >> A lot of devices missed in Ubuntu 22.04, especially for modem devices.
> >> Nothing would be printed for modem devices.
> >
> >What specific version of usbutils are you using?
> >
> >If you pull from the github repo, can you try the version there?
> >
> >And if that has problems, a diff of both working and not-working would
> >be great.
> >
> >thanks,
> >
> >greg k-h
> Hi Greg,
> I reproduced this issue again. And now I checked it with different usbutils
> version one by one.  Version 014 has this issue. Both 013 and 015 works well.
> Please see attached log:

So this is fine now with the latest version?  Note that 015 was released
way back in 2022 and that is even quite old, 017 is the latest release
of usbutils.

A problem in usb-devices was fixed in the 015 release, dealing with
recursion and overwriting existing variables, so odds are that is what
fixed the problem you were having.  Please just use that or newer and
all should be fine.

thanks,

greg k-h
Slark Xiao Sept. 2, 2024, 6:46 a.m. UTC | #3
At 2024-09-02 13:59:28, "Greg KH" <gregkh@linuxfoundation.org> wrote:
>On Mon, Sep 02, 2024 at 11:59:42AM +0800, Slark Xiao wrote:
>> At 2024-07-05 17:39:56, "Greg KH" <gregkh@linuxfoundation.org> wrote:
>> >On Fri, Jul 05, 2024 at 05:34:06PM +0800, Slark Xiao wrote:
>> >> 
>> >> At 2024-07-05 17:22:13, "Johan Hovold" <johan@kernel.org> wrote:
>> >> >On Fri, Jul 05, 2024 at 05:11:22PM +0800, Slark Xiao wrote:
>> >> >
>> >> >> I have a concern about the test result of "usb-devices" in Ubuntu
>> >> >> 22.04. Do you know why it wouldn't show our devices any more? 
>> >> >
>> >> >No, sorry, no idea. Everything seems to work here with the latest
>> >> >usbutils-017.
>> >> >
>> >> >Is it just your devices that no longer show up or doesn't it work at
>> >> >all?
>> >> >
>> >> A lot of devices missed in Ubuntu 22.04, especially for modem devices.
>> >> Nothing would be printed for modem devices.
>> >
>> >What specific version of usbutils are you using?
>> >
>> >If you pull from the github repo, can you try the version there?
>> >
>> >And if that has problems, a diff of both working and not-working would
>> >be great.
>> >
>> >thanks,
>> >
>> >greg k-h
>> Hi Greg,
>> I reproduced this issue again. And now I checked it with different usbutils
>> version one by one.  Version 014 has this issue. Both 013 and 015 works well.
>> Please see attached log:
>
>So this is fine now with the latest version?  Note that 015 was released
>way back in 2022 and that is even quite old, 017 is the latest release
>of usbutils.
>
>A problem in usb-devices was fixed in the 015 release, dealing with
>recursion and overwriting existing variables, so odds are that is what
>fixed the problem you were having.  Please just use that or newer and
>all should be fine.
>
>thanks,
>
>greg k-h
Yeah, now I am using V017. BTW, the default of usbutils of Ubuntu 22.04.4 LTS is 014.
So may I know do you have any plan to fix it since 22.04 LTS still under maintain.

Thanks
Greg KH Sept. 2, 2024, 6:52 a.m. UTC | #4
On Mon, Sep 02, 2024 at 02:46:04PM +0800, Slark Xiao wrote:
> 
> At 2024-09-02 13:59:28, "Greg KH" <gregkh@linuxfoundation.org> wrote:
> >On Mon, Sep 02, 2024 at 11:59:42AM +0800, Slark Xiao wrote:
> >> At 2024-07-05 17:39:56, "Greg KH" <gregkh@linuxfoundation.org> wrote:
> >> >On Fri, Jul 05, 2024 at 05:34:06PM +0800, Slark Xiao wrote:
> >> >> 
> >> >> At 2024-07-05 17:22:13, "Johan Hovold" <johan@kernel.org> wrote:
> >> >> >On Fri, Jul 05, 2024 at 05:11:22PM +0800, Slark Xiao wrote:
> >> >> >
> >> >> >> I have a concern about the test result of "usb-devices" in Ubuntu
> >> >> >> 22.04. Do you know why it wouldn't show our devices any more? 
> >> >> >
> >> >> >No, sorry, no idea. Everything seems to work here with the latest
> >> >> >usbutils-017.
> >> >> >
> >> >> >Is it just your devices that no longer show up or doesn't it work at
> >> >> >all?
> >> >> >
> >> >> A lot of devices missed in Ubuntu 22.04, especially for modem devices.
> >> >> Nothing would be printed for modem devices.
> >> >
> >> >What specific version of usbutils are you using?
> >> >
> >> >If you pull from the github repo, can you try the version there?
> >> >
> >> >And if that has problems, a diff of both working and not-working would
> >> >be great.
> >> >
> >> >thanks,
> >> >
> >> >greg k-h
> >> Hi Greg,
> >> I reproduced this issue again. And now I checked it with different usbutils
> >> version one by one.  Version 014 has this issue. Both 013 and 015 works well.
> >> Please see attached log:
> >
> >So this is fine now with the latest version?  Note that 015 was released
> >way back in 2022 and that is even quite old, 017 is the latest release
> >of usbutils.
> >
> >A problem in usb-devices was fixed in the 015 release, dealing with
> >recursion and overwriting existing variables, so odds are that is what
> >fixed the problem you were having.  Please just use that or newer and
> >all should be fine.
> >
> >thanks,
> >
> >greg k-h
> Yeah, now I am using V017. BTW, the default of usbutils of Ubuntu 22.04.4 LTS is 014.
> So may I know do you have any plan to fix it since 22.04 LTS still under maintain.

How can I go back in time to fix that version?  :)

That's up to Ubuntu to resolve, there's nothing I can do, sorry.  Please
contact them and get them to resolve it as that's what your support
contract with them should provide.

good luck!

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 178760bc7b92..4a43cec86db7 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -2294,6 +2294,8 @@  static const struct usb_device_id option_ids[] = {
 	  .driver_info = RSVD(3) },
 	{ USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0f0, 0xff),			/* Foxconn T99W373 MBIM */
 	  .driver_info = RSVD(3) },
+	{ USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe145, 0xff),			/* Foxconn T99W651 RNDIS */
+	  .driver_info = RSVD(5) | RSVD(6) },
 	{ USB_DEVICE(0x1508, 0x1001),						/* Fibocom NL668 (IOT version) */
 	  .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
 	{ USB_DEVICE(0x1782, 0x4d10) },						/* Fibocom L610 (AT mode) */