feat(mediatek): add APIs exposed to the static library

To decrease the static library's dependency on TF-A, add API wrappers
for mmap_add_dynamic_region and mmap_remove_dynamic_region.
mtk_bl31_map_to_sip_error is also added for translating mtk_bl31_status
codes to their corresponding MKT_SIP_E* error codes.

Change-Id: Ib4a3593ee8b481b076430d054c08f33cc3b2fa08
Signed-off-by: Yidi Lin <yidilin@chromium.org>
diff --git a/plat/mediatek/common/mtk_bl31_lib.c b/plat/mediatek/common/mtk_bl31_lib.c
new file mode 100644
index 0000000..3428471
--- /dev/null
+++ b/plat/mediatek/common/mtk_bl31_lib.c
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2025, MediaTek Inc. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <common/debug.h>
+#include <lib/xlat_tables/xlat_tables_v2.h>
+
+#include <mtk_bl31_interface.h>
+#include <mtk_sip_svc.h>
+
+int mtk_bl31_map_to_sip_error(enum mtk_bl31_status status)
+{
+	switch (status) {
+	case MTK_BL31_STATUS_SUCCESS:
+		return MTK_SIP_E_SUCCESS;
+	case MTK_BL31_STATUS_INVALID_PARAM:
+		return MTK_SIP_E_INVALID_PARAM;
+	case MTK_BL31_STATUS_NOT_SUPPORTED:
+		return MTK_SIP_E_NOT_SUPPORTED;
+	case MTK_BL31_STATUS_INVALID_RANGE:
+		return MTK_SIP_E_INVALID_RANGE;
+	case MTK_BL31_STATUS_PERMISSION_DENY:
+		return MTK_SIP_E_PERMISSION_DENY;
+	case MTK_BL31_STATUS_LOCK_FAIL:
+		return MTK_SIP_E_LOCK_FAIL;
+	default:
+		ERROR("%s: unknown status: %d\n", __func__, status);
+	}
+
+	return MTK_SIP_E_NOT_SUPPORTED;
+}
+
+int mtk_bl31_mmap_add_dynamic_region(unsigned long long base_pa, size_t size,
+				     enum mtk_bl31_memory_type type)
+{
+	unsigned int attr;
+
+	switch (type) {
+	case MTK_BL31_DEV_RW_SEC:
+		attr = MT_DEVICE | MT_RW | MT_SECURE;
+		break;
+	default:
+		attr = 0;
+		ERROR("%s: unknown memory type %d\n", __func__, type);
+		break;
+	}
+
+	return mmap_add_dynamic_region(base_pa, base_pa, size, attr);
+}
+
+int mtk_bl31_mmap_remove_dynamic_region(uintptr_t base_va, size_t size)
+{
+	return mmap_remove_dynamic_region(base_va, size);
+}