Hi, Moudy: On Tue, 2022-03-15 at 14:10 +0800, Moudy Ho wrote: > In order to allow multiple modules to operate MUTEX hardware through > a common interfrace, a flexible index "mtk_mutex_table_index" needs > to > be added to replace original component ID so that like DDP and MDP > can add their own MUTEX table settings independently. > > In addition, 4 generic interface "mtk_mutex_set_mod", > "mtk_mutex_set_sof", > "mtk_mutex_clear_mod" and "mtk_mutex_clear_sof" have been added, > which is > expected to replace the "mtk_mutex_add_comp" and > "mtk_mutex_remove_comp" > pair originally dedicated to DDP in the future. > > Signed-off-by: Moudy Ho <moudy.ho@xxxxxxxxxxxx> > --- > drivers/soc/mediatek/mtk-mutex.c | 122 > +++++++++++++++++++++++++ > include/linux/soc/mediatek/mtk-mutex.h | 33 +++++++ > 2 files changed, 155 insertions(+) > [snip] > > diff --git a/include/linux/soc/mediatek/mtk-mutex.h > b/include/linux/soc/mediatek/mtk-mutex.h > index 6fe4ffbde290..c8355bb0e6d6 100644 > --- a/include/linux/soc/mediatek/mtk-mutex.h > +++ b/include/linux/soc/mediatek/mtk-mutex.h > @@ -10,14 +10,47 @@ struct regmap; > struct device; > struct mtk_mutex; > > +enum mtk_mutex_table_index { > + MUTEX_TABLE_IDX_NONE = 0, /* Invalid engine */ Useless, so remove this. > + > + /* MDP table index */ > + MUTEX_TABLE_IDX_MDP_RDMA0, > + MUTEX_TABLE_IDX_MDP_RSZ0, > + MUTEX_TABLE_IDX_MDP_RSZ1, > + MUTEX_TABLE_IDX_MDP_TDSHP0, > + MUTEX_TABLE_IDX_MDP_WROT0, > + MUTEX_TABLE_IDX_MDP_WDMA, > + MUTEX_TABLE_IDX_MDP_AAL0, > + MUTEX_TABLE_IDX_MDP_CCORR0, > + > + /* DDP table index */ > + MUTEX_TABLE_IDX_DDP_DSI0, > + MUTEX_TABLE_IDX_DDP_DSI1, > + MUTEX_TABLE_IDX_DDP_DSI2, > + MUTEX_TABLE_IDX_DDP_DSI3, > + MUTEX_TABLE_IDX_DDP_DPI0, > + MUTEX_TABLE_IDX_DDP_DPI1, > + MUTEX_TABLE_IDX_DDP_DP_INTF0, > + MUTEX_TABLE_IDX_DDP_DP_INTF1, If this patch would support DDP, add all DDP index. If this patch does not support DDP, remove these. Regards, CK > + > + MUTEX_TABLE_IDX_MAX /* ALWAYS keep at the end */ > +}; > + > struct mtk_mutex *mtk_mutex_get(struct device *dev); > int mtk_mutex_prepare(struct mtk_mutex *mutex); > void mtk_mutex_add_comp(struct mtk_mutex *mutex, > enum mtk_ddp_comp_id id); > +void mtk_mutex_set_mod(struct mtk_mutex *mutex, > + enum mtk_mutex_table_index idx); > +void mtk_mutex_set_sof(struct mtk_mutex *mutex, > + enum mtk_mutex_table_index idx); > void mtk_mutex_enable(struct mtk_mutex *mutex); > void mtk_mutex_disable(struct mtk_mutex *mutex); > void mtk_mutex_remove_comp(struct mtk_mutex *mutex, > enum mtk_ddp_comp_id id); > +void mtk_mutex_clear_mod(struct mtk_mutex *mutex, > + enum mtk_mutex_table_index idx); > +void mtk_mutex_clear_sof(struct mtk_mutex *mutex); > void mtk_mutex_unprepare(struct mtk_mutex *mutex); > void mtk_mutex_put(struct mtk_mutex *mutex); > void mtk_mutex_acquire(struct mtk_mutex *mutex);