diff --git a/sys/dev/drm/radeon/rv730_dpm.c b/sys/dev/drm/radeon/rv730_dpm.c --- a/sys/dev/drm/radeon/rv730_dpm.c +++ b/sys/dev/drm/radeon/rv730_dpm.c @@ -94,8 +94,8 @@ if (radeon_atombios_get_asic_ss_info(rdev, &ss, ASIC_INTERNAL_ENGINE_SS, vco_freq)) { - u32 clk_s = reference_clock * 5 / (reference_divider * ss.rate); - u32 clk_v = ss.percentage * fbdiv / (clk_s * 10000); + u32 clk_s = (ss.rate == 0) ? 0 : reference_clock * 5 / (reference_divider * ss.rate); + u32 clk_v = (clk_s == 0) ? 0 : ss.percentage * fbdiv / (clk_s * 10000); cg_spll_spread_spectrum &= ~CLK_S_MASK; cg_spll_spread_spectrum |= CLK_S(clk_s); @@ -170,8 +170,8 @@ if (radeon_atombios_get_asic_ss_info(rdev, &ss, ASIC_INTERNAL_MEMORY_SS, vco_freq)) { u32 reference_clock = rdev->clock.mpll.reference_freq; - u32 clk_s = reference_clock * 5 / (reference_divider * ss.rate); - u32 clk_v = ss.percentage * dividers.fb_div / (clk_s * 10000); + u32 clk_s = (ss.rate == 0) ? 0 : reference_clock * 5 / (reference_divider * ss.rate); + u32 clk_v = (clk_s == 0) ? 0 : ss.percentage * dividers.fb_div / (clk_s * 10000); mpll_ss &= ~CLK_S_MASK; mpll_ss |= CLK_S(clk_s);