diff options
Diffstat (limited to 'drivers/usb/host/isp1760-hcd.c')
-rw-r--r-- | drivers/usb/host/isp1760-hcd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index 27b8f7cb4471..9f01293600b0 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c | |||
@@ -17,7 +17,9 @@ | |||
17 | #include <linux/debugfs.h> | 17 | #include <linux/debugfs.h> |
18 | #include <linux/uaccess.h> | 18 | #include <linux/uaccess.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/mm.h> | ||
20 | #include <asm/unaligned.h> | 21 | #include <asm/unaligned.h> |
22 | #include <asm/cacheflush.h> | ||
21 | 23 | ||
22 | #include "../core/hcd.h" | 24 | #include "../core/hcd.h" |
23 | #include "isp1760-hcd.h" | 25 | #include "isp1760-hcd.h" |
@@ -904,6 +906,14 @@ __acquires(priv->lock) | |||
904 | status = 0; | 906 | status = 0; |
905 | } | 907 | } |
906 | 908 | ||
909 | if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) { | ||
910 | void *ptr; | ||
911 | for (ptr = urb->transfer_buffer; | ||
912 | ptr < urb->transfer_buffer + urb->transfer_buffer_length; | ||
913 | ptr += PAGE_SIZE) | ||
914 | flush_dcache_page(virt_to_page(ptr)); | ||
915 | } | ||
916 | |||
907 | /* complete() can reenter this HCD */ | 917 | /* complete() can reenter this HCD */ |
908 | usb_hcd_unlink_urb_from_ep(priv_to_hcd(priv), urb); | 918 | usb_hcd_unlink_urb_from_ep(priv_to_hcd(priv), urb); |
909 | spin_unlock(&priv->lock); | 919 | spin_unlock(&priv->lock); |