Part Number: AM5728
We are working towards our own board based on the AM572x EVM. I am having problems with XHCI USB devices in u-boot. All tested devices work fine in linux but if "usb start" is run during u-boot, the XHCI controller fails and u-boot aborts and reboots. EHCI and other devices all work fine, but something as simple as an XHCI hub or XHCI thumb drive causes this issue. The issue is identical on all 3 USB ports on the EVM and occurs regardless of whether or not other USB devices are plugged into other ports on the EVM.
I saw this link https://e2e.ti.com/support/interface/f/138/t/592829 which may or may not be related, but it stated that a different version of u-boot resolved the problem. I am wondering if this could be the case with the AM572x and if so where I might find the allegedly magic code.
The condensed part of the error message in u-boot is
Device not responding to set address.
USB device not accepting new address (error=80000000)
Freeing device node: 4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x1 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
WARN halted endpoint, queueing URB anyway.
Unexpected XHCI event TRB, skipping... (fdf32b70 00000000 13000000 02008400)
BUG at drivers/usb/host/xhci-ring.c:495/abort_td()!
BUG!
resetting ...
And this is the full u-boot log with _DEBUG turned on in common/usb.c and drivers/usb/host/xhci.c:
U-Boot SPL 2018.11-00198-g61b8194d56-dirty (Aug 30 2019 - 11:27:53 -0700)
DRA752-GP ES2.0
Trying to boot from MMC1
no pinctrl state for default mode
no pinctrl state for default mode
Loading Environment from FAT... Unknown partition type - will lookup.
Loading from FAT interface mmc 0:1, file uboot.env
*** Warning - bad CRC, using default environment
U-Boot 2018.11-00198-g61b8194d56-dirty (Aug 30 2019 - 11:27:53 -0700)
CPU : DRA752-GP ES2.0
DRAM: 2 GiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from FAT... Unknown partition type - will lookup.
Loading from FAT interface mmc 0:1, file uboot.env
*** Warning - bad CRC, using default environment
SCSI: SATA link 0 timeout.
AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
scanning bus for devices...
Found 0 device(s).
Net:
Warning: ethernet@48484000 using MAC address from ROM
eth0: ethernet@48484000
Hit any key to stop autoboot: 0
starting USB...
USB0: // Halt the HC: 48890020
// Reset the HC
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... New Device 0
set address 1
usb_control_msg: request: 0x5, requesttype: 0x0, value 0x1 index 0x0 length 0x0
USB_REQ_SET_ADDRESS
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x12
USB_DT_DEVICE request
scrlen = 18
req->length = 18
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x9
USB_DT_CONFIG config
scrlen = 25
req->length = 9
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x1F
USB_DT_CONFIG config
scrlen = 25
req->length = 31
get_conf_no 0 Result 25, wLength 31
if 0, ep 0
##EP epmaxpacketin[1] = 8
set configuration 1
usb_control_msg: request: 0x9, requesttype: 0x0, value 0x1 index 0x0 length 0x0
scrlen = 0
req->length = 0
Len is 0
new device strings: Mfr=1, Product=2, SerialNumber=0
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x300 index 0x0 length 0xFF
USB_DT_STRING config
scrlen = 4
req->length = 255
USB device number 1 default language ID 0x409
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x301 index 0x409 length 0xFF
USB_DT_STRING config
scrlen = 14
req->length = 255
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x302 index 0x409 length 0xFF
USB_DT_STRING config
scrlen = 42
req->length = 255
Manufacturer U-Boot
Product XHCI Host Controller
SerialNumber
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2A00 index 0x0 length 0x4
USB_DT_HUB config
scrlen = 8
req->length = 4
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2A00 index 0x0 length 0xC
USB_DT_HUB config
scrlen = 8
req->length = 12
usb_control_msg: request: 0x0, requesttype: 0xA0, value 0x0 index 0x0 length 0x4
scrlen = 2
req->length = 4
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x1 length 0x0
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x2 length 0x0
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
SPEED = FULLSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
SPEED = FULLSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x10 index 0x1 length 0x0
clear port connect change, actual port 1 status = 0x6e1
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x4 index 0x1 length 0x0
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
SPEED = FULLSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x4 index 0x1 length 0x0
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
SPEED = HIGHSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x14 index 0x1 length 0x0
clear port reset change, actual port 1 status = 0xe03
scrlen = 0
req->length = 0
Len is 0
New Device 1
set address 2
usb_control_msg: request: 0x5, requesttype: 0x0, value 0x2 index 0x0 length 0x0
Setting up addressable devices fdf37880
Successful Address Device command
xHC internal address is: 1
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x12
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x9
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x29
get_conf_no 0 Result 41, wLength 41
if 0, ep 0
if 0, ep 1
##EP epmaxpacketin[1] = 1
set configuration 1
usb_control_msg: request: 0x9, requesttype: 0x0, value 0x1 index 0x0 length 0x0
Successful Configure Endpoint command
new device strings: Mfr=0, Product=0, SerialNumber=1
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x300 index 0x0 length 0xFF
USB device number 2 default language ID 0x409
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x301 index 0x409 length 0xFF
Manufacturer
Product
SerialNumber 660400590392
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2900 index 0x0 length 0x4
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2900 index 0x0 length 0x9
usb_control_msg: request: 0xB, requesttype: 0x1, value 0x1 index 0x0 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA0, value 0x0 index 0x0 length 0x4
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x1 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x2 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x3 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x4 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
SPEED = SUPERSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
SPEED = SUPERSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x10 index 0x2 length 0x0
clear port connect change, actual port 2 status = 0x1203
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x4 index 0x2 length 0x0
scrlen = 0
req->length = 0
Len is 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
SPEED = SUPERSPEED
scrlen = 4
req->length = 4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x14 index 0x2 length 0x0
clear port reset change, actual port 2 status = 0x1203
scrlen = 0
req->length = 0
Len is 0
New Device 2
set address 3
usb_control_msg: request: 0x5, requesttype: 0x0, value 0x3 index 0x0 length 0x0
Setting up addressable devices fdf37880
Successful Address Device command
xHC internal address is: 2
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x12
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x9
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x1F
get_conf_no 0 Result 31, wLength 31
if 0, ep 0
##EP epmaxpacketin[1] = 2
set configuration 1
usb_control_msg: request: 0x9, requesttype: 0x0, value 0x1 index 0x0 length 0x0
Successful Configure Endpoint command
new device strings: Mfr=0, Product=0, SerialNumber=0
Manufacturer
Product
SerialNumber
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2A00 index 0x0 length 0x4
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2A00 index 0x0 length 0xC
usb_control_msg: request: 0x0, requesttype: 0xA0, value 0x0 index 0x0 length 0x4
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x1 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x2 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x3 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x4 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x4 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x4 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x4 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x4 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x14 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x10 index 0x2 length 0x0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x4 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x14 index 0x2 length 0x0
New Device 3
set address 4
usb_control_msg: request: 0x5, requesttype: 0x0, value 0x4 index 0x0 length 0x0
Setting up addressable devices fdf37880
Device not responding to set address.
USB device not accepting new address (error=80000000)
Freeing device node: 3
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x1 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
WARN halted endpoint, queueing URB anyway.
Unexpected XHCI event TRB, skipping... (fdf38140 00000000 13000000 02008400)
BUG at drivers/usb/host/xhci-ring.c:495/abort_td()!
BUG!
resetting ...