1 /* 2 * Copyright (c) 2025, MediaTek Inc. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <arch_helpers.h> 8 #include <lib/mmio.h> 9 10 #include <cache_ops.h> 11 #include <mcucfg.h> 12 13 #define L3_SHARE_EN 9 14 #define L3_SHARE_PRE_EN 8 15 16 void disable_cache_as_ram(void) 17 { 18 unsigned long v; 19 20 mmio_clrbits_32(MP0_CLUSTER_CFG0, 1 << L3_SHARE_EN); 21 dsb(); 22 23 __asm__ volatile ("mrs %0, S3_0_C15_C3_5" : "=r" (v)); 24 v |= (0xf << 4); 25 __asm__ volatile ("msr S3_0_C15_C3_5, %0" : : "r" (v)); 26 dsb(); 27 28 do { 29 __asm__ volatile ("mrs %0, S3_0_C15_C3_7" : "=r" (v)); 30 } while (((v >> 0x4) & 0xf) != 0xf); 31 32 mmio_clrbits_32(MP0_CLUSTER_CFG0, 1 << L3_SHARE_PRE_EN); 33 dsb(); 34 } 35