KVM: read apic->irr with ioapic lock held
[pandora-kernel.git] / arch / arm / mach-nomadik / clock.c
1 /*
2  *  linux/arch/arm/mach-nomadik/clock.c
3  *
4  *  Copyright (C) 2009 Alessandro Rubini
5  */
6 #include <linux/kernel.h>
7 #include <linux/module.h>
8 #include <linux/errno.h>
9 #include <linux/clk.h>
10 #include <asm/clkdev.h>
11 #include "clock.h"
12
13 /*
14  * The nomadik board uses generic clocks, but the serial pl011 file
15  * calls clk_enable(), clk_disable(), clk_get_rate(), so we provide them
16  */
17 unsigned long clk_get_rate(struct clk *clk)
18 {
19         return clk->rate;
20 }
21 EXPORT_SYMBOL(clk_get_rate);
22
23 /* enable and disable do nothing */
24 int clk_enable(struct clk *clk)
25 {
26         return 0;
27 }
28 EXPORT_SYMBOL(clk_enable);
29
30 void clk_disable(struct clk *clk)
31 {
32 }
33 EXPORT_SYMBOL(clk_disable);
34
35 /* We have a fixed clock alone, for now */
36 static struct clk clk_48 = {
37         .rate = 48 * 1000 * 1000,
38 };
39
40 /*
41  * Catch-all default clock to satisfy drivers using the clk API.  We don't
42  * model the actual hardware clocks yet.
43  */
44 static struct clk clk_default;
45
46 #define CLK(_clk, dev)                          \
47         {                                       \
48                 .clk            = _clk,         \
49                 .dev_id         = dev,          \
50         }
51
52 static struct clk_lookup lookups[] = {
53         CLK(&clk_48, "uart0"),
54         CLK(&clk_48, "uart1"),
55         CLK(&clk_default, "gpio.0"),
56         CLK(&clk_default, "gpio.1"),
57         CLK(&clk_default, "gpio.2"),
58         CLK(&clk_default, "gpio.3"),
59         CLK(&clk_default, "rng"),
60 };
61
62 static int __init clk_init(void)
63 {
64         clkdev_add_table(lookups, ARRAY_SIZE(lookups));
65         return 0;
66 }
67
68 arch_initcall(clk_init);