Hi,
I'm getting -ENOSPC when opening /dev/ttyUSB0 with following setup:
PL2303 --> USB 2.0 TT hub (Cypress CY7C65640) --> ehci PCI Card (NEC) No other devices.
dmesg says: pl2303.c: pl2303_open - failed submitting interrupt urb, error -28
Incase it helps, my pathetic debuging attempts are attached.
Do the two 256ms interrupt endpoints of the hub have something to do with the check failing on frame 255 ?
Test with 2.6 ? .. ok, now just tested with 2.6.6: basically the same thing.
ice:~ # cat /proc/version
Linux version 2.6.6 ([EMAIL PROTECTED]) (gcc version 2.95.3 20010315 (SuSE)) #1 SMP Mon May 17 10:00:58 CEST 2004
ice:~ # cat /dev/ttyUSB0
cat: /dev/ttyUSB0: Protocol error
dmesg:
May 17 10:13:39 ice kernel: PL-2303 ttyUSB0: pl2303_open - failed submitting interrupt urb, error -28
May 17 10:13:39 ice kernel: PL-2303 ttyUSB0: PL-2303 converter now disconnected from ttyUSB0
Thanks, - sda
added some dbg's: --------- /usr/src/linux-2.4.26/drivers/usb/host/ehci-sched.c --------- static int check_period ( struct ehci_hcd *ehci, unsigned frame, unsigned uframe, unsigned period, unsigned usecs ) { /* complete split running into next frame? * given FSTN support, we could sometimes check... */ if (uframe >= 8){ dbg(" check_period() ... nope: uframe=%d",uframe); return 0; }
/*
* 80% periodic == 100 usec/uframe available
* convert "usecs we need" to "max already claimed"
*/
usecs = 100 - usecs;
dbg(" check_period() ... max usecs claimed: %d periodic_size %d)",usecs,ehci->periodic_size);
do {
int claimed;
// FIXME delete when intr_submit handles non-empty queues // this gives us a one intr/frame limit (vs N/uframe) // ... and also lets us avoid tracking split transactions // that might collide at a given TT/hub. if (ehci->pshadow [frame].ptr){ dbg(" check_period() ... frame %d ptr'd ??",frame); return 0; }
claimed = periodic_usecs (ehci, frame, uframe); if (claimed > usecs){ dbg(" check_period() ... frame %d/%d --> %d claimed",frame,uframe,claimed); return 0; }
// FIXME update to handle sub-frame periods } while ((frame += period) < ehci->periodic_size);
// success! return 1; }
static int check_intr_schedule ( struct ehci_hcd *ehci, unsigned frame, unsigned uframe, const struct ehci_qh *qh, u32 *c_maskp ) { int retval = -ENOSPC;
if (!check_period (ehci, frame, uframe, qh->period, qh->usecs)){
dbg("check_period #1 (,%d,%d,%d,%d ) failed.\n",frame, uframe, qh->period, qh->usecs);
goto done;
}
...
-----------
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,0,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,1,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,2,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,3,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,4,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,5,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,6,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,7,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: qh_schedule fails.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: pl2303.c: pl2303_open - failed submitting interrupt urb, error -28
dfs1:/home/sda # cat /proc/bus/usb/devices T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 5 B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.04 S: Manufacturer=Linux 2.4.26 ehci_hcd S: Product=PCI device 1033:00e0 S: SerialNumber=00:0a.2 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1 P: Vendor=04b4 ProdID=6560 Rev= 0.08 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms I: If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms T: Bus=03 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=067b ProdID=2303 Rev= 2.02 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=serial E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=1ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
lspci -v parts: 00:0a.0 USB Controller: NEC Corporation USB (rev 41) (prog-if 10 [OHCI]) Subsystem: Micro-star International Co Ltd: Unknown device 9516 Flags: bus master, medium devsel, latency 32, IRQ 18 Memory at ed000000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2
00:0a.1 USB Controller: NEC Corporation USB (rev 41) (prog-if 10 [OHCI]) Subsystem: Micro-star International Co Ltd: Unknown device 9516 Flags: bus master, medium devsel, latency 32, IRQ 19 Memory at ec800000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2
00:0a.2 USB Controller: NEC Corporation USB Enhanced Host Controller (rev 02) (prog-if 20)
Subsystem: Micro-star International Co Ltd: Unknown device 9516
Flags: bus master, medium devsel, latency 32, IRQ 16
Memory at ec000000 (32-bit, non-prefetchable) [size=256]
Capabilities: [40] Power Management version 2
------------------------------------------------------- This SF.Net email is sponsored by: SourceForge.net Broadband Sign-up now for SourceForge Broadband and get the fastest 6.0/768 connection for only $19.95/mo for the first 3 months! http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel