ohci: Add missing cache-flush for hcca area
authorHans de Goede <hdegoede@redhat.com>
Tue, 20 Oct 2015 16:39:29 +0000 (18:39 +0200)
committerMarek Vasut <marex@denx.de>
Tue, 3 Nov 2015 16:29:33 +0000 (17:29 +0100)
We need to cache-flush the hcca area after the initial memset, otherwise
on the first hc_interrupt we might see an old $random value as done_head and
try to interpret that as the address for a completed td (followed by chaos).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/usb/host/ohci-hcd.c

index 9bde2b252c03783356a83ffbb6d1769e4fbdb11d..ccbfc0265a362d8672ac56a6537013bc9413fd3b 100644 (file)
@@ -2205,6 +2205,7 @@ int ohci_register(struct udevice *dev, struct ohci_regs *regs)
        if (!ohci->hcca)
                return -ENOMEM;
        memset(ohci->hcca, 0, sizeof(struct ohci_hcca));
+       flush_dcache_hcca(ohci->hcca);
 
        if (hc_reset(ohci) < 0)
                return -EIO;