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 13d0804085SMoudy Ho enum mtk_mutex_mod_index { 14d0804085SMoudy Ho /* MDP table index */ 15d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RDMA0, 16d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RSZ0, 17d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_RSZ1, 18d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_TDSHP0, 19d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_WROT0, 20d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_WDMA, 21d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_AAL0, 22d0804085SMoudy Ho MUTEX_MOD_IDX_MDP_CCORR0, 2321370ecdSAllen-KH Cheng MUTEX_MOD_IDX_MDP_HDR0, 2421370ecdSAllen-KH Cheng MUTEX_MOD_IDX_MDP_COLOR0, 25*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_RDMA1, 26*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_RDMA2, 27*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_RDMA3, 28*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_STITCH0, 29*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_FG0, 30*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_FG1, 31*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_FG2, 32*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_FG3, 33*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_HDR1, 34*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_HDR2, 35*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_HDR3, 36*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_AAL1, 37*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_AAL2, 38*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_AAL3, 39*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_RSZ2, 40*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_RSZ3, 41*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_MERGE2, 42*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_MERGE3, 43*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_TDSHP1, 44*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_TDSHP2, 45*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_TDSHP3, 46*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_COLOR1, 47*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_COLOR2, 48*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_COLOR3, 49*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_OVL0, 50*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_OVL1, 51*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_PAD0, 52*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_PAD1, 53*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_PAD2, 54*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_PAD3, 55*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_TCC0, 56*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_TCC1, 57*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_WROT1, 58*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_WROT2, 59*549053b6SRoy-CW.Yeh MUTEX_MOD_IDX_MDP_WROT3, 60d0804085SMoudy Ho 61d0804085SMoudy Ho MUTEX_MOD_IDX_MAX /* ALWAYS keep at the end */ 62d0804085SMoudy Ho }; 63d0804085SMoudy Ho 64d0804085SMoudy Ho enum mtk_mutex_sof_index { 65d0804085SMoudy Ho MUTEX_SOF_IDX_SINGLE_MODE, 66d0804085SMoudy Ho 67d0804085SMoudy Ho MUTEX_SOF_IDX_MAX /* ALWAYS keep at the end */ 68d0804085SMoudy Ho }; 69d0804085SMoudy Ho 70e1e4f7feSCK Hu struct mtk_mutex *mtk_mutex_get(struct device *dev); 71e1e4f7feSCK Hu int mtk_mutex_prepare(struct mtk_mutex *mutex); 72e1e4f7feSCK Hu void mtk_mutex_add_comp(struct mtk_mutex *mutex, 73e1e4f7feSCK Hu enum mtk_ddp_comp_id id); 74e1e4f7feSCK Hu void mtk_mutex_enable(struct mtk_mutex *mutex); 75e5758850SMoudy Ho int mtk_mutex_enable_by_cmdq(struct mtk_mutex *mutex, 76e5758850SMoudy Ho void *pkt); 77e1e4f7feSCK Hu void mtk_mutex_disable(struct mtk_mutex *mutex); 78e1e4f7feSCK Hu void mtk_mutex_remove_comp(struct mtk_mutex *mutex, 79e1e4f7feSCK Hu enum mtk_ddp_comp_id id); 80e1e4f7feSCK Hu void mtk_mutex_unprepare(struct mtk_mutex *mutex); 81e1e4f7feSCK Hu void mtk_mutex_put(struct mtk_mutex *mutex); 82e1e4f7feSCK Hu void mtk_mutex_acquire(struct mtk_mutex *mutex); 83e1e4f7feSCK Hu void mtk_mutex_release(struct mtk_mutex *mutex); 84d0804085SMoudy Ho int mtk_mutex_write_mod(struct mtk_mutex *mutex, 85d0804085SMoudy Ho enum mtk_mutex_mod_index idx, 86d0804085SMoudy Ho bool clear); 87d0804085SMoudy Ho int mtk_mutex_write_sof(struct mtk_mutex *mutex, 88d0804085SMoudy Ho enum mtk_mutex_sof_index idx); 89e1e4f7feSCK Hu 90e1e4f7feSCK Hu #endif /* MTK_MUTEX_H */ 91