Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright (c) 2015 MediaTek Inc.
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     /* MDP table index */
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       /* ALWAYS keep at the end */
0025 };
0026 
0027 enum mtk_mutex_sof_index {
0028     MUTEX_SOF_IDX_SINGLE_MODE,
0029 
0030     MUTEX_SOF_IDX_MAX       /* ALWAYS keep at the end */
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 /* MTK_MUTEX_H */