|
@@ -120,6 +120,21 @@ EXPORT_SYMBOL(clk_get_rate);
|
|
|
|
|
|
int clk_set_rate(struct clk *clk, unsigned long rate)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+ if (clk->flags & CLKFLAG_MAX) {
|
|
|
+ ret = clk->ops->set_max_rate(clk->id, rate);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ if (clk->flags & CLKFLAG_MIN) {
|
|
|
+ ret = clk->ops->set_min_rate(clk->id, rate);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (clk->flags & CLKFLAG_MAX || clk->flags & CLKFLAG_MIN)
|
|
|
+ return ret;
|
|
|
+
|
|
|
return clk->ops->set_rate(clk->id, rate);
|
|
|
}
|
|
|
EXPORT_SYMBOL(clk_set_rate);
|