|
@@ -85,6 +85,10 @@ static unsigned long ccu_mp_recalc_rate(struct clk_hw *hw,
|
|
|
unsigned int m, p;
|
|
|
u32 reg;
|
|
|
|
|
|
+ /* Adjust parent_rate according to pre-dividers */
|
|
|
+ ccu_mux_helper_adjust_parent_for_prediv(&cmp->common, &cmp->mux,
|
|
|
+ -1, &parent_rate);
|
|
|
+
|
|
|
reg = readl(cmp->common.base + cmp->common.reg);
|
|
|
|
|
|
m = reg >> cmp->m.shift;
|
|
@@ -117,6 +121,10 @@ static int ccu_mp_set_rate(struct clk_hw *hw, unsigned long rate,
|
|
|
unsigned int m, p;
|
|
|
u32 reg;
|
|
|
|
|
|
+ /* Adjust parent_rate according to pre-dividers */
|
|
|
+ ccu_mux_helper_adjust_parent_for_prediv(&cmp->common, &cmp->mux,
|
|
|
+ -1, &parent_rate);
|
|
|
+
|
|
|
max_m = cmp->m.max ?: 1 << cmp->m.width;
|
|
|
max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1);
|
|
|
|