xref: /rk3399_ARM-atf/plat/mediatek/common/mtk_bl31_lib.c (revision 02309a84fbfb8b3469aa7dba52ea15c9bf2a768d)
1*97881aacSYidi Lin /*
2*97881aacSYidi Lin  * Copyright (c) 2025, MediaTek Inc. All rights reserved.
3*97881aacSYidi Lin  *
4*97881aacSYidi Lin  * SPDX-License-Identifier: BSD-3-Clause
5*97881aacSYidi Lin  */
6*97881aacSYidi Lin 
7*97881aacSYidi Lin #include <common/debug.h>
8*97881aacSYidi Lin #include <lib/xlat_tables/xlat_tables_v2.h>
9*97881aacSYidi Lin 
10*97881aacSYidi Lin #include <mtk_bl31_interface.h>
11*97881aacSYidi Lin #include <mtk_sip_svc.h>
12*97881aacSYidi Lin 
mtk_bl31_map_to_sip_error(enum mtk_bl31_status status)13*97881aacSYidi Lin int mtk_bl31_map_to_sip_error(enum mtk_bl31_status status)
14*97881aacSYidi Lin {
15*97881aacSYidi Lin 	switch (status) {
16*97881aacSYidi Lin 	case MTK_BL31_STATUS_SUCCESS:
17*97881aacSYidi Lin 		return MTK_SIP_E_SUCCESS;
18*97881aacSYidi Lin 	case MTK_BL31_STATUS_INVALID_PARAM:
19*97881aacSYidi Lin 		return MTK_SIP_E_INVALID_PARAM;
20*97881aacSYidi Lin 	case MTK_BL31_STATUS_NOT_SUPPORTED:
21*97881aacSYidi Lin 		return MTK_SIP_E_NOT_SUPPORTED;
22*97881aacSYidi Lin 	case MTK_BL31_STATUS_INVALID_RANGE:
23*97881aacSYidi Lin 		return MTK_SIP_E_INVALID_RANGE;
24*97881aacSYidi Lin 	case MTK_BL31_STATUS_PERMISSION_DENY:
25*97881aacSYidi Lin 		return MTK_SIP_E_PERMISSION_DENY;
26*97881aacSYidi Lin 	case MTK_BL31_STATUS_LOCK_FAIL:
27*97881aacSYidi Lin 		return MTK_SIP_E_LOCK_FAIL;
28*97881aacSYidi Lin 	default:
29*97881aacSYidi Lin 		ERROR("%s: unknown status: %d\n", __func__, status);
30*97881aacSYidi Lin 	}
31*97881aacSYidi Lin 
32*97881aacSYidi Lin 	return MTK_SIP_E_NOT_SUPPORTED;
33*97881aacSYidi Lin }
34*97881aacSYidi Lin 
mtk_bl31_mmap_add_dynamic_region(unsigned long long base_pa,size_t size,enum mtk_bl31_memory_type type)35*97881aacSYidi Lin int mtk_bl31_mmap_add_dynamic_region(unsigned long long base_pa, size_t size,
36*97881aacSYidi Lin 				     enum mtk_bl31_memory_type type)
37*97881aacSYidi Lin {
38*97881aacSYidi Lin 	unsigned int attr;
39*97881aacSYidi Lin 
40*97881aacSYidi Lin 	switch (type) {
41*97881aacSYidi Lin 	case MTK_BL31_DEV_RW_SEC:
42*97881aacSYidi Lin 		attr = MT_DEVICE | MT_RW | MT_SECURE;
43*97881aacSYidi Lin 		break;
44*97881aacSYidi Lin 	default:
45*97881aacSYidi Lin 		attr = 0;
46*97881aacSYidi Lin 		ERROR("%s: unknown memory type %d\n", __func__, type);
47*97881aacSYidi Lin 		break;
48*97881aacSYidi Lin 	}
49*97881aacSYidi Lin 
50*97881aacSYidi Lin 	return mmap_add_dynamic_region(base_pa, base_pa, size, attr);
51*97881aacSYidi Lin }
52*97881aacSYidi Lin 
mtk_bl31_mmap_remove_dynamic_region(uintptr_t base_va,size_t size)53*97881aacSYidi Lin int mtk_bl31_mmap_remove_dynamic_region(uintptr_t base_va, size_t size)
54*97881aacSYidi Lin {
55*97881aacSYidi Lin 	return mmap_remove_dynamic_region(base_va, size);
56*97881aacSYidi Lin }
57