-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 249911 b: refs/heads/master c: 442c817 h: refs/heads/master i: 249909: bfc10b4 249907: 5a37a11 249903: cee5416 v: v3
- Loading branch information
Russell King
committed
May 23, 2011
1 parent
e0b1705
commit 6c2eade
Showing
5 changed files
with
86 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 1ba4c3cb171d9899a3eaa2e45fa171e0704c1377 | ||
refs/heads/master: 442c8176d2efa468577738e3a99a6e051f6e8e55 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,5 @@ | ||
config CLKSRC_I8253 | ||
bool | ||
|
||
config CLKSRC_MMIO | ||
bool |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/* | ||
* Generic MMIO clocksource support | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#include <linux/clocksource.h> | ||
#include <linux/errno.h> | ||
#include <linux/init.h> | ||
#include <linux/slab.h> | ||
|
||
struct clocksource_mmio { | ||
void __iomem *reg; | ||
struct clocksource clksrc; | ||
}; | ||
|
||
static inline struct clocksource_mmio *to_mmio_clksrc(struct clocksource *c) | ||
{ | ||
return container_of(c, struct clocksource_mmio, clksrc); | ||
} | ||
|
||
cycle_t clocksource_mmio_readl_up(struct clocksource *c) | ||
{ | ||
return readl_relaxed(to_mmio_clksrc(c)->reg); | ||
} | ||
|
||
cycle_t clocksource_mmio_readl_down(struct clocksource *c) | ||
{ | ||
return ~readl_relaxed(to_mmio_clksrc(c)->reg); | ||
} | ||
|
||
cycle_t clocksource_mmio_readw_up(struct clocksource *c) | ||
{ | ||
return readw_relaxed(to_mmio_clksrc(c)->reg); | ||
} | ||
|
||
cycle_t clocksource_mmio_readw_down(struct clocksource *c) | ||
{ | ||
return ~(unsigned)readw_relaxed(to_mmio_clksrc(c)->reg); | ||
} | ||
|
||
/** | ||
* clocksource_mmio_init - Initialize a simple mmio based clocksource | ||
* @base: Virtual address of the clock readout register | ||
* @name: Name of the clocksource | ||
* @hz: Frequency of the clocksource in Hz | ||
* @rating: Rating of the clocksource | ||
* @bits: Number of valid bits | ||
* @read: One of clocksource_mmio_read*() above | ||
*/ | ||
int __init clocksource_mmio_init(void __iomem *base, const char *name, | ||
unsigned long hz, int rating, unsigned bits, | ||
cycle_t (*read)(struct clocksource *)) | ||
{ | ||
struct clocksource_mmio *cs; | ||
|
||
if (bits > 32 || bits < 16) | ||
return -EINVAL; | ||
|
||
cs = kzalloc(sizeof(struct clocksource_mmio), GFP_KERNEL); | ||
if (!cs) | ||
return -ENOMEM; | ||
|
||
cs->reg = base; | ||
cs->clksrc.name = name; | ||
cs->clksrc.rating = rating; | ||
cs->clksrc.read = read; | ||
cs->clksrc.mask = CLOCKSOURCE_MASK(bits); | ||
cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS; | ||
|
||
return clocksource_register_hz(&cs->clksrc, hz); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters