Hi , Also the basis for device enumeration is : 1) Vendor ID = 0x05ac 2) Product ID=0x12nn where nn can be anything . The product id varies depending upon the type of iPod . so the basis for device enumeration can be : 1) ( ( Vendor_id == 0x5ac ) && ( ( Product_ID >> 8 ) == 0x12) ) is there any way to specify this rule in quirk table ? or 2) explicitly list all ipods types (with different pids ) in quirk table and provide provision to add future / not added ipod types dynamically . Thanx & Regards Amit Nagal On Wed, Jun 16, 2010 at 10:28 AM, Amit Nagal <helloin.amit@xxxxxxxxx> wrote: > Hi , > > This is in continuation of my last mail . > > For existing ipod types (eg ipod touch , ipod classic ) , > > we can provide quirk entries at compile time . > > what i want to ask is : > > can we provide quirk entries when the system is running > > so that even if ipod type (VID/PID) is not registered , at run time > > we can register its quirk entries ? > > Thanx & Regards > > Amit Nagal > > > > > > On Wed, Jun 16, 2010 at 9:50 AM, Amit Nagal <helloin.amit@xxxxxxxxx> wrote: >> 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