.. | .. |
---|
2240 | 2240 | ASIC_INTERNAL_MEMORY_SS, vco_freq)) { |
---|
2241 | 2241 | u32 reference_clock = rdev->clock.mpll.reference_freq; |
---|
2242 | 2242 | u32 decoded_ref = rv740_get_decoded_reference_divider(dividers.ref_div); |
---|
2243 | | - u32 clk_s = reference_clock * 5 / (decoded_ref * ss.rate); |
---|
2244 | | - u32 clk_v = ss.percentage * |
---|
| 2243 | + u32 clk_s, clk_v; |
---|
| 2244 | + |
---|
| 2245 | + if (!decoded_ref) |
---|
| 2246 | + return -EINVAL; |
---|
| 2247 | + clk_s = reference_clock * 5 / (decoded_ref * ss.rate); |
---|
| 2248 | + clk_v = ss.percentage * |
---|
2245 | 2249 | (0x4000 * dividers.whole_fb_div + 0x800 * dividers.frac_fb_div) / (clk_s * 625); |
---|
2246 | 2250 | |
---|
2247 | 2251 | mpll_ss1 &= ~CLKV_MASK; |
---|