Title: [5893] trunk/arch/blackfin/kernel/setup.c: rewrite get_sclk()/get_vco() based on the assumption sclk/vco never changes (since today it cannot)
- Revision
- 5893
- Author
- vapier
- Date
- 2008-12-18 13:18:01 -0600 (Thu, 18 Dec 2008)
Log Message
rewrite get_sclk()/get_vco() based on the assumption sclk/vco never changes (since today it cannot)
Modified Paths
Diff
Modified: trunk/arch/blackfin/kernel/setup.c (5892 => 5893)
--- trunk/arch/blackfin/kernel/setup.c 2008-12-18 18:51:24 UTC (rev 5892)
+++ trunk/arch/blackfin/kernel/setup.c 2008-12-18 19:18:01 UTC (rev 5893)
@@ -956,17 +956,18 @@
early_param("clkin_hz=", early_init_clkin_hz);
/* Get the voltage input multiplier */
-static u_long cached_vco_pll_ctl, cached_vco;
static u_long get_vco(void)
{
- u_long msel;
+ static u_long cached_vco;
+ u_long msel, pll_ctl;
- u_long pll_ctl = bfin_read_PLL_CTL();
- if (pll_ctl == cached_vco_pll_ctl)
+ /* The assumption here is that VCO never changes at runtime.
+ * If, someday, we support that, then we'll have to change this.
+ */
+ if (cached_vco)
return cached_vco;
- else
- cached_vco_pll_ctl = pll_ctl;
+ pll_ctl = bfin_read_PLL_CTL();
msel = (pll_ctl >> 9) & 0x3F;
if (0 == msel)
msel = 64;
@@ -978,9 +979,9 @@
}
/* Get the Core clock */
-static u_long cached_cclk_pll_div, cached_cclk;
u_long get_cclk(void)
{
+ static u_long cached_cclk_pll_div, cached_cclk;
u_long csel, ssel;
if (bfin_read_PLL_STAT() & 0x1)
@@ -1003,21 +1004,21 @@
EXPORT_SYMBOL(get_cclk);
/* Get the System clock */
-static u_long cached_sclk_pll_div, cached_sclk;
u_long get_sclk(void)
{
+ static u_long cached_sclk;
u_long ssel;
+ /* The assumption here is that SCLK never changes at runtime.
+ * If, someday, we support that, then we'll have to change this.
+ */
+ if (cached_sclk)
+ return cached_sclk;
+
if (bfin_read_PLL_STAT() & 0x1)
return get_clkin_hz();
- ssel = bfin_read_PLL_DIV();
- if (ssel == cached_sclk_pll_div)
- return cached_sclk;
- else
- cached_sclk_pll_div = ssel;
-
- ssel &= 0xf;
+ ssel = bfin_read_PLL_DIV() & 0xf;
if (0 == ssel) {
printk(KERN_WARNING "Invalid System Clock\n");
ssel = 1;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits