diff --git a/msm/dsi/dsi_ctrl.c b/msm/dsi/dsi_ctrl.c index ed7a21c2bc..769fc10b9a 100644 --- a/msm/dsi/dsi_ctrl.c +++ b/msm/dsi/dsi_ctrl.c @@ -1027,7 +1027,12 @@ static int dsi_ctrl_update_link_freqs(struct dsi_ctrl *dsi_ctrl, bit_rate_per_lane = bit_rate; do_div(bit_rate_per_lane, num_of_lanes); byte_clk_rate = bit_rate_per_lane; - do_div(byte_clk_rate, 8); + /** + * Ensure that the byte clock rate is even to avoid failures + * during set rate for byte intf clock. + */ + byte_clk_rate = DIV_ROUND_CLOSEST(byte_clk_rate, 8); + byte_clk_rate &= ~BIT(0); byte_intf_clk_rate = byte_clk_rate; byte_intf_clk_div = host_cfg->byte_intf_clk_div; do_div(byte_intf_clk_rate, byte_intf_clk_div);