1 /*
2  * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <arch.h>
8 #include <assert.h>
9 #include <common/debug.h>
10 #include <lib/mmio.h>
11 #include <mcucfg.h>
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15 
disable_scu(u_register_t mpidr)16 void disable_scu(u_register_t mpidr)
17 {
18 	uintptr_t axi_config = 0;
19 	uint32_t axi_value;
20 
21 	switch (mpidr & MPIDR_CLUSTER_MASK) {
22 	case 0x000:
23 		axi_config = (uintptr_t)&mt8183_mcucfg->mp0_axi_config;
24 		axi_value = MP0_ACINACTM;
25 		break;
26 	case 0x100:
27 		axi_config = (uintptr_t)&mt8183_mcucfg->mp2_axi_config;
28 		axi_value = MP2_ACINACTM;
29 		break;
30 	default:
31 		ERROR("%s: mpidr does not exist\n", __func__);
32 		panic();
33 	}
34 	mmio_setbits_32(axi_config, axi_value);
35 }
36 
enable_scu(u_register_t mpidr)37 void enable_scu(u_register_t mpidr)
38 {
39 	uintptr_t axi_config = 0;
40 	uint32_t axi_value;
41 
42 	switch (mpidr & MPIDR_CLUSTER_MASK) {
43 	case 0x000:
44 		axi_config = (uintptr_t)&mt8183_mcucfg->mp0_axi_config;
45 		axi_value = MP0_ACINACTM;
46 		break;
47 	case 0x100:
48 		axi_config = (uintptr_t)&mt8183_mcucfg->mp2_axi_config;
49 		axi_value = MP2_ACINACTM;
50 		break;
51 	default:
52 		ERROR("%s: mpidr does not exist\n", __func__);
53 		panic();
54 	}
55 	mmio_clrbits_32(axi_config, axi_value);
56 }
57