11d33f13aSCK Hu /* SPDX-License-Identifier: GPL-2.0-only */
21d33f13aSCK Hu /*
31d33f13aSCK Hu  * Copyright (c) 2020 MediaTek Inc.
41d33f13aSCK Hu  */
51d33f13aSCK Hu 
61d33f13aSCK Hu #ifndef _MTK_DISP_DRV_H_
71d33f13aSCK Hu #define _MTK_DISP_DRV_H_
81d33f13aSCK Hu 
91d33f13aSCK Hu #include <linux/soc/mediatek/mtk-cmdq.h>
101d33f13aSCK Hu #include "mtk_drm_plane.h"
111d33f13aSCK Hu 
121d33f13aSCK Hu void mtk_color_bypass_shadow(struct device *dev);
131d33f13aSCK Hu int mtk_color_clk_enable(struct device *dev);
141d33f13aSCK Hu void mtk_color_clk_disable(struct device *dev);
151d33f13aSCK Hu void mtk_color_config(struct device *dev, unsigned int w,
161d33f13aSCK Hu 		      unsigned int h, unsigned int vrefresh,
171d33f13aSCK Hu 		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
181d33f13aSCK Hu void mtk_color_start(struct device *dev);
191d33f13aSCK Hu 
20a6b7c98aSHsin-Yi Wang void mtk_dither_set_common(void __iomem *regs, struct cmdq_client_reg *cmdq_reg,
21a6b7c98aSHsin-Yi Wang 			   unsigned int bpc, unsigned int cfg,
22a6b7c98aSHsin-Yi Wang 			   unsigned int dither_en, struct cmdq_pkt *cmdq_pkt);
23a6b7c98aSHsin-Yi Wang 
241d33f13aSCK Hu void mtk_dpi_start(struct device *dev);
251d33f13aSCK Hu void mtk_dpi_stop(struct device *dev);
261d33f13aSCK Hu 
271d33f13aSCK Hu void mtk_dsi_ddp_start(struct device *dev);
281d33f13aSCK Hu void mtk_dsi_ddp_stop(struct device *dev);
291d33f13aSCK Hu 
30*69a4237aSYongqiang Niu int mtk_gamma_clk_enable(struct device *dev);
31*69a4237aSYongqiang Niu void mtk_gamma_clk_disable(struct device *dev);
32*69a4237aSYongqiang Niu void mtk_gamma_config(struct device *dev, unsigned int w,
33*69a4237aSYongqiang Niu 		      unsigned int h, unsigned int vrefresh,
34*69a4237aSYongqiang Niu 		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
35*69a4237aSYongqiang Niu void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state);
36*69a4237aSYongqiang Niu void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state);
37*69a4237aSYongqiang Niu void mtk_gamma_start(struct device *dev);
38*69a4237aSYongqiang Niu void mtk_gamma_stop(struct device *dev);
39*69a4237aSYongqiang Niu 
401d33f13aSCK Hu void mtk_ovl_bgclr_in_on(struct device *dev);
411d33f13aSCK Hu void mtk_ovl_bgclr_in_off(struct device *dev);
421d33f13aSCK Hu void mtk_ovl_bypass_shadow(struct device *dev);
431d33f13aSCK Hu int mtk_ovl_clk_enable(struct device *dev);
441d33f13aSCK Hu void mtk_ovl_clk_disable(struct device *dev);
451d33f13aSCK Hu void mtk_ovl_config(struct device *dev, unsigned int w,
461d33f13aSCK Hu 		    unsigned int h, unsigned int vrefresh,
471d33f13aSCK Hu 		    unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
481d33f13aSCK Hu int mtk_ovl_layer_check(struct device *dev, unsigned int idx,
491d33f13aSCK Hu 			struct mtk_plane_state *mtk_state);
501d33f13aSCK Hu void mtk_ovl_layer_config(struct device *dev, unsigned int idx,
511d33f13aSCK Hu 			  struct mtk_plane_state *state,
521d33f13aSCK Hu 			  struct cmdq_pkt *cmdq_pkt);
531d33f13aSCK Hu unsigned int mtk_ovl_layer_nr(struct device *dev);
541d33f13aSCK Hu void mtk_ovl_layer_on(struct device *dev, unsigned int idx,
551d33f13aSCK Hu 		      struct cmdq_pkt *cmdq_pkt);
561d33f13aSCK Hu void mtk_ovl_layer_off(struct device *dev, unsigned int idx,
571d33f13aSCK Hu 		       struct cmdq_pkt *cmdq_pkt);
581d33f13aSCK Hu void mtk_ovl_start(struct device *dev);
591d33f13aSCK Hu void mtk_ovl_stop(struct device *dev);
601d33f13aSCK Hu unsigned int mtk_ovl_supported_rotations(struct device *dev);
611d33f13aSCK Hu void mtk_ovl_enable_vblank(struct device *dev,
621d33f13aSCK Hu 			   void (*vblank_cb)(void *),
631d33f13aSCK Hu 			   void *vblank_cb_data);
641d33f13aSCK Hu void mtk_ovl_disable_vblank(struct device *dev);
651d33f13aSCK Hu 
661d33f13aSCK Hu void mtk_rdma_bypass_shadow(struct device *dev);
671d33f13aSCK Hu int mtk_rdma_clk_enable(struct device *dev);
681d33f13aSCK Hu void mtk_rdma_clk_disable(struct device *dev);
691d33f13aSCK Hu void mtk_rdma_config(struct device *dev, unsigned int width,
701d33f13aSCK Hu 		     unsigned int height, unsigned int vrefresh,
711d33f13aSCK Hu 		     unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
721d33f13aSCK Hu unsigned int mtk_rdma_layer_nr(struct device *dev);
731d33f13aSCK Hu void mtk_rdma_layer_config(struct device *dev, unsigned int idx,
741d33f13aSCK Hu 			   struct mtk_plane_state *state,
751d33f13aSCK Hu 			   struct cmdq_pkt *cmdq_pkt);
761d33f13aSCK Hu void mtk_rdma_start(struct device *dev);
771d33f13aSCK Hu void mtk_rdma_stop(struct device *dev);
781d33f13aSCK Hu void mtk_rdma_enable_vblank(struct device *dev,
791d33f13aSCK Hu 			    void (*vblank_cb)(void *),
801d33f13aSCK Hu 			    void *vblank_cb_data);
811d33f13aSCK Hu void mtk_rdma_disable_vblank(struct device *dev);
821d33f13aSCK Hu 
831d33f13aSCK Hu #endif
84