mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-17 23:37:01 +00:00
usb: ehci: Move cache invalidation to poll_int_queue
Preperation patch to use poll_int_queue outside of ehci-hcd.c . Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
bd818d81d8
commit
8aa26b8e48
1 changed files with 7 additions and 3 deletions
|
@ -1097,6 +1097,7 @@ submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
|||
}
|
||||
|
||||
struct int_queue {
|
||||
int elementsize;
|
||||
struct QH *first;
|
||||
struct QH *current;
|
||||
struct QH *last;
|
||||
|
@ -1191,6 +1192,7 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
|
|||
debug("ehci intr queue: out of memory\n");
|
||||
goto fail1;
|
||||
}
|
||||
result->elementsize = elementsize;
|
||||
result->first = memalign(USB_DMA_MINALIGN,
|
||||
sizeof(struct QH) * queuesize);
|
||||
if (!result->first) {
|
||||
|
@ -1327,6 +1329,11 @@ void *poll_int_queue(struct usb_device *dev, struct int_queue *queue)
|
|||
queue->current++;
|
||||
else
|
||||
queue->current = NULL;
|
||||
|
||||
invalidate_dcache_range((uint32_t)cur->buffer,
|
||||
ALIGN_END_ADDR(char, cur->buffer,
|
||||
queue->elementsize));
|
||||
|
||||
debug("Exit poll_int_queue with completed intr transfer. token is %x at %p (first at %p)\n",
|
||||
hc32_to_cpu(cur_td->qt_token), cur, queue->first);
|
||||
return cur->buffer;
|
||||
|
@ -1410,9 +1417,6 @@ submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
invalidate_dcache_range((uint32_t)buffer,
|
||||
ALIGN_END_ADDR(char, buffer, length));
|
||||
|
||||
ret = destroy_int_queue(dev, queue);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
|
Loading…
Add table
Reference in a new issue