mirror of https://gitee.com/openkylin/linux.git
sh: introduce struct clk_div4_table
This patch introduces struct clk_div4_table. The structure will be used to keep div4 specific data, and is with this patch replacing the struct clk_div_mult_table pointer arg used by the sh_clk_div4_register() functions. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
de7ca2144c
commit
0a5f337ecd
|
@ -146,12 +146,16 @@ int sh_clk_mstp32_register(struct clk *clks, int nr);
|
|||
.flags = _flags, \
|
||||
}
|
||||
|
||||
struct clk_div4_table {
|
||||
struct clk_div_mult_table *div_mult_table;
|
||||
};
|
||||
|
||||
int sh_clk_div4_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table);
|
||||
struct clk_div4_table *table);
|
||||
int sh_clk_div4_enable_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table);
|
||||
struct clk_div4_table *table);
|
||||
int sh_clk_div4_reparent_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table);
|
||||
struct clk_div4_table *table);
|
||||
|
||||
#define SH_CLK_DIV6(_name, _parent, _reg, _flags) \
|
||||
{ \
|
||||
|
|
|
@ -149,7 +149,8 @@ int __init sh_clk_div6_register(struct clk *clks, int nr)
|
|||
|
||||
static unsigned long sh_clk_div4_recalc(struct clk *clk)
|
||||
{
|
||||
struct clk_div_mult_table *table = clk->priv;
|
||||
struct clk_div4_table *d4t = clk->priv;
|
||||
struct clk_div_mult_table *table = d4t->div_mult_table;
|
||||
unsigned int idx;
|
||||
|
||||
clk_rate_table_build(clk, clk->freq_table, table->nr_divisors,
|
||||
|
@ -162,7 +163,8 @@ static unsigned long sh_clk_div4_recalc(struct clk *clk)
|
|||
|
||||
static int sh_clk_div4_set_parent(struct clk *clk, struct clk *parent)
|
||||
{
|
||||
struct clk_div_mult_table *table = clk->priv;
|
||||
struct clk_div4_table *d4t = clk->priv;
|
||||
struct clk_div_mult_table *table = d4t->div_mult_table;
|
||||
u32 value;
|
||||
int ret;
|
||||
|
||||
|
@ -234,11 +236,11 @@ static struct clk_ops sh_clk_div4_reparent_clk_ops = {
|
|||
};
|
||||
|
||||
static int __init sh_clk_div4_register_ops(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table, struct clk_ops *ops)
|
||||
struct clk_div4_table *table, struct clk_ops *ops)
|
||||
{
|
||||
struct clk *clkp;
|
||||
void *freq_table;
|
||||
int nr_divs = table->nr_divisors;
|
||||
int nr_divs = table->div_mult_table->nr_divisors;
|
||||
int freq_table_size = sizeof(struct cpufreq_frequency_table);
|
||||
int ret = 0;
|
||||
int k;
|
||||
|
@ -267,20 +269,20 @@ static int __init sh_clk_div4_register_ops(struct clk *clks, int nr,
|
|||
}
|
||||
|
||||
int __init sh_clk_div4_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table)
|
||||
struct clk_div4_table *table)
|
||||
{
|
||||
return sh_clk_div4_register_ops(clks, nr, table, &sh_clk_div4_clk_ops);
|
||||
}
|
||||
|
||||
int __init sh_clk_div4_enable_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table)
|
||||
struct clk_div4_table *table)
|
||||
{
|
||||
return sh_clk_div4_register_ops(clks, nr, table,
|
||||
&sh_clk_div4_enable_clk_ops);
|
||||
}
|
||||
|
||||
int __init sh_clk_div4_reparent_register(struct clk *clks, int nr,
|
||||
struct clk_div_mult_table *table)
|
||||
struct clk_div4_table *table)
|
||||
{
|
||||
return sh_clk_div4_register_ops(clks, nr, table,
|
||||
&sh_clk_div4_reparent_clk_ops);
|
||||
|
|
|
@ -107,13 +107,17 @@ struct clk *main_clks[] = {
|
|||
static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
.multipliers = multipliers,
|
||||
.nr_multipliers = ARRAY_SIZE(multipliers),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_U, DIV4_SH, DIV4_B, DIV4_B3, DIV4_P,
|
||||
DIV4_SIUA, DIV4_SIUB, DIV4_NR };
|
||||
|
||||
|
|
|
@ -110,13 +110,17 @@ struct clk *main_clks[] = {
|
|||
static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
.multipliers = multipliers,
|
||||
.nr_multipliers = ARRAY_SIZE(multipliers),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_U, DIV4_SH, DIV4_B, DIV4_B3, DIV4_P,
|
||||
DIV4_SIUA, DIV4_SIUB, DIV4_NR };
|
||||
|
||||
|
|
|
@ -110,13 +110,17 @@ struct clk *main_clks[] = {
|
|||
static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
.multipliers = multipliers,
|
||||
.nr_multipliers = ARRAY_SIZE(multipliers),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
#define DIV4(_str, _reg, _bit, _mask, _flags) \
|
||||
SH_CLK_DIV4(_str, &pll_clk, _reg, _bit, _mask, _flags)
|
||||
|
||||
|
|
|
@ -110,13 +110,17 @@ struct clk *main_clks[] = {
|
|||
static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
.multipliers = multipliers,
|
||||
.nr_multipliers = ARRAY_SIZE(multipliers),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_U, DIV4_SH, DIV4_B, DIV4_B3, DIV4_P, DIV4_NR };
|
||||
|
||||
#define DIV4(_str, _reg, _bit, _mask, _flags) \
|
||||
|
|
|
@ -129,11 +129,15 @@ struct clk *main_clks[] = {
|
|||
|
||||
static int divisors[] = { 2, 3, 4, 6, 8, 12, 16, 0, 24, 32, 36, 48, 0, 72 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_SH, DIV4_B, DIV4_P, DIV4_M1, DIV4_NR };
|
||||
|
||||
#define DIV4(_str, _reg, _bit, _mask, _flags) \
|
||||
|
|
|
@ -57,11 +57,15 @@ static struct clk *clks[] = {
|
|||
static unsigned int div2[] = { 1, 2, 4, 6, 8, 12, 16, 18,
|
||||
24, 32, 36, 48 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = div2,
|
||||
.nr_divisors = ARRAY_SIZE(div2),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_U, DIV4_SH, DIV4_B, DIV4_DDR, DIV4_GA,
|
||||
DIV4_DU, DIV4_P, DIV4_NR };
|
||||
|
||||
|
|
|
@ -59,11 +59,15 @@ static struct clk *clks[] = {
|
|||
static unsigned int div2[] = { 1, 2, 4, 6, 8, 12, 16, 18,
|
||||
24, 32, 36, 48 };
|
||||
|
||||
static struct clk_div_mult_table div4_table = {
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = div2,
|
||||
.nr_divisors = ARRAY_SIZE(div2),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum { DIV4_I, DIV4_SH, DIV4_B, DIV4_DDR, DIV4_DU, DIV4_P, DIV4_NR };
|
||||
|
||||
#define DIV4(_str, _bit, _mask, _flags) \
|
||||
|
|
Loading…
Reference in New Issue