|
@@ -37,24 +37,38 @@ EXPORT_SYMBOL(clk_get_rate);
|
|
|
|
|
|
long clk_round_rate(struct clk *clk, unsigned long rate)
|
|
|
{
|
|
|
- struct icst_vco vco;
|
|
|
- vco = icst_hz_to_vco(clk->params, rate);
|
|
|
- return icst_hz(clk->params, vco);
|
|
|
+ long ret = -EIO;
|
|
|
+ if (clk->ops && clk->ops->round)
|
|
|
+ ret = clk->ops->round(clk, rate);
|
|
|
+ return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(clk_round_rate);
|
|
|
|
|
|
int clk_set_rate(struct clk *clk, unsigned long rate)
|
|
|
{
|
|
|
int ret = -EIO;
|
|
|
-
|
|
|
- if (clk->setvco) {
|
|
|
- struct icst_vco vco;
|
|
|
-
|
|
|
- vco = icst_hz_to_vco(clk->params, rate);
|
|
|
- clk->rate = icst_hz(clk->params, vco);
|
|
|
- clk->setvco(clk, vco);
|
|
|
- ret = 0;
|
|
|
- }
|
|
|
+ if (clk->ops && clk->ops->set)
|
|
|
+ ret = clk->ops->set(clk, rate);
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(clk_set_rate);
|
|
|
+
|
|
|
+long icst_clk_round(struct clk *clk, unsigned long rate)
|
|
|
+{
|
|
|
+ struct icst_vco vco;
|
|
|
+ vco = icst_hz_to_vco(clk->params, rate);
|
|
|
+ return icst_hz(clk->params, vco);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(icst_clk_round);
|
|
|
+
|
|
|
+int icst_clk_set(struct clk *clk, unsigned long rate)
|
|
|
+{
|
|
|
+ struct icst_vco vco;
|
|
|
+
|
|
|
+ vco = icst_hz_to_vco(clk->params, rate);
|
|
|
+ clk->rate = icst_hz(clk->params, vco);
|
|
|
+ clk->ops->setvco(clk, vco);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(icst_clk_set);
|