summaryrefslogtreecommitdiffstats
path: root/arch/ppc/kernel/m8260_setup.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-10-05 01:18:40 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-10-05 01:18:40 +0000
commit012bb3e61e5eced6c610f9e036372bf0c8def2d1 (patch)
tree87efc733f9b164e8c85c0336f92c8fb7eff6d183 /arch/ppc/kernel/m8260_setup.c
parent625a1589d3d6464b5d90b8a0918789e3afffd220 (diff)
Merge with Linux 2.4.0-test9. Please check DECstation, I had a number
of rejects to fixup while integrating Linus patches. I also found that this kernel will only boot SMP on Origin; the UP kernel freeze soon after bootup with SCSI timeout messages. I commit this anyway since I found that the last CVS versions had the same problem.
Diffstat (limited to 'arch/ppc/kernel/m8260_setup.c')
-rw-r--r--arch/ppc/kernel/m8260_setup.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/arch/ppc/kernel/m8260_setup.c b/arch/ppc/kernel/m8260_setup.c
index 891b0ca44..6e006a867 100644
--- a/arch/ppc/kernel/m8260_setup.c
+++ b/arch/ppc/kernel/m8260_setup.c
@@ -112,11 +112,10 @@ void __init m8260_calibrate_decr(void)
bd_t *binfo = (bd_t *)__res;
int freq, divisor;
- freq = (binfo->bi_intfreq * 1000000);
- divisor = 16;
- decrementer_count = freq / HZ / divisor;
- count_period_num = divisor;
- count_period_den = freq / 1000000;
+ freq = (binfo->bi_busfreq * 1000000);
+ divisor = 4;
+ tb_ticks_per_jiffy = freq / HZ / divisor;
+ tb_to_us = mulhwu_scale_factor(freq / divisor, 1000000);
}
/* The 8260 has an internal 1-second timer update register that
@@ -143,8 +142,20 @@ void
m8260_restart(char *cmd)
{
extern void m8260_gorom(bd_t *bi, uint addr);
+ uint startaddr;
- m8260_gorom(NULL, 0xff000100);
+ /* Most boot roms have a warmstart as the second instruction
+ * of the reset vector. If that doesn't work for you, change this
+ * or the reboot program to send a proper address.
+ */
+ startaddr = 0xff000104;
+
+ if (cmd != NULL) {
+ if (!strncmp(cmd, "startaddr=", 10))
+ startaddr = simple_strtoul(&cmd[10], NULL, 0);
+ }
+
+ m8260_gorom((uint)__pa(__res), startaddr);
}
void