1 /*
2  * arch/arm/mach-u300/include/mach/clock.h
3  *
4  * Copyright (C) 2004 - 2005 Nokia corporation
5  * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
6  * Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc
7  * Copyright (C) 2007-2009 ST-Ericsson AB
8  * Adopted to ST-Ericsson U300 platforms by
9  * Jonas Aaberg <jonas.aberg@stericsson.com>
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License version 2 as
13  * published by the Free Software Foundation.
14  *
15  */
16 
17 #ifndef __MACH_CLOCK_H
18 #define __MACH_CLOCK_H
19 
20 #include <linux/clk.h>
21 
22 struct clk {
23 	struct list_head node;
24 	struct module *owner;
25 	struct device *dev;
26 	const char *name;
27 	struct clk *parent;
28 
29 	spinlock_t lock;
30 	unsigned long rate;
31 	bool reset;
32 	__u16 clk_val;
33 	__s8 usecount;
34 	void __iomem * res_reg;
35 	__u16 res_mask;
36 
37 	bool hw_ctrld;
38 
39 	void (*recalc) (struct clk *);
40 	int (*set_rate) (struct clk *, unsigned long);
41 	unsigned long (*get_rate) (struct clk *);
42 	unsigned long (*round_rate) (struct clk *, unsigned long);
43 	void (*init) (struct clk *);
44 	void (*enable) (struct clk *);
45 	void (*disable) (struct clk *);
46 };
47 
48 int u300_clock_init(void);
49 
50 #endif
51