Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
[linux-2.6] / arch / avr32 / mach-at32ap / clock.h
1 /*
2  * Clock management for AT32AP CPUs
3  *
4  * Copyright (C) 2006 Atmel Corporation
5  *
6  * Based on arch/arm/mach-at91/clock.c
7  *   Copyright (C) 2005 David Brownell
8  *   Copyright (C) 2005 Ivan Kokshaysky
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License version 2 as
12  * published by the Free Software Foundation.
13  */
14 #include <linux/clk.h>
15 #include <linux/list.h>
16
17
18 void at32_clk_register(struct clk *clk);
19
20 struct clk {
21         struct list_head list;          /* linking element */
22         const char      *name;          /* Clock name/function */
23         struct device   *dev;           /* Device the clock is used by */
24         struct clk      *parent;        /* Parent clock, if any */
25         void            (*mode)(struct clk *clk, int enabled);
26         unsigned long   (*get_rate)(struct clk *clk);
27         long            (*set_rate)(struct clk *clk, unsigned long rate,
28                                     int apply);
29         int             (*set_parent)(struct clk *clk, struct clk *parent);
30         u16             users;          /* Enabled if non-zero */
31         u16             index;          /* Sibling index */
32 };
33
34 unsigned long pba_clk_get_rate(struct clk *clk);
35 void pba_clk_mode(struct clk *clk, int enabled);