* [PATCH v2] USB: serial: option: add support for SIMCom SIM8260C
@ 2026-08-17 1:40 Zhao Dongdong
2026-08-17 6:40 ` Johan Hovold
0 siblings, 1 reply; 3+ messages in thread
From: Zhao Dongdong @ 2026-08-17 1:40 UTC (permalink / raw)
To: johan, gregkh; +Cc: linux-usb, linux-kernel, Zhao Dongdong
From: Zhao Dongdong <zhaodongdong@kylinos.cn>
Add support for SIMCom SIM8260C (1e0e:902b).
T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=1e0e ProdID=902b Rev= 5.04
S: Manufacturer=SIMCOM
S: Product=SDXLEMUR-LITE-MTP _SN:120696AB
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=896mA
A: FirstIf#= 5 IfCount= 3 Cls=01(audio) Sub=00 Prot=20
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan_simcom
E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
I:* If#= 6 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
I: If#= 6 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
E: Ad=05(O) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
I:* If#= 7 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=option
I: If#= 7 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=option
E: Ad=89(I) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn>
---
v2: Modify the order.
v1: https://lore.kernel.org/all/tencent_CDB9F0B44FDD051447DCF48862B8E764E80A@qq.com/
---
---
drivers/usb/serial/option.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 580f06f5ce5e..e52f3fe6ccd9 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -2168,6 +2168,8 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */
{ USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */
.driver_info = RSVD(7) },
+ { USB_DEVICE(0x1e0e, 0x902b),
+ .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
{ USB_DEVICE(0x1e0e, 0x9071), /* Simcom SIM8230 RMNET mode */
.driver_info = RSVD(3) | RSVD(4) },
{ USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9078, 0xff), /* Simcom SIM8230 ECM mode */
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2] USB: serial: option: add support for SIMCom SIM8260C
2026-08-17 1:40 [PATCH v2] USB: serial: option: add support for SIMCom SIM8260C Zhao Dongdong
@ 2026-08-17 6:40 ` Johan Hovold
2026-08-17 7:12 ` Zhao Dongdong
0 siblings, 1 reply; 3+ messages in thread
From: Johan Hovold @ 2026-08-17 6:40 UTC (permalink / raw)
To: Zhao Dongdong; +Cc: gregkh, linux-usb, linux-kernel, Zhao Dongdong
On Mon, Aug 17, 2026 at 09:40:05AM +0800, Zhao Dongdong wrote:
> From: Zhao Dongdong <zhaodongdong@kylinos.cn>
>
> Add support for SIMCom SIM8260C (1e0e:902b).
>
> T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0
> D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
> P: Vendor=1e0e ProdID=902b Rev= 5.04
> S: Manufacturer=SIMCOM
> S: Product=SDXLEMUR-LITE-MTP _SN:120696AB
> S: SerialNumber=0123456789ABCDEF
> C:* #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=896mA
> A: FirstIf#= 5 IfCount= 3 Cls=01(audio) Sub=00 Prot=20
> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
> E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
> E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan_simcom
> E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
> E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> I:* If#= 5 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
> I:* If#= 6 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
> I: If#= 6 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
> E: Ad=05(O) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
> I:* If#= 7 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=option
> I: If#= 7 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=option
As you can see here, you should only match on vendor class interfaces to
avoid probing the audio interfaces.
> E: Ad=89(I) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
>
> Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn>
> ---
> v2: Modify the order.
> v1: https://lore.kernel.org/all/tencent_CDB9F0B44FDD051447DCF48862B8E764E80A@qq.com/
> ---
> ---
> drivers/usb/serial/option.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> index 580f06f5ce5e..e52f3fe6ccd9 100644
> --- a/drivers/usb/serial/option.c
> +++ b/drivers/usb/serial/option.c
> @@ -2168,6 +2168,8 @@ static const struct usb_device_id option_ids[] = {
> { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */
> { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */
> .driver_info = RSVD(7) },
> + { USB_DEVICE(0x1e0e, 0x902b),
> + .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
That is, use USB_DEVICE_INTERFACE_CLASS() here and only reserve
interface 4.
> { USB_DEVICE(0x1e0e, 0x9071), /* Simcom SIM8230 RMNET mode */
> .driver_info = RSVD(3) | RSVD(4) },
> { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9078, 0xff), /* Simcom SIM8230 ECM mode */
Johan
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH v2] USB: serial: option: add support for SIMCom SIM8260C
2026-08-17 6:40 ` Johan Hovold
@ 2026-08-17 7:12 ` Zhao Dongdong
0 siblings, 0 replies; 3+ messages in thread
From: Zhao Dongdong @ 2026-08-17 7:12 UTC (permalink / raw)
To: johan; +Cc: gregkh, linux-kernel, linux-usb, winter91, zhaodongdong
On Mon, 17 Aug 2026 08:40:48 +0200, Johan Hovold <johan@kernel.org> wrote:
>
> On Mon, Aug 17, 2026 at 09:40:05AM +0800, Zhao Dongdong wrote:
> > From: Zhao Dongdong <zhaodongdong@kylinos.cn>
> >
> > Add support for SIMCom SIM8260C (1e0e:902b).
> >
> > T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0
> > D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
> > P: Vendor=1e0e ProdID=902b Rev= 5.04
> > S: Manufacturer=SIMCOM
> > S: Product=SDXLEMUR-LITE-MTP _SN:120696AB
> > S: SerialNumber=0123456789ABCDEF
> > C:* #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=896mA
> > A: FirstIf#= 5 IfCount= 3 Cls=01(audio) Sub=00 Prot=20
> > I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
> > E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
> > E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> > E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> > E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> > E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> > E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> > E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan_simcom
> > E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
> > E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 5 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
> > I:* If#= 6 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
> > I: If#= 6 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
> > E: Ad=05(O) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
> > I:* If#= 7 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=option
> > I: If#= 7 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=option
>
> As you can see here, you should only match on vendor class interfaces to
> avoid probing the audio interfaces.
>
> > E: Ad=89(I) Atr=0d(Isoc) MxPS= 34 Ivl=1ms
> >
> > Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn>
> > ---
> > v2: Modify the order.
> > v1: https://lore.kernel.org/all/tencent_CDB9F0B44FDD051447DCF48862B8E764E80A@qq.com/
> > ---
> > ---
> > drivers/usb/serial/option.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> > index 580f06f5ce5e..e52f3fe6ccd9 100644
> > --- a/drivers/usb/serial/option.c
> > +++ b/drivers/usb/serial/option.c
> > @@ -2168,6 +2168,8 @@ static const struct usb_device_id option_ids[] = {
> > { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */
> > { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */
> > .driver_info = RSVD(7) },
> > + { USB_DEVICE(0x1e0e, 0x902b),
> > + .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
>
> That is, use USB_DEVICE_INTERFACE_CLASS() here and only reserve
> interface 4.
>
> > { USB_DEVICE(0x1e0e, 0x9071), /* Simcom SIM8230 RMNET mode */
> > .driver_info = RSVD(3) | RSVD(4) },
> > { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9078, 0xff), /* Simcom SIM8230 ECM mode */
>
> Johan
Thanks. I get it.
--
Regards,
Zhao Dongdong
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-17 7:13 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-17 1:40 [PATCH v2] USB: serial: option: add support for SIMCom SIM8260C Zhao Dongdong
2026-08-17 6:40 ` Johan Hovold
2026-08-17 7:12 ` Zhao Dongdong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox