diff options
author | Linus Walleij <linus.walleij@stericsson.com> | 2009-04-23 10:21:30 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-04-28 22:44:12 +0100 |
commit | cd27e485410aa7e7464b0126d968fe8c2a5c045b (patch) | |
tree | 7285da0a3800e3729c37061af8a59189ccc61cd1 /arch/arm/mach-u300/clock.h | |
parent | bd41b99d4661e775ff152f2842782c43dbb30a59 (diff) | |
download | op-kernel-dev-cd27e485410aa7e7464b0126d968fe8c2a5c045b.zip op-kernel-dev-cd27e485410aa7e7464b0126d968fe8c2a5c045b.tar.gz |
[ARM] 5474/1: U300 clocking framework
This adds the clocking framework and hooks into the clkdevice
for U300 series platforms.
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-u300/clock.h')
-rw-r--r-- | arch/arm/mach-u300/clock.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/arch/arm/mach-u300/clock.h b/arch/arm/mach-u300/clock.h new file mode 100644 index 0000000..fc6d9cc --- /dev/null +++ b/arch/arm/mach-u300/clock.h @@ -0,0 +1,53 @@ +/* + * arch/arm/mach-u300/include/mach/clock.h + * + * Copyright (C) 2004 - 2005 Nokia corporation + * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com> + * Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc + * Copyright (C) 2007-2009 ST-Ericsson AB + * Adopted to ST-Ericsson U300 platforms by + * Jonas Aaberg <jonas.aberg@stericsson.com> + * + * 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. + * + */ + +#ifndef __MACH_CLOCK_H +#define __MACH_CLOCK_H + +#include <linux/clk.h> + +struct clk { + struct list_head node; + struct module *owner; + struct device *dev; + const char *name; + struct clk *parent; + + spinlock_t lock; + unsigned long rate; + bool reset; + __u16 clk_val; + __s8 usecount; + __u32 res_reg; + __u16 res_mask; + + bool hw_ctrld; + + void (*recalc) (struct clk *); + int (*set_rate) (struct clk *, unsigned long); + unsigned long (*get_rate) (struct clk *); + unsigned long (*round_rate) (struct clk *, unsigned long); + void (*init) (struct clk *); + void (*enable) (struct clk *); + void (*disable) (struct clk *); +}; + +void u300_clock_primecells(void); +void u300_unclock_primecells(void); +void u300_enable_intcon_clock(void); +void u300_enable_timer_clock(void); + +#endif |