0001
0002
0003
0004
0005
0006 #ifndef MTK_MUTEX_H
0007 #define MTK_MUTEX_H
0008
0009 struct regmap;
0010 struct device;
0011 struct mtk_mutex;
0012
0013 enum mtk_mutex_mod_index {
0014
0015 MUTEX_MOD_IDX_MDP_RDMA0,
0016 MUTEX_MOD_IDX_MDP_RSZ0,
0017 MUTEX_MOD_IDX_MDP_RSZ1,
0018 MUTEX_MOD_IDX_MDP_TDSHP0,
0019 MUTEX_MOD_IDX_MDP_WROT0,
0020 MUTEX_MOD_IDX_MDP_WDMA,
0021 MUTEX_MOD_IDX_MDP_AAL0,
0022 MUTEX_MOD_IDX_MDP_CCORR0,
0023
0024 MUTEX_MOD_IDX_MAX
0025 };
0026
0027 enum mtk_mutex_sof_index {
0028 MUTEX_SOF_IDX_SINGLE_MODE,
0029
0030 MUTEX_SOF_IDX_MAX
0031 };
0032
0033 struct mtk_mutex *mtk_mutex_get(struct device *dev);
0034 int mtk_mutex_prepare(struct mtk_mutex *mutex);
0035 void mtk_mutex_add_comp(struct mtk_mutex *mutex,
0036 enum mtk_ddp_comp_id id);
0037 void mtk_mutex_enable(struct mtk_mutex *mutex);
0038 int mtk_mutex_enable_by_cmdq(struct mtk_mutex *mutex,
0039 void *pkt);
0040 void mtk_mutex_disable(struct mtk_mutex *mutex);
0041 void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
0042 enum mtk_ddp_comp_id id);
0043 void mtk_mutex_unprepare(struct mtk_mutex *mutex);
0044 void mtk_mutex_put(struct mtk_mutex *mutex);
0045 void mtk_mutex_acquire(struct mtk_mutex *mutex);
0046 void mtk_mutex_release(struct mtk_mutex *mutex);
0047 int mtk_mutex_write_mod(struct mtk_mutex *mutex,
0048 enum mtk_mutex_mod_index idx,
0049 bool clear);
0050 int mtk_mutex_write_sof(struct mtk_mutex *mutex,
0051 enum mtk_mutex_sof_index idx);
0052
0053 #endif