From: Yongqiang Niu <yongqiang....@mediatek.com>

This patch add ddp component CCORR

Signed-off-by: Yongqiang Niu <yongqiang....@mediatek.com>
Reviewed-by: CK Hu <ck...@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 32 +++++++++++++++++++++++++++++
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h |  2 ++
 2 files changed, 34 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c 
b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
index ede15c9..b357b24 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
@@ -41,6 +41,12 @@
 #define DISP_AAL_EN                            0x0000
 #define DISP_AAL_SIZE                          0x0030
 
+#define DISP_CCORR_EN                          0x0000
+#define CCORR_EN                               BIT(0)
+#define DISP_CCORR_CFG                         0x0020
+#define CCORR_RELAY_MODE                       BIT(0)
+#define DISP_CCORR_SIZE                                0x0030
+
 #define DISP_GAMMA_EN                          0x0000
 #define DISP_GAMMA_CFG                         0x0020
 #define DISP_GAMMA_SIZE                                0x0030
@@ -131,6 +137,24 @@ static void mtk_aal_stop(struct mtk_ddp_comp *comp)
        writel_relaxed(0x0, comp->regs + DISP_AAL_EN);
 }
 
+static void mtk_ccorr_config(struct mtk_ddp_comp *comp, unsigned int w,
+                            unsigned int h, unsigned int vrefresh,
+                            unsigned int bpc)
+{
+       writel(h << 16 | w, comp->regs + DISP_CCORR_SIZE);
+       writel(CCORR_RELAY_MODE, comp->regs + DISP_CCORR_CFG);
+}
+
+static void mtk_ccorr_start(struct mtk_ddp_comp *comp)
+{
+       writel(CCORR_EN, comp->regs + DISP_CCORR_EN);
+}
+
+static void mtk_ccorr_stop(struct mtk_ddp_comp *comp)
+{
+       writel_relaxed(0x0, comp->regs + DISP_CCORR_EN);
+}
+
 static void mtk_gamma_config(struct mtk_ddp_comp *comp, unsigned int w,
                             unsigned int h, unsigned int vrefresh,
                             unsigned int bpc)
@@ -179,6 +203,12 @@ static void mtk_gamma_set(struct mtk_ddp_comp *comp,
        .stop = mtk_aal_stop,
 };
 
+static const struct mtk_ddp_comp_funcs ddp_ccorr = {
+       .config = mtk_ccorr_config,
+       .start = mtk_ccorr_start,
+       .stop = mtk_ccorr_stop,
+};
+
 static const struct mtk_ddp_comp_funcs ddp_gamma = {
        .gamma_set = mtk_gamma_set,
        .config = mtk_gamma_config,
@@ -200,6 +230,7 @@ static void mtk_gamma_set(struct mtk_ddp_comp *comp,
        [MTK_DISP_RDMA] = "rdma",
        [MTK_DISP_WDMA] = "wdma",
        [MTK_DISP_COLOR] = "color",
+       [MTK_DISP_CCORR] = "ccorr",
        [MTK_DISP_AAL] = "aal",
        [MTK_DISP_GAMMA] = "gamma",
        [MTK_DISP_UFOE] = "ufoe",
@@ -221,6 +252,7 @@ struct mtk_ddp_comp_match {
        [DDP_COMPONENT_AAL0]    = { MTK_DISP_AAL,       0, &ddp_aal },
        [DDP_COMPONENT_AAL1]    = { MTK_DISP_AAL,       1, &ddp_aal },
        [DDP_COMPONENT_BLS]     = { MTK_DISP_BLS,       0, NULL },
+       [DDP_COMPONENT_CCORR]   = { MTK_DISP_CCORR,     0, &ddp_ccorr },
        [DDP_COMPONENT_COLOR0]  = { MTK_DISP_COLOR,     0, NULL },
        [DDP_COMPONENT_COLOR1]  = { MTK_DISP_COLOR,     1, NULL },
        [DDP_COMPONENT_DPI0]    = { MTK_DPI,            0, NULL },
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h 
b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
index b8dc17e..bd5fcc9 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
@@ -28,6 +28,7 @@ enum mtk_ddp_comp_type {
        MTK_DISP_RDMA,
        MTK_DISP_WDMA,
        MTK_DISP_COLOR,
+       MTK_DISP_CCORR,
        MTK_DISP_AAL,
        MTK_DISP_GAMMA,
        MTK_DISP_UFOE,
@@ -44,6 +45,7 @@ enum mtk_ddp_comp_id {
        DDP_COMPONENT_AAL0,
        DDP_COMPONENT_AAL1,
        DDP_COMPONENT_BLS,
+       DDP_COMPONENT_CCORR,
        DDP_COMPONENT_COLOR0,
        DDP_COMPONENT_COLOR1,
        DDP_COMPONENT_DPI0,
-- 
1.8.1.1.dirty

Reply via email to