diff mbox

[U-Boot,fix,for,v2014.10,2/5] usb: ehci: Add missing cache flush to destroy_int_queue

Message ID 1411224686-13639-3-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Marek Vasut
Headers show

Commit Message

Hans de Goede Sept. 20, 2014, 2:51 p.m. UTC
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/usb/host/ehci-hcd.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Michael Nazzareno Trimarchi Sept. 20, 2014, 5:56 p.m. UTC | #1
Hi

On Sat, Sep 20, 2014 at 4:51 PM, Hans de Goede <hdegoede@redhat.com> wrote:
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  drivers/usb/host/ehci-hcd.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index 41af302..1a0ddc3 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
> @@ -1342,6 +1342,8 @@ destroy_int_queue(struct usb_device *dev, struct int_queue *queue)
>                 if (NEXT_QH(cur) == queue->first) {
>                         debug("found candidate. removing from chain\n");
>                         cur->qh_link = queue->last->qh_link;
> +                       flush_dcache_range((uint32_t)cur,
> +                                          ALIGN_END_ADDR(struct QH, cur, 1));
>                         result = 0;
>                         break;
>                 }

Can you even check the return value to make consistent with create_queue?

Michael

> --
> 2.1.0
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
diff mbox

Patch

diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 41af302..1a0ddc3 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1342,6 +1342,8 @@  destroy_int_queue(struct usb_device *dev, struct int_queue *queue)
 		if (NEXT_QH(cur) == queue->first) {
 			debug("found candidate. removing from chain\n");
 			cur->qh_link = queue->last->qh_link;
+			flush_dcache_range((uint32_t)cur,
+					   ALIGN_END_ADDR(struct QH, cur, 1));
 			result = 0;
 			break;
 		}