1#ifndef CLOCK_H
2#define CLOCK_H
3
4/* legacy clock implementation */
5
6struct clk;
7unsigned long shmobile_fixed_ratio_clk_recalc(struct clk *clk);
8extern struct sh_clk_ops shmobile_fixed_ratio_clk_ops;
9
10/* clock ratio */
11struct clk_ratio {
12	int mul;
13	int div;
14};
15
16#define SH_CLK_RATIO(name, m, d)		\
17static struct clk_ratio name ##_ratio = {	\
18	.mul = m,				\
19	.div = d,				\
20}
21
22#define SH_FIXED_RATIO_CLKg(name, p, r)	\
23struct clk name = {			\
24	.parent	= &p,				\
25	.ops	= &shmobile_fixed_ratio_clk_ops,\
26	.priv	= &r ## _ratio,			\
27}
28
29#define SH_FIXED_RATIO_CLK(name, p, r)		\
30static SH_FIXED_RATIO_CLKg(name, p, r)
31
32#define SH_FIXED_RATIO_CLK_SET(name, p, m, d)	\
33	SH_CLK_RATIO(name, m, d);		\
34	SH_FIXED_RATIO_CLK(name, p, name)
35
36#define SH_CLK_SET_RATIO(p, m, d)	\
37do {			\
38	(p)->mul = m;	\
39	(p)->div = d;	\
40} while (0)
41
42#endif
43