From 654e0a8b98c099ab3048c02aa772e55f373755c8 Mon Sep 17 00:00:00 2001 From: Sylwester Nawrocki Date: Fri, 24 Apr 2020 18:50:03 +0200 Subject: [PATCH] usb: xhci: Add missing cache flush in the scratchpad array initialization In current code there is no cache flush after initializing the scratchpad buffer array with the scratchpad buffer pointers. This leads to a failure of the "slot enable" command on the rpi4 board (Broadcom STB PCIe controller + VL805 USB hub) - the very first TRB transfer on the command ring fails and there is a timeout while waiting for the command completion event. After adding the missing cache flush everything seems to be working as expected. Reviewed-by: Bin Meng Signed-off-by: Sylwester Nawrocki Signed-off-by: Marek Szyprowski Change-Id: I0a8a482bf452230edd754509b2f1bcdb6b1ea090 --- drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 84c2c33..7baad5d 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -392,6 +392,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) scratchpad->sp_array[i] = cpu_to_le64(ptr); } + xhci_flush_cache((uintptr_t)scratchpad->sp_array, + sizeof(u64) * num_sp); + return 0; fail_sp3: -- 2.7.4