Merge branch 'viafb-next' of git://github.com/schandinat/linux-2.6
[pandora-kernel.git] / arch / arm / mach-at91 / clock.h
1 /*
2  * linux/arch/arm/mach-at91/clock.h
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
9 #include <linux/clkdev.h>
10
11 #define CLK_TYPE_PRIMARY        0x1
12 #define CLK_TYPE_PLL            0x2
13 #define CLK_TYPE_PROGRAMMABLE   0x4
14 #define CLK_TYPE_PERIPHERAL     0x8
15 #define CLK_TYPE_SYSTEM         0x10
16
17
18 struct clk {
19         struct list_head node;
20         const char      *name;          /* unique clock name */
21         struct clk_lookup cl;
22         unsigned long   rate_hz;
23         struct clk      *parent;
24         u32             pmc_mask;
25         void            (*mode)(struct clk *, int);
26         unsigned        id:3;           /* PCK0..4, or 32k/main/a/b */
27         unsigned        type;           /* clock type */
28         u16             users;
29 };
30
31
32 extern int __init clk_register(struct clk *clk);
33 extern struct clk mck;
34 extern struct clk utmi_clk;
35
36 #define CLKDEV_CON_ID(_id, _clk)                        \
37         {                                               \
38                 .con_id = _id,                          \
39                 .clk = _clk,                            \
40         }
41
42 #define CLKDEV_CON_DEV_ID(_con_id, _dev_id, _clk)       \
43         {                                               \
44                 .con_id = _con_id,                      \
45                 .dev_id = _dev_id,                      \
46                 .clk = _clk,                            \
47         }