This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5728: USB XHCI problem in U-boot

Part Number: AM5728
Other Parts Discussed in Thread: PMP, , BEAGLEBOARD-X15

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 ...

  • Hi,

    It sounds like the issue happens on the AM5728 GP EVM, not your custom board, correct?

    The issue happens even if no any USB device is attached to any of the 3 USB ports behind the hub. is it correct?

    Which Processor SDK version do you use?

  • Yes, this problem happens on the AM5728 GP EVM.

    I am using platform SDK 5.02.00.10, which uses u-boot u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2.  

    The issue happens if no other USB device is attached to any of the ports. All I need to do is insert an XHCI usb drive, such as the Samsung 32GB BAR metal, into any one of the ports on the EVM and start the board. u-boot will fail and reset as I described below as soon as the command "usb start" is issued.

  • Hi,

    ChickenDuck said:

    U-Boot 2018.11-00198-g61b8194d56-dirty (Aug 30 2019 - 11:27:53 -0700)

    CPU : DRA752-GP ES2.0
    DRAM: 2 GiB

    This message doesn't look right, it misses board information. What version of the EVM do you have? Any label do you see on the board?

  • Hello

    Sorry, I snipped that out by mistake.

    CPU : DRA752-GP ES2.0
    Model: TI AM5728 BeagleBoard-X15
    Board: AM572x EVM REV A.3A
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1

    I switched back to using the prebuilt MLO and u-boot.img which came with the PLSDK and USB is working properly in u-boot. To help troubleshoot, I have found that if I do

    git checkout 313dcd69c2

    and rebuild u-boot USB is back to working.

    git reports that this is now a detached head so this commit 313dcd69c2 does not seem to correspond to any known branch. I have done a diff of this vs. the master branch (commit d73d81fd85e4a030ade42c4b2d13466d45090aa3)  and found that every single file has changed because somebody modified the copyright notices in every file, and therefore it is nearly impossible to determine what the difference might be.

    I have made almost no changes to the u-boot source code so it is easy for me to create a new branch from this working 313dcd69c2 commit and port over my changes.

    This seems likely to be a git problem, possibly due to my error when I set up my own git repo for making my own local u-boot modifications.

    Thanks for the help, but for the time being this appears to be resolved.

  • Hi,

    I am glad the issue is solved. Thanks for the update.