]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/mips/loongson/common/env.c
MIPS: Loongson: Cleanup of the environment variables
[net-next-2.6.git] / arch / mips / loongson / common / env.c
index 196d947d929afcf39362aaa1069ee83b01e17ae7..8c01df5758a9d1aba82fff0cd2d2f2a34099d67e 100644 (file)
 
 #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 = (&current_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);