Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
mips
rb532
time.c
Go to the documentation of this file.
1
/*
2
* Carsten Langgaard,
[email protected]
3
* Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
4
*
5
* This program is free software; you can distribute it and/or modify it
6
* under the terms of the GNU General Public License (Version 2) as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program; if not, write to the Free Software Foundation, Inc.,
16
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17
*
18
* Setting up the clock on the MIPS boards.
19
*/
20
21
#include <
linux/init.h
>
22
#include <
linux/kernel_stat.h
>
23
#include <linux/ptrace.h>
24
#include <linux/sched.h>
25
#include <
linux/spinlock.h
>
26
#include <
linux/mc146818rtc.h
>
27
#include <
linux/irq.h
>
28
#include <linux/timex.h>
29
30
#include <
asm/mipsregs.h
>
31
#include <asm/time.h>
32
#include <
asm/mach-rc32434/rc32434.h
>
33
34
extern
unsigned
int
idt_cpu_freq
;
35
36
/*
37
* Figure out the r4k offset, the amount to increment the compare
38
* register for each time tick. There is no RTC available.
39
*
40
* The RC32434 counts at half the CPU *core* speed.
41
*/
42
static
unsigned
long
__init
cal_r4koff(
void
)
43
{
44
mips_hpt_frequency
=
idt_cpu_freq
*
IDT_CLOCK_MULT
/ 2;
45
46
return
mips_hpt_frequency
/
HZ
;
47
}
48
49
void
__init
plat_time_init
(
void
)
50
{
51
unsigned
int
est_freq;
52
unsigned
long
flags
, r4k_offset;
53
54
local_irq_save
(flags);
55
56
printk
(
KERN_INFO
"calculating r4koff... "
);
57
r4k_offset = cal_r4koff();
58
printk
(
"%08lx(%d)\n"
, r4k_offset, (
int
) r4k_offset);
59
60
est_freq = 2 * r4k_offset *
HZ
;
61
est_freq += 5000;
/* round */
62
est_freq -= est_freq % 10000;
63
printk
(
KERN_INFO
"CPU frequency %d.%02d MHz\n"
, est_freq / 1000000,
64
(est_freq % 1000000) * 100 / 1000000);
65
local_irq_restore
(flags);
66
}
Generated on Thu Jan 10 2013 12:53:34 for Linux Kernel by
1.8.2