xref: /rk3399_ARM-atf/plat/mediatek/drivers/apusys/mt8188/apusys_security_ctrl_plat.c (revision 999503d285475f8920111f3fd760312ddf1d5b5b)
1b5900c92SKarl Li /*
2*7ed4d67cSKarl Li  * Copyright (c) 2023-2024, MediaTek Inc. All rights reserved.
3b5900c92SKarl Li  *
4b5900c92SKarl Li  * SPDX-License-Identifier: BSD-3-Clause
5b5900c92SKarl Li  */
6b5900c92SKarl Li 
7b5900c92SKarl Li /* TF-A system header */
8b5900c92SKarl Li #include <common/debug.h>
9b5900c92SKarl Li #include <lib/mmio.h>
10b5900c92SKarl Li 
11*7ed4d67cSKarl Li #include "emi_mpu.h"
12*7ed4d67cSKarl Li 
13b5900c92SKarl Li /* Vendor header */
14b5900c92SKarl Li #include "apusys_security_ctrl_plat.h"
15b5900c92SKarl Li 
apusys_domain_remap_init(void)16b5900c92SKarl Li static void apusys_domain_remap_init(void)
17b5900c92SKarl Li {
18b5900c92SKarl Li 	const uint32_t remap_domains[] = {
19b5900c92SKarl Li 		D0_REMAP_DOMAIN,  D1_REMAP_DOMAIN,  D2_REMAP_DOMAIN,  D3_REMAP_DOMAIN,
20b5900c92SKarl Li 		D4_REMAP_DOMAIN,  D5_REMAP_DOMAIN,  D6_REMAP_DOMAIN,  D7_REMAP_DOMAIN,
21b5900c92SKarl Li 		D8_REMAP_DOMAIN,  D9_REMAP_DOMAIN,  D10_REMAP_DOMAIN, D11_REMAP_DOMAIN,
22b5900c92SKarl Li 		D12_REMAP_DOMAIN, D13_REMAP_DOMAIN, D14_REMAP_DOMAIN, D15_REMAP_DOMAIN
23b5900c92SKarl Li 	};
24b5900c92SKarl Li 	uint32_t lower_domain = 0;
25b5900c92SKarl Li 	uint32_t higher_domain = 0;
26b5900c92SKarl Li 	int i;
27b5900c92SKarl Li 
28b5900c92SKarl Li 	for (i = 0; i < ARRAY_SIZE(remap_domains); i++) {
29b5900c92SKarl Li 		if (i < REG_DOMAIN_NUM) {
30b5900c92SKarl Li 			lower_domain |= (remap_domains[i] << (i * REG_DOMAIN_BITS));
31b5900c92SKarl Li 		} else {
32b5900c92SKarl Li 			higher_domain |= (remap_domains[i] <<
33b5900c92SKarl Li 					  ((i - REG_DOMAIN_NUM) * REG_DOMAIN_BITS));
34b5900c92SKarl Li 		}
35b5900c92SKarl Li 	}
36b5900c92SKarl Li 
37b5900c92SKarl Li 	mmio_write_32(SOC2APU_SET1_0, lower_domain);
38b5900c92SKarl Li 	mmio_write_32(SOC2APU_SET1_1, higher_domain);
39b5900c92SKarl Li 	mmio_setbits_32(APU_SEC_CON, DOMAIN_REMAP_SEL);
40b5900c92SKarl Li }
41b5900c92SKarl Li 
apusys_security_ctrl_init(void)42b5900c92SKarl Li void apusys_security_ctrl_init(void)
43b5900c92SKarl Li {
44b5900c92SKarl Li 	apusys_domain_remap_init();
45b5900c92SKarl Li }
46*7ed4d67cSKarl Li 
apusys_plat_setup_sec_mem(void)47*7ed4d67cSKarl Li int apusys_plat_setup_sec_mem(void)
48*7ed4d67cSKarl Li {
49*7ed4d67cSKarl Li 	return set_apu_emi_mpu_region();
50*7ed4d67cSKarl Li }
51