diff --git a/drivers/gpu/imx/dpu/dpu-framegen.c b/drivers/gpu/imx/dpu/dpu-framegen.c index aac9efbd4d2c6e725255aa542a763911227c1b81..50d7d50e1ff8766886adfde535f6a765ef8a9131 100644 --- a/drivers/gpu/imx/dpu/dpu-framegen.c +++ b/drivers/gpu/imx/dpu/dpu-framegen.c @@ -250,12 +250,16 @@ void framegen_cfg_videomode(struct dpu_framegen *fg, struct drm_display_mode *m, disp_clock_rate = m->crtc_clock * 1000; if (encoder_type == DRM_MODE_ENCODER_TMDS) { - if (side_by_side) + clk_set_parent(fg->clk_disp, fg->clk_bypass); + if (side_by_side) { dpu_pxlink_set_mst_addr(dpu, fg->id, fg->id ? 2 : 1); - else + clk_set_rate(fg->clk_bypass, disp_clock_rate / 2); + clk_set_rate(fg->clk_disp, disp_clock_rate / 2); + } else { dpu_pxlink_set_mst_addr(dpu, fg->id, 1); - - clk_set_parent(fg->clk_disp, fg->clk_bypass); + clk_set_rate(fg->clk_bypass, disp_clock_rate); + clk_set_rate(fg->clk_disp, disp_clock_rate); + } fg->use_bypass_clk = true; } else {