coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mmu_cmops.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/mmio.h>
4 #include <soc/mcucfg.h>
5 #include <soc/mmu_operations.h>
6 #include <soc/symbols.h>
7 
8 DEFINE_BIT(MP0_CLUSTER_CFG0_L3_SHARE_EN, 9)
9 DEFINE_BIT(MP0_CLUSTER_CFG0_L3_SHARE_PRE_EN, 8)
10 
12 {
13  unsigned long v;
14 
16  MP0_CLUSTER_CFG0_L3_SHARE_EN, 0);
17  dsb();
18 
19  __asm__ volatile ("mrs %0, S3_0_C15_C3_5" : "=r" (v));
20  v |= (0xf << 4);
21  __asm__ volatile ("msr S3_0_C15_C3_5, %0" : : "r" (v));
22  dsb();
23 
24  do {
25  __asm__ volatile ("mrs %0, S3_0_C15_C3_7" : "=r" (v));
26  } while (((v >> 0x4) & 0xf) != 0xf);
27 
29  MP0_CLUSTER_CFG0_L3_SHARE_PRE_EN, 0);
30  dsb();
31 }
32 
33 /* mtk_soc_after_dram is called in romstage */
35 {
36  mmu_config_range(_dram_dma, REGION_SIZE(dram_dma),
38 }
void mmu_config_range(u32 start_mb, u32 size_mb, enum dcache_policy policy)
Definition: mmu.c:221
#define dsb()
Definition: barrier.h:16
#define DEFINE_BIT(name, bit)
Definition: mmio.h:131
#define SET32_BITFIELDS(addr,...)
Definition: mmio.h:201
#define REGION_SIZE(name)
Definition: symbols.h:10
@ NONSECURE_UNCACHED_MEM
void mtk_soc_after_dram(void)
Definition: mmu_cmops.c:34
void mtk_soc_disable_l2c_sram(void)
Definition: mmu_cmops.c:11
static struct mt8186_mcucfg_regs *const mtk_mcucfg
Definition: mcucfg.h:945
u32 mp0_cluster_cfg0
Definition: mcucfg.h:465