libpayload: usb: dwc2: support interrupt transfer

Hardware / Coreboot - Yunzhi Li [rock-chips.com] - 6 July 2015 02:40 UTC

dwc2 host core do not have a periodic schedule list, so try to send an interrupt packet in poll_intr_queue() function and use frame number read from usb core register to calculate time and schedule transfers.

BUG=None TEST=Tested on RK3288 with two USB keyboards(connect to SoC without USB hub), both work correctly. BRANCH=None

Change-Id: I16f7977c45a84b37c32b7c495ca78ad76be9f0ce

aa33609 libpayload: usb: dwc2: support interrupt transfer
payloads/libpayload/drivers/usb/dwc2.c | 117 ++++++++++++++++++++--
payloads/libpayload/drivers/usb/dwc2_private.h | 11 +-
payloads/libpayload/include/usb/dwc2_registers.h | 23 ++++-
3 files changed, 139 insertions(+), 12 deletions(-)

Upstream: review.coreboot.org


  • Share