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