]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/mips/loongson/common/env.c
MIPS: Loongson: Change the Email address of Wu Zhangjin
[mv-sheeva.git] / arch / mips / loongson / common / env.c
index 196d947d929afcf39362aaa1069ee83b01e17ae7..ae4cff97a56c5073d75925a7c89a94ee5a410513 100644 (file)
@@ -9,8 +9,8 @@
  * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
  * Author: Fuxin Zhang, zhangfx@lemote.com
  *
- * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
- * Author: Wu Zhangjin, wuzj@lemote.com
+ * Copyright (C) 2009 Lemote Inc.
+ * Author: Wu Zhangjin, wuzhangjin@gmail.com
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
 
 #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);