1 /*
2 * Copyright (c) 2025, MediaTek Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #include <stddef.h>
8 #include <mtk_disp_priv.h>
9 #include <mtk_sip_svc.h>
10
11 /* definition */
mtk_disp_disable_sec(uint32_t larb_id,uint32_t mmu_en_msk)12 static int mtk_disp_disable_sec(uint32_t larb_id, uint32_t mmu_en_msk)
13 {
14 const struct mtk_disp_config *disp_cfg_t;
15 uint32_t cfg_cnt;
16
17 for (cfg_cnt = 0; cfg_cnt < (disp_cfg_count - 1); cfg_cnt++) {
18 disp_cfg_t = &disp_cfg[cfg_cnt];
19 mmio_setbits_32(disp_cfg_t->base, disp_cfg_t->ns_mask);
20 }
21
22 disp_cfg_t = &disp_cfg[disp_cfg_count - 1];
23 mmio_clrbits_32(disp_cfg_t->base, disp_cfg_t->ns_mask);
24
25 return MTK_SIP_E_SUCCESS;
26 }
27
mtk_disp_handler(u_register_t x1,u_register_t x2,u_register_t x3,u_register_t x4,void * handle,struct smccc_res * smccc_ret)28 static u_register_t mtk_disp_handler(u_register_t x1, u_register_t x2,
29 u_register_t x3, u_register_t x4,
30 void *handle, struct smccc_res *smccc_ret)
31 {
32 uint32_t cmd_id = x1, mdl_id = x2, val = x3;
33 int ret = MTK_SIP_E_NOT_SUPPORTED;
34
35 (void)x4;
36 (void)handle;
37 (void)smccc_ret;
38
39 switch (cmd_id) {
40 case DISP_ATF_CMD_CONFIG_DISP_CONFIG:
41 ret = mtk_disp_disable_sec(mdl_id, val);
42 break;
43 default:
44 break;
45 }
46
47 return ret;
48 }
49 DECLARE_SMC_HANDLER(MTK_SIP_DISP_CONTROL, mtk_disp_handler);
50