Lines Matching refs:cmp
103 struct ccu_mp *cmp = data; in ccu_mp_round_rate() local
107 if (cmp->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_mp_round_rate()
108 rate *= cmp->fixed_post_div; in ccu_mp_round_rate()
110 max_m = cmp->m.max ?: 1 << cmp->m.width; in ccu_mp_round_rate()
111 max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1); in ccu_mp_round_rate()
113 if (!clk_hw_can_set_rate_parent(&cmp->common.hw)) { in ccu_mp_round_rate()
120 if (cmp->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_mp_round_rate()
121 rate /= cmp->fixed_post_div; in ccu_mp_round_rate()
128 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_disable() local
130 return ccu_gate_helper_disable(&cmp->common, cmp->enable); in ccu_mp_disable()
135 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_enable() local
137 return ccu_gate_helper_enable(&cmp->common, cmp->enable); in ccu_mp_enable()
142 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_is_enabled() local
144 return ccu_gate_helper_is_enabled(&cmp->common, cmp->enable); in ccu_mp_is_enabled()
150 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_recalc_rate() local
156 parent_rate = ccu_mux_helper_apply_prediv(&cmp->common, &cmp->mux, -1, in ccu_mp_recalc_rate()
159 reg = readl(cmp->common.base + cmp->common.reg); in ccu_mp_recalc_rate()
161 m = reg >> cmp->m.shift; in ccu_mp_recalc_rate()
162 m &= (1 << cmp->m.width) - 1; in ccu_mp_recalc_rate()
163 m += cmp->m.offset; in ccu_mp_recalc_rate()
167 p = reg >> cmp->p.shift; in ccu_mp_recalc_rate()
168 p &= (1 << cmp->p.width) - 1; in ccu_mp_recalc_rate()
171 if (cmp->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_mp_recalc_rate()
172 rate /= cmp->fixed_post_div; in ccu_mp_recalc_rate()
180 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_determine_rate() local
182 return ccu_mux_helper_determine_rate(&cmp->common, &cmp->mux, in ccu_mp_determine_rate()
183 req, ccu_mp_round_rate, cmp); in ccu_mp_determine_rate()
189 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_set_rate() local
196 parent_rate = ccu_mux_helper_apply_prediv(&cmp->common, &cmp->mux, -1, in ccu_mp_set_rate()
199 max_m = cmp->m.max ?: 1 << cmp->m.width; in ccu_mp_set_rate()
200 max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1); in ccu_mp_set_rate()
203 if (cmp->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_mp_set_rate()
204 rate = rate * cmp->fixed_post_div; in ccu_mp_set_rate()
208 spin_lock_irqsave(cmp->common.lock, flags); in ccu_mp_set_rate()
210 reg = readl(cmp->common.base + cmp->common.reg); in ccu_mp_set_rate()
211 reg &= ~GENMASK(cmp->m.width + cmp->m.shift - 1, cmp->m.shift); in ccu_mp_set_rate()
212 reg &= ~GENMASK(cmp->p.width + cmp->p.shift - 1, cmp->p.shift); in ccu_mp_set_rate()
213 reg |= (m - cmp->m.offset) << cmp->m.shift; in ccu_mp_set_rate()
214 reg |= ilog2(p) << cmp->p.shift; in ccu_mp_set_rate()
216 writel(reg, cmp->common.base + cmp->common.reg); in ccu_mp_set_rate()
218 spin_unlock_irqrestore(cmp->common.lock, flags); in ccu_mp_set_rate()
225 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_get_parent() local
227 return ccu_mux_helper_get_parent(&cmp->common, &cmp->mux); in ccu_mp_get_parent()
232 struct ccu_mp *cmp = hw_to_ccu_mp(hw); in ccu_mp_set_parent() local
234 return ccu_mux_helper_set_parent(&cmp->common, &cmp->mux, index); in ccu_mp_set_parent()