mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-07 04:09:21 +00:00
ARM: pxa: add clk_set_rate()
Since there're mulitple clock rates in some device controllers, enable clk_set_rate() for this usage. Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
This commit is contained in:
parent
4e234cc0ee
commit
52585ccd93
4 changed files with 32 additions and 0 deletions
|
@ -88,3 +88,18 @@ unsigned long clk_get_rate(struct clk *clk)
|
||||||
return rate;
|
return rate;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(clk_get_rate);
|
EXPORT_SYMBOL(clk_get_rate);
|
||||||
|
|
||||||
|
int clk_set_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
int ret = -EINVAL;
|
||||||
|
|
||||||
|
if (clk->ops->setrate) {
|
||||||
|
spin_lock_irqsave(&clocks_lock, flags);
|
||||||
|
ret = clk->ops->setrate(clk, rate);
|
||||||
|
spin_unlock_irqrestore(&clocks_lock, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(clk_set_rate);
|
||||||
|
|
|
@ -12,6 +12,7 @@ struct clkops {
|
||||||
void (*enable)(struct clk *);
|
void (*enable)(struct clk *);
|
||||||
void (*disable)(struct clk *);
|
void (*disable)(struct clk *);
|
||||||
unsigned long (*getrate)(struct clk *);
|
unsigned long (*getrate)(struct clk *);
|
||||||
|
int (*setrate)(struct clk *, unsigned long);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clk {
|
struct clk {
|
||||||
|
|
|
@ -53,6 +53,21 @@ unsigned long clk_get_rate(struct clk *clk)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(clk_get_rate);
|
EXPORT_SYMBOL(clk_get_rate);
|
||||||
|
|
||||||
|
int clk_set_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
int ret = -EINVAL;
|
||||||
|
|
||||||
|
if (clk->ops->setrate) {
|
||||||
|
spin_lock_irqsave(&clocks_lock, flags);
|
||||||
|
ret = clk->ops->setrate(clk, rate);
|
||||||
|
spin_unlock_irqrestore(&clocks_lock, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(clk_set_rate);
|
||||||
|
|
||||||
void clk_dummy_enable(struct clk *clk)
|
void clk_dummy_enable(struct clk *clk)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ struct clkops {
|
||||||
void (*enable)(struct clk *);
|
void (*enable)(struct clk *);
|
||||||
void (*disable)(struct clk *);
|
void (*disable)(struct clk *);
|
||||||
unsigned long (*getrate)(struct clk *);
|
unsigned long (*getrate)(struct clk *);
|
||||||
|
int (*setrate)(struct clk *, unsigned long);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clk {
|
struct clk {
|
||||||
|
|
Loading…
Reference in a new issue