* "clk" parameter in kHz
         * returns calculated clock
         */
-       int cv = nouveau_bios(subdev)->version.chip;
+       struct nouveau_bios *bios = nouveau_bios(subdev);
        int minvco = info->vco1.min_freq, maxvco = info->vco1.max_freq;
        int minM = info->vco1.min_m, maxM = info->vco1.max_m;
        int minN = info->vco1.min_n, maxN = info->vco1.max_n;
 
        /* this division verified for nv20, nv18, nv28 (Haiku), and nv34 */
        /* possibly correlated with introduction of 27MHz crystal */
-       if (cv < 0x17 || cv == 0x1a || cv == 0x20) {
-               if (clk > 250000)
-                       maxM = 6;
-               if (clk > 340000)
-                       maxM = 2;
-       } else if (cv < 0x40) {
-               if (clk > 150000)
-                       maxM = 6;
-               if (clk > 200000)
-                       maxM = 4;
-               if (clk > 340000)
-                       maxM = 2;
+       if (bios->version.major < 0x60) {
+               int cv = bios->version.chip;
+               if (cv < 0x17 || cv == 0x1a || cv == 0x20) {
+                       if (clk > 250000)
+                               maxM = 6;
+                       if (clk > 340000)
+                               maxM = 2;
+               } else if (cv < 0x40) {
+                       if (clk > 150000)
+                               maxM = 6;
+                       if (clk > 200000)
+                               maxM = 4;
+                       if (clk > 340000)
+                               maxM = 2;
+               }
        }
 
        P = 1 << maxP;