#ifndef __SOC_MEDIATEK_MT8186_MMSYS_H
 #define __SOC_MEDIATEK_MT8186_MMSYS_H
 
+/* Values for DPI configuration in MMSYS address space */
+#define MT8186_MMSYS_DPI_OUTPUT_FORMAT         0x400
+#define DPI_FORMAT_MASK                                        0x1
+#define DPI_RGB888_DDR_CON                             BIT(0)
+#define DPI_RGB565_SDR_CON                             BIT(1)
+
 #define MT8186_MMSYS_OVL_CON                   0xF04
 #define MT8186_MMSYS_OVL0_CON_MASK                     0x3
 #define MT8186_MMSYS_OVL0_2L_CON_MASK                  0xC
 
 }
 EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_disconnect);
 
+static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32 offset, u32 mask, u32 val)
+{
+       u32 tmp;
+
+       tmp = readl_relaxed(mmsys->regs + offset);
+       tmp = (tmp & ~mask) | val;
+       writel_relaxed(tmp, mmsys->regs + offset);
+}
+
+void mtk_mmsys_ddp_dpi_fmt_config(struct device *dev, u32 val)
+{
+       if (val)
+               mtk_mmsys_update_bits(dev_get_drvdata(dev), MT8186_MMSYS_DPI_OUTPUT_FORMAT,
+                                     DPI_RGB888_DDR_CON, DPI_FORMAT_MASK);
+       else
+               mtk_mmsys_update_bits(dev_get_drvdata(dev), MT8186_MMSYS_DPI_OUTPUT_FORMAT,
+                                     DPI_RGB565_SDR_CON, DPI_FORMAT_MASK);
+}
+EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_dpi_fmt_config);
+
 static int mtk_mmsys_reset_update(struct reset_controller_dev *rcdev, unsigned long id,
                                  bool assert)
 {
 
                              enum mtk_ddp_comp_id cur,
                              enum mtk_ddp_comp_id next);
 
+void mtk_mmsys_ddp_dpi_fmt_config(struct device *dev, u32 val);
+
 #endif /* __MTK_MMSYS_H */