On Fri, Jun 05, 2015 at 12:58:59AM +0200, Joe wrote: > Hi all! > > I'm a simple linux user, not a developer, but I just > added a new record to source of "option" usb serial > module (option.c) to add support for a usb internet > dongle: Olivetti Olicard-300. > > Hope this is the right place to submit my changes so > that kernel developers can apply to next versions of > "option" driver. > > Here we have usb-devices output: > ---------------------------------------- > # usb-devices |grep -B2 -A11 2020.*4000 > T: Bus=01 Lev=02 Prnt=04 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0 > D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=2020 ProdID=4000 Rev=03.00 > S: Manufacturer=Network Connect > S: Product=MT6225 > C: #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA > I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim > I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim > I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=option > I: If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > I: If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > I: If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage > ------------------------------------------------------------------------- > > As you can see it has 7 interfaces... > Ifs: 2,3,4,5 are related to HSPA modem functions. We > can obtain this info also by looking to Windows verbose > description of the interfaces and is taken from the > windows driver pack for the dongle: > ---------------------------------------------- > MI_00 Network Connect Mobile Broadband Device > MI_01 Network Connect Mobile Broadband Device > MI_02 Network Connect HSPA Plus Modem > MI_03 Network Connect HSPA Plus Application Interface > MI_04 Network Connect HSPA Plus Speech Port > MI_05 Network Connect HSPA Plus Debug Port > MI_06 USB Mass Storage Device > ------------------------------ > > After talking about this dongle with usb_modeswitch > developers seems all these interfaces having Class > "ff" (vendor defined) has to be proper bound exactly > by "option" module. So I edited "opition.c" source as > follow: > ---------------------------------------------- > $ grep OLICARD300 drivers/usb/serial/option.c > { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) }, /* OLICARD300 - > MT6225 */ > ---------------------------------------------------------------------------------------- > > Hope the last line will not be cutted by your mail > client due to its leinght... > > Anyway I tested this new version of option module > and seems to work properly: when I plug the dongle > in usb_modeswitch changes product id from "0002" to > "4000". > Then option module binds right interfaces only, letting > cdc_mbim and usb-storage manage theirs properly. > > I've also created a patch as follows: > ------------------------------------- > $ diff -up linux/drivers/usb/serial/option.c{.orig,} > \ > olivetti-olicard300-2020_4000.patch > > $ cat olivetti-olicard300-2020_4000.patch > --- linux/drivers/usb/serial/option.c.orig 2015-06-05 00:27:28.000000000 > +0200 > +++ linux/drivers/usb/serial/option.c 2015-06-05 00:37:08.522933592 +0200 > @@ -1678,6 +1678,7 @@ static const struct usb_device_id option > .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, > { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500), > .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, > + { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) }, /* OLICARD300 - > MT6225 */ > { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA > 450 1xEVDO modem */ > { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, > SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT- > B3730 LTE USB modem.*/ > { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, > ----------------------------------------------------------- > > I'll attach it to this message, hope it is a good > choice.. > > Any comments are greatly appreciated, it's my first > patch request! :) > Bye. > --- linux/drivers/usb/serial/option.c.orig 2015-06-05 00:27:28.000000000 +0200 > +++ linux/drivers/usb/serial/option.c 2015-06-05 00:37:08.522933592 +0200 > @@ -1678,6 +1678,7 @@ static const struct usb_device_id option > .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, > { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500), > .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, > + { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) }, /* OLICARD300 - MT6225 */ > { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ > { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ > { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, Can you resend this in the format described in Documentation/SubmittingPatches so that we can be able to apply it to the kernel tree? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html