1e1e4f7feSCK Hu /* SPDX-License-Identifier: GPL-2.0-only */ 2e1e4f7feSCK Hu /* 3e1e4f7feSCK Hu * Copyright (c) 2015 MediaTek Inc. 4e1e4f7feSCK Hu */ 5e1e4f7feSCK Hu 6e1e4f7feSCK Hu #ifndef MTK_MUTEX_H 7e1e4f7feSCK Hu #define MTK_MUTEX_H 8e1e4f7feSCK Hu 9e1e4f7feSCK Hu struct regmap; 10e1e4f7feSCK Hu struct device; 11e1e4f7feSCK Hu struct mtk_mutex; 12e1e4f7feSCK Hu 13*d0804085SMoudy Ho enum mtk_mutex_mod_index { 14*d0804085SMoudy Ho /* MDP table index */ 15*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RDMA0, 16*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RSZ0, 17*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RSZ1, 18*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_TDSHP0, 19*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_WROT0, 20*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_WDMA, 21*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_AAL0, 22*d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_CCORR0, 23*d0804085SMoudy Ho 24*d0804085SMoudy Ho MUTEX_MOD_IDX_MAX /* ALWAYS keep at the end */ 25*d0804085SMoudy Ho }; 26*d0804085SMoudy Ho 27*d0804085SMoudy Ho enum mtk_mutex_sof_index { 28*d0804085SMoudy Ho MUTEX_SOF_IDX_SINGLE_MODE, 29*d0804085SMoudy Ho 30*d0804085SMoudy Ho MUTEX_SOF_IDX_MAX /* ALWAYS keep at the end */ 31*d0804085SMoudy Ho }; 32*d0804085SMoudy Ho 33e1e4f7feSCK Hu struct mtk_mutex *mtk_mutex_get(struct device *dev); 34e1e4f7feSCK Hu int mtk_mutex_prepare(struct mtk_mutex *mutex); 35e1e4f7feSCK Hu void mtk_mutex_add_comp(struct mtk_mutex *mutex, 36e1e4f7feSCK Hu enum mtk_ddp_comp_id id); 37e1e4f7feSCK Hu void mtk_mutex_enable(struct mtk_mutex *mutex); 38e1e4f7feSCK Hu void mtk_mutex_disable(struct mtk_mutex *mutex); 39e1e4f7feSCK Hu void mtk_mutex_remove_comp(struct mtk_mutex *mutex, 40e1e4f7feSCK Hu enum mtk_ddp_comp_id id); 41e1e4f7feSCK Hu void mtk_mutex_unprepare(struct mtk_mutex *mutex); 42e1e4f7feSCK Hu void mtk_mutex_put(struct mtk_mutex *mutex); 43e1e4f7feSCK Hu void mtk_mutex_acquire(struct mtk_mutex *mutex); 44e1e4f7feSCK Hu void mtk_mutex_release(struct mtk_mutex *mutex); 45*d0804085SMoudy Ho int mtk_mutex_write_mod(struct mtk_mutex *mutex, 46*d0804085SMoudy Ho enum mtk_mutex_mod_index idx, 47*d0804085SMoudy Ho bool clear); 48*d0804085SMoudy Ho int mtk_mutex_write_sof(struct mtk_mutex *mutex, 49*d0804085SMoudy Ho enum mtk_mutex_sof_index idx); 50e1e4f7feSCK Hu 51e1e4f7feSCK Hu #endif /* MTK_MUTEX_H */ 52