]>
Commit | Line | Data |
---|---|---|
28ad94ec AR |
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> | |
6d803ba7 | 10 | #include <linux/clkdev.h> |
28ad94ec AR |
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 | ||
ba327b1e LW |
35 | static struct clk clk_24 = { |
36 | .rate = 2400000, | |
37 | }; | |
38 | ||
dc6048c7 RV |
39 | static struct clk clk_48 = { |
40 | .rate = 48 * 1000 * 1000, | |
41 | }; | |
42 | ||
af7dc228 RV |
43 | /* |
44 | * Catch-all default clock to satisfy drivers using the clk API. We don't | |
45 | * model the actual hardware clocks yet. | |
46 | */ | |
47 | static struct clk clk_default; | |
48 | ||
dc6048c7 RV |
49 | #define CLK(_clk, dev) \ |
50 | { \ | |
51 | .clk = _clk, \ | |
52 | .dev_id = dev, \ | |
53 | } | |
54 | ||
55 | static struct clk_lookup lookups[] = { | |
3126c7bc RK |
56 | { |
57 | .con_id = "apb_pclk", | |
58 | .clk = &clk_default, | |
59 | }, | |
ba327b1e LW |
60 | CLK(&clk_24, "mtu0"), |
61 | CLK(&clk_24, "mtu1"), | |
dc6048c7 RV |
62 | CLK(&clk_48, "uart0"), |
63 | CLK(&clk_48, "uart1"), | |
af7dc228 RV |
64 | CLK(&clk_default, "gpio.0"), |
65 | CLK(&clk_default, "gpio.1"), | |
66 | CLK(&clk_default, "gpio.2"), | |
67 | CLK(&clk_default, "gpio.3"), | |
1944cc89 | 68 | CLK(&clk_default, "rng"), |
dc6048c7 | 69 | }; |
28ad94ec | 70 | |
ba327b1e | 71 | int __init clk_init(void) |
dc6048c7 RV |
72 | { |
73 | clkdev_add_table(lookups, ARRAY_SIZE(lookups)); | |
28ad94ec AR |
74 | return 0; |
75 | } |