On Tue, Oct 03, 2023 at 12:48:39AM +0700, Lars Melin wrote: > On 10/2/2023 22:51, Benoît Monin wrote: > > Following a firmware update of the modem, the interface for the AT > > command port changed, so add it back. > > > > T: Bus=08 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 2 Spd=5000 MxCh= 0 > > D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 > > P: Vendor=1199 ProdID=90d3 Rev=00.06 > > S: Manufacturer=Sierra Wireless, Incorporated > > S: Product=Sierra Wireless EM9191 > > S: SerialNumber=xxxxxxxxxxxxxxxx > > C: #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=896mA > > 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#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none) > > I: If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option > > Signed-off-by: Benoît Monin <benoit.monin@xxxxxx> > > --- > > drivers/usb/serial/option.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c > > index 7994a4549a6c..73971a3a1897 100644 > > --- a/drivers/usb/serial/option.c > > +++ b/drivers/usb/serial/option.c > > @@ -2262,6 +2262,7 @@ static const struct usb_device_id option_ids[] = { > > { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ > > { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, > > { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, > > + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x40) }, > > { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) }, > > { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, > > { } /* Terminating entry */ > > > > No need to add additional lines in the driver, the entry can be simplified > by removing the previous two lines and add a single line using the > USB_DEVICE_INTERFACE_CLASS macro. > Hi Lars, such a simplification can only be applied if you know that the USB composition does not provide e.g. ADB, DPL or QDSS interfaces which also use vendor class. Most newer Sierra Wireless devices based on a Qualcomm chipset with a Linux AP contain support for an optional ADB interface in production firmware as this example from a WP7607 shows: at!usbcomp? Config Index: 1 Config Type: 1 (Generic) Interface bitmask: 0009014F (diag,adb,nmea,modem,rmnet0,audio,ecm,rawdat) OK T: Bus=02 Lev=03 Prnt=08 Port=01 Cnt=02 Dev#= 11 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1199 ProdID=68c0 Rev= 4.14 S: Manufacturer=Sierra Wireless, Incorporated S: Product=Sierra Wireless WP7607 S: SerialNumber=12345678 ... I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms Regards, Reinhard