1 #ifndef CLOCK_H
2 #define CLOCK_H
3 
4 /* legacy clock implementation */
5 
6 struct clk;
7 unsigned long shmobile_fixed_ratio_clk_recalc(struct clk *clk);
8 extern struct sh_clk_ops shmobile_fixed_ratio_clk_ops;
9 
10 /* clock ratio */
11 struct clk_ratio {
12 	int mul;
13 	int div;
14 };
15 
16 #define SH_CLK_RATIO(name, m, d)		\
17 static struct clk_ratio name ##_ratio = {	\
18 	.mul = m,				\
19 	.div = d,				\
20 }
21 
22 #define SH_FIXED_RATIO_CLKg(name, p, r)	\
23 struct 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)		\
30 static 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)	\
37 do {			\
38 	(p)->mul = m;	\
39 	(p)->div = d;	\
40 } while (0)
41 
42 #endif
43