mtk-mutex.h 1.4 KB

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