aboutsummaryrefslogtreecommitdiff
path: root/arch/mips/au1000/common/time.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-01 11:31:31 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-01 11:31:31 -0700
commit61434392f797cf89872bda87dff8b3395edf4108 (patch)
tree489e344b0a5142dd4dc74ba3f4972592b90bacec /arch/mips/au1000/common/time.c
parent0e45adb8f5371f3d20a6df21cd13ce32fbe9bf15 (diff)
parentf9e8b782608021c0cbd936923cc0e509521b594d (diff)
Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/ralf/upstream-linus
* 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/ralf/upstream-linus: [MIPS] XSS1500: Fix compilation [MIPS] Bigsur: make defconfig more useful. [MIPS] Alchemy: work around clock misdetection on early Au1000 [MIPS] Add missing 4KEC TLB refill handler [MIPS] BCM1480: Fix PCI/HT IO access [MIPS] Fix the installation condition of MIPS clocksource [MIPS] Check for GCC r10k-cache-barrier support [MIPS] I8253: Export i2853_lock to modules. [MIPS] VPE loader: Check result of memory allocation.
Diffstat (limited to 'arch/mips/au1000/common/time.c')
-rw-r--r--arch/mips/au1000/common/time.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c
index f113b512d7b..e122bbc6cd8 100644
--- a/arch/mips/au1000/common/time.c
+++ b/arch/mips/au1000/common/time.c
@@ -209,18 +209,22 @@ unsigned long cal_r4koff(void)
while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S);
au_writel(0, SYS_TOYWRITE);
while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S);
+ } else
+ no_au1xxx_32khz = 1;
- cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) *
- AU1000_SRC_CLK;
- }
- else {
- /* The 32KHz oscillator isn't running, so assume there
- * isn't one and grab the processor speed from the PLL.
- * NOTE: some old silicon doesn't allow reading the PLL.
- */
+ /*
+ * On early Au1000, sys_cpupll was write-only. Since these
+ * silicon versions of Au1000 are not sold by AMD, we don't bend
+ * over backwards trying to determine the frequency.
+ */
+ if (cur_cpu_spec[0]->cpu_pll_wo)
+#ifdef CONFIG_SOC_AU1000_FREQUENCY
+ cpu_speed = CONFIG_SOC_AU1000_FREQUENCY;
+#else
+ cpu_speed = 396000000;
+#endif
+ else
cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * AU1000_SRC_CLK;
- no_au1xxx_32khz = 1;
- }
mips_hpt_frequency = cpu_speed;
// Equation: Baudrate = CPU / (SD * 2 * CLKDIV * 16)
set_au1x00_uart_baud_base(cpu_speed / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16));