intelfb: add p divisor increments for i9xx.
authorDave Airlie <airlied@linux.ie>
Mon, 20 Mar 2006 10:22:09 +0000 (21:22 +1100)
committerDave Airlie <airlied@linux.ie>
Mon, 3 Apr 2006 01:43:28 +0000 (11:43 +1000)
Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/video/intelfb/intelfbhw.c

index d52921931a3eb812e804c6f6a7b4beafe76a1e57..9a2d8cb4d4007871478c6ad47c7704da4d1e02e5 100644 (file)
@@ -49,6 +49,7 @@ struct pll_min_max {
        int min_p1, max_p1;
        int min_vco_freq, max_vco_freq;
        int p_transition_clock;
+       int p_inc_lo, p_inc_hi;
 };
 
 #define PLLS_I8xx 0
@@ -56,8 +57,8 @@ struct pll_min_max {
 #define PLLS_MAX 2
 
 struct pll_min_max plls[PLLS_MAX] = {
-       { 108, 140, 18, 26, 6, 16, 3, 16, 4, 128, 0, 31, 930000, 1400000, 165000 }, //I8xx
-       {  75, 120, 10, 20, 5, 9, 4,  7, 5, 80, 1, 8, 930000, 2800000, 200000 }  //I9xx
+       { 108, 140, 18, 26, 6, 16, 3, 16, 4, 128, 0, 31, 930000, 1400000, 165000, 4, 22 }, //I8xx
+       {  75, 120, 10, 20, 5, 9, 4,  7, 5, 80, 1, 8, 930000, 2800000, 200000, 10, 5 }  //I9xx
 };
 
 int
@@ -822,15 +823,15 @@ calc_pll_params(int index, int clock, u32 *retm1, u32 *retm2, u32 *retn, u32 *re
        div_min = ROUND_UP_TO(plls[index].min_vco_freq, clock) / clock;
 
        if (clock <= plls[index].p_transition_clock)
-               p_inc = 4;
+               p_inc = plls[index].p_inc_lo;
        else
-               p_inc = 2;
+               p_inc = plls[index].p_inc_hi;
        p_min = ROUND_UP_TO(div_min, p_inc);
        p_max = ROUND_DOWN_TO(div_max, p_inc);
        if (p_min < plls[index].min_p)
-               p_min = 4;
+               p_min = plls[index].min_p;
        if (p_max > plls[index].max_p)
-               p_max = 128;
+               p_max = plls[index].max_p;
 
        DBG_MSG("p range is %d-%d (%d)\n", p_min, p_max, p_inc);