[haiku-commits] r42854 - haiku/trunk/src/add-ons/accelerants/radeon_hd

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 15 Oct 2011 01:27:45 +0200 (CEST)

Author: kallisti5
Date: 2011-10-15 01:27:44 +0200 (Sat, 15 Oct 2011)
New Revision: 42854
Changeset: https://dev.haiku-os.org/changeset/42854

Modified:
   haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp
Log:
* tweaks to pll calculation reference units.. make divisors match 10 kHz unit


Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp       2011-10-14 
22:57:00 UTC (rev 42853)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp       2011-10-14 
23:27:44 UTC (rev 42854)
@@ -51,14 +51,14 @@
        uint32 vco;
        if (info.device_chipset < (RADEON_R700 | 0x70)) {
                if (0) // TODO : RADEON_PLL_IS_LCD
-                       vco = PLL_MIN_DEFAULT; // pll->lcd_pll_out_min;
+                       vco = PLL_MIN_DEFAULT / 10; // pll->lcd_pll_out_min;
                else
-                       vco = PLL_MIN_DEFAULT; // pll->pll_out_min;
+                       vco = PLL_MIN_DEFAULT / 10; // pll->pll_out_min;
        } else {
                if (0) // TODO : RADEON_PLL_IS_LCD
-                       vco = PLL_MAX_DEFAULT; // pll->lcd_pll_out_max;
+                       vco = PLL_MAX_DEFAULT / 10; // pll->lcd_pll_out_max;
                else
-                       vco = PLL_MAX_DEFAULT; // pll->pll_out_min;
+                       vco = PLL_MAX_DEFAULT / 10; // pll->pll_out_min;
        }
 
        uint32 postDivider = vco / targetClock;
@@ -92,6 +92,8 @@
        pll->feedback_div = 0;
        pll->feedback_div_frac = 0;
 
+       uint32 referenceFrequency = PLL_REFERENCE_DEFAULT / 10;
+
        // if RADEON_PLL_USE_REF_DIV
        //      ref_div = pll->reference_div;
 
@@ -114,15 +116,16 @@
                        uint32 retroEncabulator = pll->post_div * 
pll->reference_div;
 
                        retroEncabulator *= targetClock;
-                       pll->feedback_div = retroEncabulator / 
PLL_REFERENCE_DEFAULT;
-                       pll->feedback_div_frac = retroEncabulator % 
PLL_REFERENCE_DEFAULT;
+                       pll->feedback_div = retroEncabulator / 
referenceFrequency;
+                       pll->feedback_div_frac
+                               = retroEncabulator % referenceFrequency;
 
                        if (pll->feedback_div > FB_DIV_LIMIT)
                                pll->feedback_div = FB_DIV_LIMIT;
                        else if (pll->feedback_div < FB_DIV_MIN)
                                pll->feedback_div = FB_DIV_MIN;
 
-                       if (pll->feedback_div_frac >= (PLL_REFERENCE_DEFAULT / 
2))
+                       if (pll->feedback_div_frac >= (referenceFrequency / 2))
                                pll->feedback_div++;
 
                        pll->feedback_div_frac = 0;
@@ -132,7 +135,7 @@
                                TRACE("%s: Caught division by zero\n", 
__func__);
                                return B_ERROR;
                        }
-                       uint32 tmp = (PLL_REFERENCE_DEFAULT * pll->feedback_div)
+                       uint32 tmp = (referenceFrequency * pll->feedback_div)
                                / (pll->post_div * pll->reference_div);
                        tmp = (tmp * 10000) / targetClock;
 
@@ -152,8 +155,8 @@
        }
 
        uint32 calculatedClock
-               = ((PLL_REFERENCE_DEFAULT * pll->feedback_div)
-               + (PLL_REFERENCE_DEFAULT * pll->feedback_div_frac))
+               = (referenceFrequency * pll->feedback_div)
+               + (referenceFrequency * pll->feedback_div_frac)
                / (pll->reference_div * pll->post_div);
 
        calculatedClock *= 10;


Other related posts:

  • » [haiku-commits] r42854 - haiku/trunk/src/add-ons/accelerants/radeon_hd - kallisti5