0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <linux/export.h>
0017 #include <asm/bootinfo.h>
0018 #include <asm/fw/fw.h>
0019 #include <loongson.h>
0020
0021 u32 cpu_clock_freq;
0022 EXPORT_SYMBOL(cpu_clock_freq);
0023
0024 void __init prom_init_env(void)
0025 {
0026
0027 unsigned int processor_id;
0028
0029 cpu_clock_freq = fw_getenvl("cpuclock");
0030 memsize = fw_getenvl("memsize");
0031 highmemsize = fw_getenvl("highmemsize");
0032
0033 if (memsize == 0)
0034 memsize = 256;
0035
0036 pr_info("memsize=%u, highmemsize=%u\n", memsize, highmemsize);
0037
0038 if (cpu_clock_freq == 0) {
0039 processor_id = (¤t_cpu_data)->processor_id;
0040 switch (processor_id & PRID_REV_MASK) {
0041 case PRID_REV_LOONGSON2E:
0042 cpu_clock_freq = 533080000;
0043 break;
0044 case PRID_REV_LOONGSON2F:
0045 cpu_clock_freq = 797000000;
0046 break;
0047 default:
0048 cpu_clock_freq = 100000000;
0049 break;
0050 }
0051 }
0052 pr_info("CpuClock = %u\n", cpu_clock_freq);
0053 }