https://github.com/torvalds/linux
Raw File
Tip revision: 69e273c0b0a3c337a521d083374c918dc52c666f authored by Linus Torvalds on 01 September 2014, 01:23:04 UTC
Linux 3.17-rc3
Tip revision: 69e273c
clock.h
#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
back to top