diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c b/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c index dd2c01ded2aa..30d106b631ab 100644 --- a/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c +++ b/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c @@ -293,8 +293,9 @@ static void rk618_dsi_set_hs_clk(struct rk618_dsi *dsi) bandwidth = (u64)mode->clock * 1000 * bpp; do_div(bandwidth, lanes); - bandwidth = bandwidth * 10 / 9; - bandwidth = bandwidth / USEC_PER_SEC * USEC_PER_SEC; + bandwidth = div_u64(bandwidth * 10, 9); + bandwidth = div_u64(bandwidth, USEC_PER_SEC); + bandwidth = bandwidth * USEC_PER_SEC; fout = bandwidth; } diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c b/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c index 7ea34e3d9b30..12343f14b6c2 100644 --- a/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c +++ b/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c @@ -85,7 +85,7 @@ static void calc_dsp_frm_hst_vst(const struct videomode *src, { u32 bp_in, bp_out; u32 v_scale_ratio; - long long t_frm_st; + u64 t_frm_st; u64 t_bp_in, t_bp_out, t_delta, tin; u32 src_pixclock, dst_pixclock; u32 dsp_htotal, src_htotal, src_vtotal; @@ -300,8 +300,9 @@ static void rk618_scaler_bridge_mode_set(struct drm_bridge *bridge, dclk_rate = src->clock * 1000; sclk_rate = (u64)dclk_rate * dst->vdisplay * dst->htotal; do_div(sclk_rate, src->vdisplay * src->htotal); - sclk_rate = sclk_rate / 1000 * 1000; - dst->clock = sclk_rate / 1000; + sclk_rate = div_u64(sclk_rate, 1000); + sclk_rate = sclk_rate * 1000; + dst->clock = div_u64(sclk_rate, 1000); scl->bridge->driver_private = dst; DRM_DEV_INFO(scl->dev, "src=%s, dst=%s\n", src->name, dst->name);