#define DISP_REG_OVL_EN                                0x000c
 #define DISP_REG_OVL_RST                       0x0014
 #define DISP_REG_OVL_ROI_SIZE                  0x0020
+#define DISP_REG_OVL_DATAPATH_CON              0x0024
+#define OVL_BGCLR_SEL_IN                               BIT(2)
 #define DISP_REG_OVL_ROI_BGCLR                 0x0028
 #define DISP_REG_OVL_SRC_CON                   0x002c
 #define DISP_REG_OVL_CON(n)                    (0x0030 + 0x20 * (n))
                mtk_ovl_layer_on(comp, idx);
 }
 
+static void mtk_ovl_bgclr_in_on(struct mtk_ddp_comp *comp)
+{
+       unsigned int reg;
+
+       reg = readl(comp->regs + DISP_REG_OVL_DATAPATH_CON);
+       reg = reg | OVL_BGCLR_SEL_IN;
+       writel(reg, comp->regs + DISP_REG_OVL_DATAPATH_CON);
+}
+
+static void mtk_ovl_bgclr_in_off(struct mtk_ddp_comp *comp)
+{
+       unsigned int reg;
+
+       reg = readl(comp->regs + DISP_REG_OVL_DATAPATH_CON);
+       reg = reg & ~OVL_BGCLR_SEL_IN;
+       writel(reg, comp->regs + DISP_REG_OVL_DATAPATH_CON);
+}
+
 static const struct mtk_ddp_comp_funcs mtk_disp_ovl_funcs = {
        .config = mtk_ovl_config,
        .start = mtk_ovl_start,
        .layer_on = mtk_ovl_layer_on,
        .layer_off = mtk_ovl_layer_off,
        .layer_config = mtk_ovl_layer_config,
+       .bgclr_in_on = mtk_ovl_bgclr_in_on,
+       .bgclr_in_off = mtk_ovl_bgclr_in_off,
 };
 
 static int mtk_disp_ovl_bind(struct device *dev, struct device *master,