1 | // SPDX-License-Identifier: GPL-2.0+ |
---|---|
2 | |
3 | #include <linux/types.h> |
4 | #include <linux/dma-map-ops.h> |
5 | #include <asm/bmips.h> |
6 | #include <asm/io.h> |
7 | |
8 | bool bmips_rac_flush_disable; |
9 | |
10 | void arch_sync_dma_for_cpu_all(void) |
11 | { |
12 | void __iomem *cbr = BMIPS_GET_CBR(); |
13 | u32 cfg; |
14 | |
15 | if (boot_cpu_type() != CPU_BMIPS3300 && |
16 | boot_cpu_type() != CPU_BMIPS4350 && |
17 | boot_cpu_type() != CPU_BMIPS4380) |
18 | return; |
19 | |
20 | if (unlikely(bmips_rac_flush_disable)) |
21 | return; |
22 | |
23 | /* Flush stale data out of the readahead cache */ |
24 | cfg = __raw_readl(addr: cbr + BMIPS_RAC_CONFIG); |
25 | __raw_writel(val: cfg | 0x100, addr: cbr + BMIPS_RAC_CONFIG); |
26 | __raw_readl(addr: cbr + BMIPS_RAC_CONFIG); |
27 | } |
28 |