169970765Sxiandong.wang /* 269970765Sxiandong.wang * Copyright (c) 2025, MediaTek Inc. All rights reserved. 369970765Sxiandong.wang * 469970765Sxiandong.wang * SPDX-License-Identifier: BSD-3-Clause 569970765Sxiandong.wang */ 669970765Sxiandong.wang 769970765Sxiandong.wang #include <stddef.h> 869970765Sxiandong.wang #include <mtk_disp_priv.h> 969970765Sxiandong.wang #include <mtk_sip_svc.h> 1069970765Sxiandong.wang 11*0f462e65SXiandong Wang /* definition */ 1269970765Sxiandong.wang static int mtk_disp_disable_sec(uint32_t larb_id, uint32_t mmu_en_msk) 1369970765Sxiandong.wang { 1469970765Sxiandong.wang const struct mtk_disp_config *disp_cfg_t; 1569970765Sxiandong.wang uint32_t cfg_cnt; 1669970765Sxiandong.wang 1769970765Sxiandong.wang for (cfg_cnt = 0; cfg_cnt < (disp_cfg_count - 1); cfg_cnt++) { 1869970765Sxiandong.wang disp_cfg_t = &disp_cfg[cfg_cnt]; 1969970765Sxiandong.wang mmio_setbits_32(disp_cfg_t->base, disp_cfg_t->ns_mask); 2069970765Sxiandong.wang } 2169970765Sxiandong.wang 2269970765Sxiandong.wang disp_cfg_t = &disp_cfg[disp_cfg_count - 1]; 2369970765Sxiandong.wang mmio_clrbits_32(disp_cfg_t->base, disp_cfg_t->ns_mask); 2469970765Sxiandong.wang 2569970765Sxiandong.wang return MTK_SIP_E_SUCCESS; 2669970765Sxiandong.wang } 2769970765Sxiandong.wang 2869970765Sxiandong.wang static u_register_t mtk_disp_handler(u_register_t x1, u_register_t x2, 2969970765Sxiandong.wang u_register_t x3, u_register_t x4, 3069970765Sxiandong.wang void *handle, struct smccc_res *smccc_ret) 3169970765Sxiandong.wang { 3269970765Sxiandong.wang uint32_t cmd_id = x1, mdl_id = x2, val = x3; 3369970765Sxiandong.wang int ret = MTK_SIP_E_NOT_SUPPORTED; 3469970765Sxiandong.wang 3569970765Sxiandong.wang (void)x4; 3669970765Sxiandong.wang (void)handle; 3769970765Sxiandong.wang (void)smccc_ret; 3869970765Sxiandong.wang 3969970765Sxiandong.wang switch (cmd_id) { 4069970765Sxiandong.wang case DISP_ATF_CMD_CONFIG_DISP_CONFIG: 4169970765Sxiandong.wang ret = mtk_disp_disable_sec(mdl_id, val); 4269970765Sxiandong.wang break; 4369970765Sxiandong.wang default: 4469970765Sxiandong.wang break; 4569970765Sxiandong.wang } 4669970765Sxiandong.wang 4769970765Sxiandong.wang return ret; 4869970765Sxiandong.wang } 4969970765Sxiandong.wang DECLARE_SMC_HANDLER(MTK_SIP_DISP_CONTROL, mtk_disp_handler); 50