Hi Alan , Thanx for the reply . The enclosed patch will definately help my cause . In my case this is required as we want to stream digital audio from ipod to our host . i will definately need to provide quirk entries at run time , as at compile time , it will be extremely difficult to put quirk entries for all the ipods . there should be some registration mechanism in user space to specify quirk entries at run time . how we can specify quirk entries while the system is running ? Thanx & Regards Amit Nagal On Tue, Jun 15, 2010 at 7:49 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Mon, 14 Jun 2010, Amit Nagal wrote: > >> Hi Alan , >> >> Thanx for the reply . >> >> Following enclosed are logs : >> >> cat /proc/bus/usb/devices : >> >> >> T: Bus=02 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 >> D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 2 >> P: Vendor=05ac ProdID=1261 Rev= 0.01 >> S: Manufacturer=Apple Inc. >> S: Product=iPod >> S: SerialNumber=000A270013A06238 >> C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=500mA >> I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage >> E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms >> E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms >> C: #Ifs= 3 Cfg#= 2 Atr=c0 MxPwr=500mA >> I: If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver= >> I: If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver= >> I: If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver= >> E: Ad=81(I) Atr=01(Isoc) MxPS= 192 Ivl=1ms >> I: If#= 2 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver= >> E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=125us > >> Looking forward to suggested patch . > > Here it is. However I must warn you: It is highly unlikely this patch > will ever be accepted into the offical Linux kernel. Most people who > have iPods and plug them into their computers do expect the iPod to be > placed in the mass-storage config. > > About the closest we might come is a change allowing you to specify > quirk entries while the system is running. > > Alan Stern > > > > Index: 2.6.34/drivers/usb/core/generic.c > =================================================================== > --- 2.6.34.orig/drivers/usb/core/generic.c > +++ 2.6.34/drivers/usb/core/generic.c > @@ -18,6 +18,7 @@ > */ > > #include <linux/usb.h> > +#include <linux/usb/quirks.h> > #include "usb.h" > #include "hcd.h" > > @@ -47,6 +48,9 @@ int usb_choose_configuration(struct usb_ > int insufficient_power = 0; > struct usb_host_config *c, *best; > > + if (udev->quirks & USB_QUIRK_DONT_CONFIGURE) > + return -1; > + > best = NULL; > c = udev->config; > num_configs = udev->descriptor.bNumConfigurations; > Index: 2.6.34/drivers/usb/core/quirks.c > =================================================================== > --- 2.6.34.orig/drivers/usb/core/quirks.c > +++ 2.6.34/drivers/usb/core/quirks.c > @@ -50,6 +50,9 @@ static const struct usb_device_id usb_qu > /* appletouch */ > { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, > > + /* Apple iPod */ > + { USB_DEVICE(0x05ac, 0x1261), .driver_info = USB_QUIRK_DONT_CONFIGURE }, > + > /* Avision AV600U */ > { USB_DEVICE(0x0638, 0x0a13), .driver_info = > USB_QUIRK_STRING_FETCH_255 }, > Index: 2.6.34/include/linux/usb/quirks.h > =================================================================== > --- 2.6.34.orig/include/linux/usb/quirks.h > +++ 2.6.34/include/linux/usb/quirks.h > @@ -22,4 +22,7 @@ > /*device will morph if reset, don't use reset for handling errors */ > #define USB_QUIRK_RESET_MORPHS 0x00000010 > > +/* device should not be configured by default */ > +#define USB_QUIRK_DONT_CONFIGURE 0x00000020 > + > #endif /* __LINUX_USB_QUIRKS_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