csel = bfin_read32(CGU0_DIV) & 0x1F;
 #endif
 
-       for (index = 0;  (cclk >> index) >= min_cclk && csel <= 3; index++, csel++) {
+       for (index = 0;  (cclk >> index) >= min_cclk && csel <= 3 && index < 3; index++, csel++) {
                bfin_freq_table[index].frequency = cclk >> index;
 #ifndef CONFIG_BF60x
                dpm_state_table[index].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
-               dpm_state_table[index].tscale =  (TIME_SCALE / (1 << csel)) - 1;
 #else
                dpm_state_table[index].csel = csel;
-               dpm_state_table[index].tscale =  TIME_SCALE >> index;
 #endif
+               dpm_state_table[index].tscale =  (TIME_SCALE >> index) - 1;
 
                pr_debug("cpufreq: freq:%d csel:0x%x tscale:%d\n",
                                                 bfin_freq_table[index].frequency,