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 */ 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 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