All, I am trying to use USB within U-Boot on a Firefly RK3288 (Rockchip) board, and I am able to enumerate high-speed devices, but not full-speed or low-speed devices. I know that the devices are functional, because they work on the same physical hardware when I boot into Linux. Note that I'm using "U-Boot 2014.10-RK3288-02".
As an aside, the built-in "USB 2.0 Hub [MTT]" hub never generates a USB_PORT_STAT_C_CONNECTION for me, even though USB_PORT_STAT_CONNECTION goes high immediately after powering on, so I forcibly assert USB_PORT_STAT_C_CONNECTION to allow the rest of the tree to enumerate. High-speed devices can be nested as deeply as I wish and still show up properly, but I can't get low-speed devices (i.e. a keyboard) to work in any hub port, including any of the ports directly on the board. All attempts to read from my low-speed devices return all zeros. When I dig a little deeper, I find myself in int dwc_wait_for_complete(struct usb_device *dev, uint32_t channel_num, uint32_t *hcStat, uint32_t *errCnt) {}. On the second iteration through the goto loop, hcintn.b.chhltd and hcintn.b.xacterr are both asserted, but hcintn.b.ack, hcintn.b.nak, and hcintn.b.nyet are not, and errCnt is only 1, so the code sets *hcStat = HCSTAT_REINIT and returns. I do notice that dwc_hcd.c seems not to have any code to support split transactions (or perhaps I simply haven't seen it yet). If true, I wonder whether this code is actually expected to support full-speed and low-speed devices. Do you have any thoughts on the matter? I wish I were more of a USB expert, but I'm regrettably quite a novice. Regards, Josh _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot