I'm trying to get USB 2.0 working on my Dell Precision 380 that has a USB ICH7 chipset. FreeBSD detects the controllers, but they are all halted when devices are detected. Here is a verbose boot with USB_DEBUG enabled: http://www.marcuscom.com/downloads/NEW-SHUMAI.dmesg. Here is what I get when I insert a device after the machine has booted: usb0: host controller halted usb0 regs: cmd=0000, sts=0020, intr=000f, frnum=0771, flbase=00000dc4, sof=0040, portsc1=0080, portsc2=0080 intrs=0 QH(0xc35e3f80) at 7d697f80: hlink=7d697fa2 elink=00000001 usb_new_device: set address 2 failed - trying a port reset usb_new_device: set address 2 failed - trying a port reset usb_new_device: set address 2 failed - trying a port reset usb_new_device: set address 2 failed uhub_explore: usb_new_device failed, error=SET_ADDR_FAILED uhub3: device problem (SET_ADDR_FAILED), disabling port 2 If I build a kernel without ehci, I get working USB, but only if the device is inserted prior to boot. That is, usbd does not see any ATTACH events. If I have ehci compiled in, and a device is present during boot, I get a panic: usb3: host controller halted usb3 regs: cmd=0000, sts=0020, intr=000f, frnum=0347, flbase=00000d1c, sof=0040, portsc1=01a5, portsc2=0093 intrs=0 QH(0xc3659f80) at 7d5edf80: hlink=7d5ecf62 elink=00000001 usbd_new_device: addr=2, getting first desc failed uhub_explore: usb_new_device failed, error=IOERROR uhub3: device problem (IOERROR), disabling port 1 panic: usbd_transfer: not done cpuid = 0 KDB: enter: panic [thread pid 0 tid 0 ] Stopped at kdb_enter+0x2b: nop db> trace Tracing pid 0 tid 0 td 0xc06f7840 kdb_enter(c069f83d) at kdb_enter+0x2b panic(c069aa93,4,c35da43c,c35da400,0) at panic+0x127 usbd_transfer(c35da400,c0c20cd8,c04ca43d,c35da400,c36440b0) at usbd_transfer+0x13e usbd_sync_transfer(c35da400,c36440b0,1,c0c20cec,d) at usbd_sync_transfer+0x11 usbd_do_request_flags_pipe(c3644200,c3644180,c0c20d30,c36440c4,0) at usbd_do_request_flags_pipe+0x5d usbd_do_request_flags(c3644200,c0c20d30,c36440c4,0,0) at usbd_do_request_flags+0x20 usbd_do_request(c3644200,c0c20d30,c36440c4,a3,40002) at usbd_do_request+0x1a usbd_get_port_status(c3644200,2,c36440c4) at usbd_get_port_status+0x39 uhub_explore(c3644200,c34b7904,c0c20d88,c04e4556,0) at uhub_explore+0x85 usb_cold_explore(0,c1ec00,c1e000,0,c0434245) at usb_cold_explore+0x4f mi_startup() at mi_startup+0x96 begin() at begin+0x2c (gdb) l *usbd_transfer+0x13e 0xc04c9b16 is in usbd_transfer (/usr/src/sys/dev/usb/usbdi.c:343). 338 if (err != USBD_IN_PROGRESS) 339 return (err); 340 s = splusb(); 341 if (!xfer->done) { 342 if (pipe->device->bus->use_polling) 343 panic("usbd_transfer: not done"); 344 tsleep(xfer, PRIBIO, "usbsyn", 0); 345 } 346 splx(s); 347 return (xfer->status); Any help would be appreciated. Thanks. Joe -- PGP Key : http://www.marcuscom.com/pgp.asc
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:40 UTC