Hello! I'm trying to determine why the remote control included with my DigitalNow TinyTwin DVB-T tuner connected to a USB port on an Abit IC7-MAX3 motherboard is not working properly and am looking for some help to solve the problem. I believe the problem may be in the PCI/interrupt handling region, however, I see different behaviour between uhci_hcd and ehci_hcd so I thought I should start there. The tuner is a USB2 device with two interfaces, the interface corresponding to the remote is correctly identified as class HID (keyboard) and uses the usbhid driver. I believe the main issue is that pressing and releasing a key on the remote generates a key press but the key release arrives some time later. With uhci_hcd this is ~0.27-0.3s after the key press while with ehci_hcd it is ~17.4s (on Windows the usb sniff appears to show ~0.09s). In both cases it leads to auto- repeating with the default usbhid driver. Another issue seems to be that pressing any key after the first key press but before the corresponding key release appears as the original key pressed a second time, leading to missed key presses. It's obviously much easier to see this with 17.4s between key press and release but is still easily possible with 0.272s. With both uhci_hcd and ehci_hcd I can see that the probe function used is usb_hcd_pci_probe in drivers/usb/core/hcd-pci.c, this calls usb_add_hcd in drivers/usb/core/hcd.c which calls request_irq using usb_hcd_irq as the function to call on an interrupt. The drivers register functions ehci_irq and uhci_irq to handle the interrupts from usb_hcd_irq. I've placed printk's in the relevant files to track the delay between press and release which seems to be before usb_hcd_irq is called, leading me to believe there is possibly a problem in the PCI/interrupt handling region. I'm wondering if the way interrupts are initialised in usb_hcd_pci_probe (due to flag HCD_MEMORY it's request_mem_region/ioremap_nocache for ehci_hcd and request_region for uhci_hcd) could be causing differences between uhci_hcd and ehci_hcd? Could the value of bInterval for the interrupt endpoint being interpreted differently for uhci_hcd and ehci_hcd (as per the spec) have an effect? The value is 16 which corresponds to an interval of 16ms for uhci_hcd and 4096ms for ehci_hcd. Also, usbmon seems to show 8192 for the interval with ehci_hcd. Or is all of this a problem further down the chain with PCI and/or interrupts? Any help would be appreciated, thanks in advance! Stuart (UHCI) cat /sys/kernel/debug/usbmon/1u: d3499880 1067303301 C Ii:1:002:3 0:16 8 = 00001e00 00000000 d3499880 1067303337 S Ii:1:002:3 -115:16 8 < d3499880 1067575252 C Ii:1:002:3 0:16 8 = 00000000 00000000 d3499880 1067575286 S Ii:1:002:3 -115:16 8 < (EHCI) cat /sys/kernel/debug/usbmon/1u: d35d4180 113126421 C Ii:1:002:3 0:8192 8 = 00001e00 00000000 d35d4180 113126459 S Ii:1:002:3 -115:8192 8 < d35d4180 130531486 C Ii:1:002:3 0:8192 8 = 00000000 00000000 d35d4180 130531522 S Ii:1:002:3 -115:8192 8 < Windows SniffUSB summary: [369218 ms] <<< URB 13 coming back <<< 00000000: 00 00 1e 00 00 00 00 00 [369218 ms] <<< URB 14 coming back <<< 00000000: 00 00 1e 00 00 00 00 00 [369308 ms] <<< URB 15 coming back <<< 00000000: 00 00 00 00 00 00 00 00 lspci: 00:00.0 Host bridge: Intel Corporation 82875P/E7210 Memory Controller Hub (rev 02) 00:01.0 PCI bridge: Intel Corporation 82875P Processor to AGP Controller (rev 02) 00:03.0 PCI bridge: Intel Corporation 82875P/E7210 Processor to PCI to CSA Bridge (rev 02) 00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2) 00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02) 00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02) 00:1f.5 Multimedia audio controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] (rev a2) 02:01.0 Ethernet controller: Intel Corporation 82547GI Gigabit Ethernet Controller 03:02.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) 03:03.0 RAID bus controller: Silicon Image, Inc. SiI 3114 [SATALink/SATARaid] Serial ATA Controller (rev 02) 03:05.0 Communication controller: Conexant HSF 56k HSFi Modem (rev 01) (UHCI) cat /proc/bus/usb/devices: T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=13d3 ProdID=3226 Rev= 2.00 S: Manufacturer=Afatech S: Product=DVB-T 2 S: SerialNumber=010101010600001 C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_af9015 E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=01 Driver=usbhid E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=16ms (EHCI) cat /proc/bus/usb/devices: T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=13d3 ProdID=3226 Rev= 2.00 S: Manufacturer=Afatech S: Product=DVB-T 2 S: SerialNumber=010101010600001 C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_af9015 E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=01 Driver=usbhid E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=4096ms -- 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