Lines Matching refs:nkm

23 			      struct _ccu_nkm *nkm)  in ccu_nkm_find_best()  argument
29 for (_k = nkm->min_k; _k <= nkm->max_k; _k++) { in ccu_nkm_find_best()
30 for (_n = nkm->min_n; _n <= nkm->max_n; _n++) { in ccu_nkm_find_best()
31 for (_m = nkm->min_m; _m <= nkm->max_m; _m++) { in ccu_nkm_find_best()
48 nkm->n = best_n; in ccu_nkm_find_best()
49 nkm->k = best_k; in ccu_nkm_find_best()
50 nkm->m = best_m; in ccu_nkm_find_best()
55 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_disable() local
57 return ccu_gate_helper_disable(&nkm->common, nkm->enable); in ccu_nkm_disable()
62 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_enable() local
64 return ccu_gate_helper_enable(&nkm->common, nkm->enable); in ccu_nkm_enable()
69 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_is_enabled() local
71 return ccu_gate_helper_is_enabled(&nkm->common, nkm->enable); in ccu_nkm_is_enabled()
77 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_recalc_rate() local
81 reg = readl(nkm->common.base + nkm->common.reg); in ccu_nkm_recalc_rate()
83 n = reg >> nkm->n.shift; in ccu_nkm_recalc_rate()
84 n &= (1 << nkm->n.width) - 1; in ccu_nkm_recalc_rate()
85 n += nkm->n.offset; in ccu_nkm_recalc_rate()
89 k = reg >> nkm->k.shift; in ccu_nkm_recalc_rate()
90 k &= (1 << nkm->k.width) - 1; in ccu_nkm_recalc_rate()
91 k += nkm->k.offset; in ccu_nkm_recalc_rate()
95 m = reg >> nkm->m.shift; in ccu_nkm_recalc_rate()
96 m &= (1 << nkm->m.width) - 1; in ccu_nkm_recalc_rate()
97 m += nkm->m.offset; in ccu_nkm_recalc_rate()
103 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_nkm_recalc_rate()
104 rate /= nkm->fixed_post_div; in ccu_nkm_recalc_rate()
115 struct ccu_nkm *nkm = data; in ccu_nkm_round_rate() local
118 _nkm.min_n = nkm->n.min ?: 1; in ccu_nkm_round_rate()
119 _nkm.max_n = nkm->n.max ?: 1 << nkm->n.width; in ccu_nkm_round_rate()
120 _nkm.min_k = nkm->k.min ?: 1; in ccu_nkm_round_rate()
121 _nkm.max_k = nkm->k.max ?: 1 << nkm->k.width; in ccu_nkm_round_rate()
123 _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width; in ccu_nkm_round_rate()
125 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_nkm_round_rate()
126 rate *= nkm->fixed_post_div; in ccu_nkm_round_rate()
132 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_nkm_round_rate()
133 rate /= nkm->fixed_post_div; in ccu_nkm_round_rate()
141 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_determine_rate() local
143 return ccu_mux_helper_determine_rate(&nkm->common, &nkm->mux, in ccu_nkm_determine_rate()
144 req, ccu_nkm_round_rate, nkm); in ccu_nkm_determine_rate()
150 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_set_rate() local
155 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) in ccu_nkm_set_rate()
156 rate *= nkm->fixed_post_div; in ccu_nkm_set_rate()
158 _nkm.min_n = nkm->n.min ?: 1; in ccu_nkm_set_rate()
159 _nkm.max_n = nkm->n.max ?: 1 << nkm->n.width; in ccu_nkm_set_rate()
160 _nkm.min_k = nkm->k.min ?: 1; in ccu_nkm_set_rate()
161 _nkm.max_k = nkm->k.max ?: 1 << nkm->k.width; in ccu_nkm_set_rate()
163 _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width; in ccu_nkm_set_rate()
167 spin_lock_irqsave(nkm->common.lock, flags); in ccu_nkm_set_rate()
169 reg = readl(nkm->common.base + nkm->common.reg); in ccu_nkm_set_rate()
170 reg &= ~GENMASK(nkm->n.width + nkm->n.shift - 1, nkm->n.shift); in ccu_nkm_set_rate()
171 reg &= ~GENMASK(nkm->k.width + nkm->k.shift - 1, nkm->k.shift); in ccu_nkm_set_rate()
172 reg &= ~GENMASK(nkm->m.width + nkm->m.shift - 1, nkm->m.shift); in ccu_nkm_set_rate()
174 reg |= (_nkm.n - nkm->n.offset) << nkm->n.shift; in ccu_nkm_set_rate()
175 reg |= (_nkm.k - nkm->k.offset) << nkm->k.shift; in ccu_nkm_set_rate()
176 reg |= (_nkm.m - nkm->m.offset) << nkm->m.shift; in ccu_nkm_set_rate()
177 writel(reg, nkm->common.base + nkm->common.reg); in ccu_nkm_set_rate()
179 spin_unlock_irqrestore(nkm->common.lock, flags); in ccu_nkm_set_rate()
181 ccu_helper_wait_for_lock(&nkm->common, nkm->lock); in ccu_nkm_set_rate()
188 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_get_parent() local
190 return ccu_mux_helper_get_parent(&nkm->common, &nkm->mux); in ccu_nkm_get_parent()
195 struct ccu_nkm *nkm = hw_to_ccu_nkm(hw); in ccu_nkm_set_parent() local
197 return ccu_mux_helper_set_parent(&nkm->common, &nkm->mux, index); in ccu_nkm_set_parent()