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
kernel
csrc-ioasic.c
Go to the documentation of this file.
1
/*
2
* DEC I/O ASIC's counter clocksource
3
*
4
* Copyright (C) 2008 Yoichi Yuasa <yuasa@linux-mips.org>
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
#include <
linux/clocksource.h
>
21
#include <
linux/init.h
>
22
23
#include <
asm/ds1287.h
>
24
#include <asm/time.h>
25
#include <
asm/dec/ioasic.h
>
26
#include <
asm/dec/ioasic_addrs.h
>
27
28
static
cycle_t
dec_ioasic_hpt_read(
struct
clocksource
*
cs
)
29
{
30
return
ioasic_read(
IO_REG_FCTR
);
31
}
32
33
static
struct
clocksource
clocksource_dec = {
34
.name =
"dec-ioasic"
,
35
.read = dec_ioasic_hpt_read,
36
.mask =
CLOCKSOURCE_MASK
(32),
37
.flags =
CLOCK_SOURCE_IS_CONTINUOUS
,
38
};
39
40
void
__init
dec_ioasic_clocksource_init
(
void
)
41
{
42
unsigned
int
freq
;
43
u32
start
,
end
;
44
int
i
=
HZ
/ 10;
45
46
47
while
(!
ds1287_timer_state
())
48
;
49
50
start = dec_ioasic_hpt_read(&clocksource_dec);
51
52
while
(i--)
53
while
(!
ds1287_timer_state
())
54
;
55
56
end = dec_ioasic_hpt_read(&clocksource_dec);
57
58
freq = (end -
start
) * 10;
59
printk
(
KERN_INFO
"I/O ASIC clock frequency %dHz\n"
, freq);
60
61
clocksource_dec.
rating
= 200 + freq / 10000000;
62
clocksource_register_hz(&clocksource_dec, freq);
63
}
Generated on Thu Jan 10 2013 13:11:09 for Linux Kernel by
1.8.2