|
@@ -290,28 +290,12 @@ struct clk_hw *__clk_get_hw(struct clk *clk)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(__clk_get_hw);
|
|
|
|
|
|
-u8 __clk_get_num_parents(struct clk *clk)
|
|
|
-{
|
|
|
- return !clk ? 0 : clk->core->num_parents;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(__clk_get_num_parents);
|
|
|
-
|
|
|
unsigned int clk_hw_get_num_parents(struct clk_hw *hw)
|
|
|
{
|
|
|
return hw->core->num_parents;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(clk_hw_get_num_parents);
|
|
|
|
|
|
-struct clk *__clk_get_parent(struct clk *clk)
|
|
|
-{
|
|
|
- if (!clk)
|
|
|
- return NULL;
|
|
|
-
|
|
|
- /* TODO: Create a per-user clk and change callers to call clk_put */
|
|
|
- return !clk->core->parent ? NULL : clk->core->parent->hw->clk;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(__clk_get_parent);
|
|
|
-
|
|
|
struct clk_hw *clk_hw_get_parent(struct clk_hw *hw)
|
|
|
{
|
|
|
return hw->core->parent ? hw->core->parent->hw : NULL;
|
|
@@ -375,19 +359,6 @@ static struct clk_core *clk_core_get_parent_by_index(struct clk_core *core,
|
|
|
return core->parents[index];
|
|
|
}
|
|
|
|
|
|
-struct clk *clk_get_parent_by_index(struct clk *clk, u8 index)
|
|
|
-{
|
|
|
- struct clk_core *parent;
|
|
|
-
|
|
|
- if (!clk)
|
|
|
- return NULL;
|
|
|
-
|
|
|
- parent = clk_core_get_parent_by_index(clk->core, index);
|
|
|
-
|
|
|
- return !parent ? NULL : parent->hw->clk;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(clk_get_parent_by_index);
|
|
|
-
|
|
|
struct clk_hw *clk_hw_get_parent_by_index(struct clk_hw *hw, unsigned int index)
|
|
|
{
|
|
|
struct clk_core *parent;
|
|
@@ -424,15 +395,6 @@ out:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-unsigned long __clk_get_rate(struct clk *clk)
|
|
|
-{
|
|
|
- if (!clk)
|
|
|
- return 0;
|
|
|
-
|
|
|
- return clk_core_get_rate_nolock(clk->core);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(__clk_get_rate);
|
|
|
-
|
|
|
unsigned long clk_hw_get_rate(struct clk_hw *hw)
|
|
|
{
|
|
|
return clk_core_get_rate_nolock(hw->core);
|
|
@@ -459,14 +421,6 @@ unsigned long clk_hw_get_flags(struct clk_hw *hw)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(clk_hw_get_flags);
|
|
|
|
|
|
-bool __clk_is_prepared(struct clk *clk)
|
|
|
-{
|
|
|
- if (!clk)
|
|
|
- return false;
|
|
|
-
|
|
|
- return clk_core_is_prepared(clk->core);
|
|
|
-}
|
|
|
-
|
|
|
bool clk_hw_is_prepared(struct clk_hw *hw)
|
|
|
{
|
|
|
return clk_core_is_prepared(hw->core);
|
|
@@ -880,32 +834,6 @@ int __clk_determine_rate(struct clk_hw *hw, struct clk_rate_request *req)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(__clk_determine_rate);
|
|
|
|
|
|
-/**
|
|
|
- * __clk_round_rate - round the given rate for a clk
|
|
|
- * @clk: round the rate of this clock
|
|
|
- * @rate: the rate which is to be rounded
|
|
|
- *
|
|
|
- * Useful for clk_ops such as .set_rate
|
|
|
- */
|
|
|
-unsigned long __clk_round_rate(struct clk *clk, unsigned long rate)
|
|
|
-{
|
|
|
- struct clk_rate_request req;
|
|
|
- int ret;
|
|
|
-
|
|
|
- if (!clk)
|
|
|
- return 0;
|
|
|
-
|
|
|
- clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate);
|
|
|
- req.rate = rate;
|
|
|
-
|
|
|
- ret = clk_core_round_rate_nolock(clk->core, &req);
|
|
|
- if (ret)
|
|
|
- return 0;
|
|
|
-
|
|
|
- return req.rate;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(__clk_round_rate);
|
|
|
-
|
|
|
unsigned long clk_hw_round_rate(struct clk_hw *hw, unsigned long rate)
|
|
|
{
|
|
|
int ret;
|
|
@@ -933,16 +861,24 @@ EXPORT_SYMBOL_GPL(clk_hw_round_rate);
|
|
|
*/
|
|
|
long clk_round_rate(struct clk *clk, unsigned long rate)
|
|
|
{
|
|
|
- unsigned long ret;
|
|
|
+ struct clk_rate_request req;
|
|
|
+ int ret;
|
|
|
|
|
|
if (!clk)
|
|
|
return 0;
|
|
|
|
|
|
clk_prepare_lock();
|
|
|
- ret = __clk_round_rate(clk, rate);
|
|
|
+
|
|
|
+ clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate);
|
|
|
+ req.rate = rate;
|
|
|
+
|
|
|
+ ret = clk_core_round_rate_nolock(clk->core, &req);
|
|
|
clk_prepare_unlock();
|
|
|
|
|
|
- return ret;
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ return req.rate;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(clk_round_rate);
|
|
|
|
|
@@ -1711,8 +1647,12 @@ struct clk *clk_get_parent(struct clk *clk)
|
|
|
{
|
|
|
struct clk *parent;
|
|
|
|
|
|
+ if (!clk)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
clk_prepare_lock();
|
|
|
- parent = __clk_get_parent(clk);
|
|
|
+ /* TODO: Create a per-user clk and change callers to call clk_put */
|
|
|
+ parent = !clk->core->parent ? NULL : clk->core->parent->hw->clk;
|
|
|
clk_prepare_unlock();
|
|
|
|
|
|
return parent;
|