diff options
Diffstat (limited to 'arch/mips/loongson/common/env.c')
| -rw-r--r-- | arch/mips/loongson/common/env.c | 29 | 
1 files changed, 23 insertions, 6 deletions
diff --git a/arch/mips/loongson/common/env.c b/arch/mips/loongson/common/env.c index 196d947d929..ae4cff97a56 100644 --- a/arch/mips/loongson/common/env.c +++ b/arch/mips/loongson/common/env.c @@ -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 @@ -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);  |