* [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
@ 2025-07-08 12:00 Fabio Porcedda
2025-07-09 10:08 ` Johan Hovold
0 siblings, 1 reply; 4+ messages in thread
From: Fabio Porcedda @ 2025-07-08 12:00 UTC (permalink / raw)
To: Johan Hovold, Greg Kroah-Hartman; +Cc: linux-usb, Daniele Palmas, stable
Add Telit Cinterion FE910C04 (ECM) composition:
0x10c7: ECM + tty (AT) + tty (AT) + tty (diag)
usb-devices output:
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1bc7 ProdID=10c7 Rev=05.15
S: Manufacturer=Telit Cinterion
S: Product=FE910
S: SerialNumber=f71b8b32
C: #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
E: Ad=82(I) Atr=03(Int.) MxPS= 16 Ivl=32ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Cc: stable@vger.kernel.org
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---
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 c0c44e594d36..58b02a09b315 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -627,6 +627,7 @@ static void option_instat_callback(struct urb *urb);
/* Interface does not support modem-control requests */
#define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8)
+#define NCTRL_ALL (0xff << 8)
/* Interface is reserved */
#define RSVD(ifnum) ((BIT(ifnum) & 0xff) << 0)
@@ -1415,6 +1416,9 @@ static const struct usb_device_id option_ids[] = {
.driver_info = NCTRL(5) },
{ USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x40) },
{ USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x60) },
+ { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x30), /* Telit FE910C04 (ECM) */
+ .driver_info = NCTRL_ALL },
+ { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x40) },
{ USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x30), /* Telit FN990B (MBIM) */
.driver_info = NCTRL(6) },
{ USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x40) },
--
2.49.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
2025-07-08 12:00 [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition Fabio Porcedda
@ 2025-07-09 10:08 ` Johan Hovold
2025-07-09 10:50 ` Fabio Porcedda
0 siblings, 1 reply; 4+ messages in thread
From: Johan Hovold @ 2025-07-09 10:08 UTC (permalink / raw)
To: Fabio Porcedda; +Cc: Greg Kroah-Hartman, linux-usb, Daniele Palmas, stable
On Tue, Jul 08, 2025 at 02:00:04PM +0200, Fabio Porcedda wrote:
> Add Telit Cinterion FE910C04 (ECM) composition:
> 0x10c7: ECM + tty (AT) + tty (AT) + tty (diag)
>
> usb-devices output:
> T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
> D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
> P: Vendor=1bc7 ProdID=10c7 Rev=05.15
> S: Manufacturer=Telit Cinterion
> S: Product=FE910
> S: SerialNumber=f71b8b32
> C: #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
> I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
> E: Ad=82(I) Atr=03(Int.) MxPS= 16 Ivl=32ms
> I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
> E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> /* Interface does not support modem-control requests */
> #define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8)
> +#define NCTRL_ALL (0xff << 8)
>
> /* Interface is reserved */
> #define RSVD(ifnum) ((BIT(ifnum) & 0xff) << 0)
> @@ -1415,6 +1416,9 @@ static const struct usb_device_id option_ids[] = {
> .driver_info = NCTRL(5) },
> { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x40) },
> { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x60) },
> + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x30), /* Telit FE910C04 (ECM) */
> + .driver_info = NCTRL_ALL },
Please just use NCTRL(4) here. (And remember to mention additions like
this in the commit message in the future.)
Or do you have reasons to believe the interface numbering may change? Or
is it just to avoid matching on both number and protocol?
Perhaps we should try to generalise these rules at some point in case
there is some logic to it these days (e.g. 0x30 => diag and NCTRL)...
> + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x40) },
Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
2025-07-09 10:08 ` Johan Hovold
@ 2025-07-09 10:50 ` Fabio Porcedda
2025-07-10 14:26 ` Johan Hovold
0 siblings, 1 reply; 4+ messages in thread
From: Fabio Porcedda @ 2025-07-09 10:50 UTC (permalink / raw)
To: Johan Hovold; +Cc: Greg Kroah-Hartman, linux-usb, Daniele Palmas, stable
Il giorno mer 9 lug 2025 alle ore 12:08 Johan Hovold
<johan@kernel.org> ha scritto:
>
> On Tue, Jul 08, 2025 at 02:00:04PM +0200, Fabio Porcedda wrote:
> > Add Telit Cinterion FE910C04 (ECM) composition:
> > 0x10c7: ECM + tty (AT) + tty (AT) + tty (diag)
> >
> > usb-devices output:
> > T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
> > D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
> > P: Vendor=1bc7 ProdID=10c7 Rev=05.15
> > S: Manufacturer=Telit Cinterion
> > S: Product=FE910
> > S: SerialNumber=f71b8b32
> > C: #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
> > I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
> > E: Ad=82(I) Atr=03(Int.) MxPS= 16 Ivl=32ms
> > I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> > E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> > E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> > I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
> > E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
> > I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
> > E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> > E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
>
> > /* Interface does not support modem-control requests */
> > #define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8)
> > +#define NCTRL_ALL (0xff << 8)
> >
> > /* Interface is reserved */
> > #define RSVD(ifnum) ((BIT(ifnum) & 0xff) << 0)
> > @@ -1415,6 +1416,9 @@ static const struct usb_device_id option_ids[] = {
> > .driver_info = NCTRL(5) },
> > { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x40) },
> > { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x60) },
> > + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x30), /* Telit FE910C04 (ECM) */
> > + .driver_info = NCTRL_ALL },
>
> Please just use NCTRL(4) here. (And remember to mention additions like
> this in the commit message in the future.)
Ok, I will send a v2.
> Or do you have reasons to believe the interface numbering may change? Or
> is it just to avoid matching on both number and protocol?
The interface number should not change, it's just to have a more
generic definition that matches also other pids for the same soc. I
think it's easier to write and less error prone because the interface
number changes based on the PID.
> Perhaps we should try to generalise these rules at some point in case
> there is some logic to it these days (e.g. 0x30 => diag and NCTRL)...
At least for this SoC it's just like that (0x30 => diag and NCTRL) and
all interfaces with 0x40 and 0x60.
My modification was an attempt to go in that direction.
But It's not a rule so Qualcomm may change that for a new PID or new SoC.
>
> > + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x40) },
>
> Johan
Best regards
--
Fabio Porcedda
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
2025-07-09 10:50 ` Fabio Porcedda
@ 2025-07-10 14:26 ` Johan Hovold
0 siblings, 0 replies; 4+ messages in thread
From: Johan Hovold @ 2025-07-10 14:26 UTC (permalink / raw)
To: Fabio Porcedda; +Cc: Greg Kroah-Hartman, linux-usb, Daniele Palmas, stable
On Wed, Jul 09, 2025 at 12:50:27PM +0200, Fabio Porcedda wrote:
> Il giorno mer 9 lug 2025 alle ore 12:08 Johan Hovold
> <johan@kernel.org> ha scritto:
> >
> > On Tue, Jul 08, 2025 at 02:00:04PM +0200, Fabio Porcedda wrote:
> > > Add Telit Cinterion FE910C04 (ECM) composition:
> > > 0x10c7: ECM + tty (AT) + tty (AT) + tty (diag)
> > > /* Interface does not support modem-control requests */
> > > #define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8)
> > > +#define NCTRL_ALL (0xff << 8)
> > > + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x30), /* Telit FE910C04 (ECM) */
> > > + .driver_info = NCTRL_ALL },
> >
> > Please just use NCTRL(4) here. (And remember to mention additions like
> > this in the commit message in the future.)
>
> Ok, I will send a v2.
>
> > Or do you have reasons to believe the interface numbering may change? Or
> > is it just to avoid matching on both number and protocol?
>
> The interface number should not change, it's just to have a more
> generic definition that matches also other pids for the same soc. I
> think it's easier to write and less error prone because the interface
> number changes based on the PID.
Yeah, I can see it having some merit. Maybe I reacted to the naming as
I at first incorrectly read it as no interface supporting the control
request (perhaps naming it "NCTRL_ANY" would have avoided this).
But for consistency I think we can continue using the interface numbers
until we have some better abstraction for these that can be used to
avoid also the explicit per protocol entries.
Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-10 14:27 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-08 12:00 [PATCH] USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition Fabio Porcedda
2025-07-09 10:08 ` Johan Hovold
2025-07-09 10:50 ` Fabio Porcedda
2025-07-10 14:26 ` Johan Hovold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox