|
@@ -23,13 +23,10 @@
|
|
|
|
|
|
#include <loongson.h>
|
|
|
|
|
|
-unsigned long bus_clock, cpu_clock_freq;
|
|
|
+unsigned long cpu_clock_freq;
|
|
|
EXPORT_SYMBOL(cpu_clock_freq);
|
|
|
unsigned long memsize, highmemsize;
|
|
|
|
|
|
-/* pmon passes arguments in 32bit pointers */
|
|
|
-int *_prom_envp;
|
|
|
-
|
|
|
#define parse_even_earlier(res, option, p) \
|
|
|
do { \
|
|
|
if (strncmp(option, (char *)p, strlen(option)) == 0) \
|
|
@@ -39,6 +36,10 @@ do { \
|
|
|
|
|
|
void __init prom_init_env(void)
|
|
|
{
|
|
|
+ /* pmon passes arguments in 32bit pointers */
|
|
|
+ int *_prom_envp;
|
|
|
+ unsigned long bus_clock;
|
|
|
+ unsigned int processor_id;
|
|
|
long l;
|
|
|
|
|
|
/* firmware arguments are initialized in head.S */
|
|
@@ -55,6 +56,22 @@ void __init prom_init_env(void)
|
|
|
}
|
|
|
if (memsize == 0)
|
|
|
memsize = 256;
|
|
|
+ if (bus_clock == 0)
|
|
|
+ bus_clock = 66000000;
|
|
|
+ if (cpu_clock_freq == 0) {
|
|
|
+ processor_id = (¤t_cpu_data)->processor_id;
|
|
|
+ switch (processor_id & PRID_REV_MASK) {
|
|
|
+ case PRID_REV_LOONGSON2E:
|
|
|
+ cpu_clock_freq = 533080000;
|
|
|
+ break;
|
|
|
+ case PRID_REV_LOONGSON2F:
|
|
|
+ cpu_clock_freq = 797000000;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ cpu_clock_freq = 100000000;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
pr_info("busclock=%ld, cpuclock=%ld, memsize=%ld, highmemsize=%ld\n",
|
|
|
bus_clock, cpu_clock_freq, memsize, highmemsize);
|