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
drivers
clocksource
mmio.c
Go to the documentation of this file.
1
/*
2
* Generic MMIO clocksource support
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*/
8
#include <
linux/clocksource.h
>
9
#include <linux/errno.h>
10
#include <
linux/init.h
>
11
#include <linux/slab.h>
12
13
struct
clocksource_mmio
{
14
void
__iomem
*
reg
;
15
struct
clocksource
clksrc
;
16
};
17
18
static
inline
struct
clocksource_mmio
*to_mmio_clksrc(
struct
clocksource
*
c
)
19
{
20
return
container_of
(c,
struct
clocksource_mmio
,
clksrc
);
21
}
22
23
cycle_t
clocksource_mmio_readl_up
(
struct
clocksource
*
c
)
24
{
25
return
readl_relaxed
(to_mmio_clksrc(c)->
reg
);
26
}
27
28
cycle_t
clocksource_mmio_readl_down
(
struct
clocksource
*
c
)
29
{
30
return
~
readl_relaxed
(to_mmio_clksrc(c)->
reg
);
31
}
32
33
cycle_t
clocksource_mmio_readw_up
(
struct
clocksource
*
c
)
34
{
35
return
readw_relaxed
(to_mmio_clksrc(c)->
reg
);
36
}
37
38
cycle_t
clocksource_mmio_readw_down
(
struct
clocksource
*
c
)
39
{
40
return
~(unsigned)
readw_relaxed
(to_mmio_clksrc(c)->reg);
41
}
42
52
int
__init
clocksource_mmio_init
(
void
__iomem
*base,
const
char
*
name
,
53
unsigned
long
hz,
int
rating,
unsigned
bits
,
54
cycle_t
(*
read
)(
struct
clocksource
*))
55
{
56
struct
clocksource_mmio
*
cs
;
57
58
if
(bits > 32 || bits < 16)
59
return
-
EINVAL
;
60
61
cs = kzalloc(
sizeof
(
struct
clocksource_mmio
),
GFP_KERNEL
);
62
if
(!cs)
63
return
-
ENOMEM
;
64
65
cs->
reg
= base;
66
cs->
clksrc
.name =
name
;
67
cs->
clksrc
.rating = rating;
68
cs->
clksrc
.read =
read
;
69
cs->
clksrc
.mask =
CLOCKSOURCE_MASK
(bits);
70
cs->
clksrc
.flags =
CLOCK_SOURCE_IS_CONTINUOUS
;
71
72
return
clocksource_register_hz(&cs->
clksrc
, hz);
73
}
Generated on Thu Jan 10 2013 13:07:03 for Linux Kernel by
1.8.2