mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
usb: ci_udc: Support larger packets
ci_ep_queue() currently only fills in the page0/page1 fields in the queue item. If the buffer is larger than 4KiB (unaligned) or 8KiB (page-aligned), then this prevents the HW from knowing where to write the balance of the data. Fix this by initializing all 5 pageN pointers, which allows up to 16KiB (potentially non-page-aligned) buffers. Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
672ad18c27
commit
f5c03006dd
1 changed files with 3 additions and 0 deletions
|
@ -350,6 +350,9 @@ static int ci_ep_queue(struct usb_ep *ep,
|
|||
item->info = INFO_BYTES(len) | INFO_IOC | INFO_ACTIVE;
|
||||
item->page0 = (uint32_t)ci_ep->b_buf;
|
||||
item->page1 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x1000;
|
||||
item->page2 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x2000;
|
||||
item->page3 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x3000;
|
||||
item->page4 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x4000;
|
||||
ci_flush_qtd(num);
|
||||
|
||||
head->next = (unsigned) item;
|
||||
|
|
Loading…
Add table
Reference in a new issue