* @edge_cfg_in_mmsys: If the edge configuration for DPI's output needs to be set in MMSYS.
  * @clocked_by_hdmi: HDMI IP outputs clock to dpi_pixel_clk input clock, needed
  *                  for DPI registers access.
+ * @output_1pixel: Enable outputting one pixel per round; if the input is two pixel per
+ *                 round, the DPI hardware will internally transform it to 1T1P.
  */
 struct mtk_dpi_conf {
        const struct mtk_dpi_factor *dpi_factor;
        u32 pixels_per_iter;
        bool edge_cfg_in_mmsys;
        bool clocked_by_hdmi;
+       bool output_1pixel;
 };
 
 static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, u32 mask)
        if (dpi->conf->support_direct_pin) {
                mtk_dpi_config_yc_map(dpi, dpi->yc_map);
                mtk_dpi_config_2n_h_fre(dpi);
-               mtk_dpi_dual_edge(dpi);
+
+               /* DPI can connect to either an external bridge or the internal HDMI encoder */
+               if (dpi->conf->output_1pixel)
+                       mtk_dpi_mask(dpi, DPI_CON, DPI_OUTPUT_1T1P_EN, DPI_OUTPUT_1T1P_EN);
+               else
+                       mtk_dpi_dual_edge(dpi);
+
                mtk_dpi_config_disable_edge(dpi);
        }
        if (dpi->conf->input_2p_en_bit) {
 
 #define FAKE_DE_LEVEN                  BIT(21)
 #define FAKE_DE_RODD                   BIT(22)
 #define FAKE_DE_REVEN                  BIT(23)
+
+/* DPI_CON: DPI instances */
+#define DPI_OUTPUT_1T1P_EN             BIT(24)
+/* DPI_CON: DPINTF instances */
 #define DPINTF_YUV422_EN               BIT(24)
 #define DPINTF_CSC_ENABLE              BIT(26)
 #define DPINTF_INPUT_2P_EN             BIT(29)