|
@@ -1011,7 +1011,7 @@ static long kona_peri_clk_round_rate(struct clk_hw *hw, unsigned long rate,
|
|
|
struct bcm_clk_div *div = &bcm_clk->u.peri->div;
|
|
|
|
|
|
if (!divider_exists(div))
|
|
|
- return __clk_get_rate(hw->clk);
|
|
|
+ return clk_hw_get_rate(hw);
|
|
|
|
|
|
/* Quietly avoid a zero rate */
|
|
|
return round_rate(bcm_clk->ccu, div, &bcm_clk->u.peri->pre_div,
|
|
@@ -1022,8 +1022,7 @@ static int kona_peri_clk_determine_rate(struct clk_hw *hw,
|
|
|
struct clk_rate_request *req)
|
|
|
{
|
|
|
struct kona_clk *bcm_clk = to_kona_clk(hw);
|
|
|
- struct clk *clk = hw->clk;
|
|
|
- struct clk *current_parent;
|
|
|
+ struct clk_hw *current_parent;
|
|
|
unsigned long parent_rate;
|
|
|
unsigned long best_delta;
|
|
|
unsigned long best_rate;
|
|
@@ -1048,14 +1047,14 @@ static int kona_peri_clk_determine_rate(struct clk_hw *hw,
|
|
|
}
|
|
|
|
|
|
/* Unless we can do better, stick with current parent */
|
|
|
- current_parent = clk_get_parent(clk);
|
|
|
- parent_rate = __clk_get_rate(current_parent);
|
|
|
+ current_parent = clk_hw_get_parent(hw);
|
|
|
+ parent_rate = clk_hw_get_rate(current_parent);
|
|
|
best_rate = kona_peri_clk_round_rate(hw, req->rate, &parent_rate);
|
|
|
best_delta = abs(best_rate - req->rate);
|
|
|
|
|
|
/* Check whether any other parent clock can produce a better result */
|
|
|
for (which = 0; which < parent_count; which++) {
|
|
|
- struct clk *parent = clk_get_parent_by_index(clk, which);
|
|
|
+ struct clk_hw *parent = clk_hw_get_parent_by_index(hw, which);
|
|
|
unsigned long delta;
|
|
|
unsigned long other_rate;
|
|
|
|
|
@@ -1064,14 +1063,14 @@ static int kona_peri_clk_determine_rate(struct clk_hw *hw,
|
|
|
continue;
|
|
|
|
|
|
/* We don't support CLK_SET_RATE_PARENT */
|
|
|
- parent_rate = __clk_get_rate(parent);
|
|
|
+ parent_rate = clk_hw_get_rate(parent);
|
|
|
other_rate = kona_peri_clk_round_rate(hw, req->rate,
|
|
|
&parent_rate);
|
|
|
delta = abs(other_rate - req->rate);
|
|
|
if (delta < best_delta) {
|
|
|
best_delta = delta;
|
|
|
best_rate = other_rate;
|
|
|
- req->best_parent_hw = __clk_get_hw(parent);
|
|
|
+ req->best_parent_hw = parent;
|
|
|
req->best_parent_rate = parent_rate;
|
|
|
}
|
|
|
}
|
|
@@ -1139,7 +1138,7 @@ static int kona_peri_clk_set_rate(struct clk_hw *hw, unsigned long rate,
|
|
|
if (parent_rate > (unsigned long)LONG_MAX)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (rate == __clk_get_rate(hw->clk))
|
|
|
+ if (rate == clk_hw_get_rate(hw))
|
|
|
return 0;
|
|
|
|
|
|
if (!divider_exists(div))
|
|
@@ -1258,6 +1257,7 @@ bool __init kona_ccu_init(struct ccu_data *ccu)
|
|
|
unsigned long flags;
|
|
|
unsigned int which;
|
|
|
struct clk **clks = ccu->clk_data.clks;
|
|
|
+ struct kona_clk *kona_clks = ccu->kona_clks;
|
|
|
bool success = true;
|
|
|
|
|
|
flags = ccu_lock(ccu);
|
|
@@ -1268,7 +1268,7 @@ bool __init kona_ccu_init(struct ccu_data *ccu)
|
|
|
|
|
|
if (!clks[which])
|
|
|
continue;
|
|
|
- bcm_clk = to_kona_clk(__clk_get_hw(clks[which]));
|
|
|
+ bcm_clk = &kona_clks[which];
|
|
|
success &= __kona_clk_init(bcm_clk);
|
|
|
}
|
|
|
|