blob: df43667d50d2bb1363e39a40b676136e3e2817ca [file] [log] [blame]
Vince Liu34168b82025-04-24 11:03:01 +08001/*
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
16void 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}