Use CIPA instead of CPA to clean and invalidate cache lines. This
fixes stale DMA descriptors breaking USB enumeration on TH1520.

Signed-off-by: Han Gao <[email protected]>
---
 arch/riscv/lib/thead_cmo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/riscv/lib/thead_cmo.c b/arch/riscv/lib/thead_cmo.c
index b8051e29e02b..763ff799eddd 100644
--- a/arch/riscv/lib/thead_cmo.c
+++ b/arch/riscv/lib/thead_cmo.c
@@ -40,6 +40,6 @@ void flush_dcache_range(unsigned long start, unsigned long 
end)
 {
        register unsigned long i asm("a0") = start & 
~(CONFIG_SYS_CACHELINE_SIZE - 1);
        for (; i < end; i += CONFIG_SYS_CACHELINE_SIZE)
-               __asm__ __volatile__(DCACHE_CPA_A0);
+               __asm__ __volatile__(DCACHE_CIPA_A0);
        __asm__ __volatile__(SYNC_S);
 }

---
base-commit: 211de43d0f954a00a490220c1aac9db298287c40
change-id: 20260919-fixcmo-cf56064fccd6

Best regards,
--  
Han Gao <[email protected]>

Reply via email to