1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #ifndef CLOCK_H
- #define CLOCK_H
- #ifdef CONFIG_COMMON_CLK
- /* temporary clock configuration helper for platform devices */
- struct clk_name {
- const char *clk;
- const char *con_id;
- const char *dev_id;
- };
- void shmobile_clk_workaround(const struct clk_name *clks, int nr_clks,
- bool enable);
- #else /* CONFIG_COMMON_CLK */
- /* legacy clock implementation */
- struct clk;
- unsigned long shmobile_fixed_ratio_clk_recalc(struct clk *clk);
- extern struct sh_clk_ops shmobile_fixed_ratio_clk_ops;
- /* clock ratio */
- struct clk_ratio {
- int mul;
- int div;
- };
- #define SH_CLK_RATIO(name, m, d) \
- static struct clk_ratio name ##_ratio = { \
- .mul = m, \
- .div = d, \
- }
- #define SH_FIXED_RATIO_CLKg(name, p, r) \
- struct clk name = { \
- .parent = &p, \
- .ops = &shmobile_fixed_ratio_clk_ops,\
- .priv = &r ## _ratio, \
- }
- #define SH_FIXED_RATIO_CLK(name, p, r) \
- static SH_FIXED_RATIO_CLKg(name, p, r)
- #define SH_FIXED_RATIO_CLK_SET(name, p, m, d) \
- SH_CLK_RATIO(name, m, d); \
- SH_FIXED_RATIO_CLK(name, p, name)
- #define SH_CLK_SET_RATIO(p, m, d) \
- do { \
- (p)->mul = m; \
- (p)->div = d; \
- } while (0)
- #endif /* CONFIG_COMMON_CLK */
- #endif
|