Lines Matching refs:ce
147 static inline void __pm_clk_enable(struct device *dev, struct pm_clock_entry *ce) in __pm_clk_enable() argument
151 switch (ce->status) { in __pm_clk_enable()
153 ret = clk_prepare_enable(ce->clk); in __pm_clk_enable()
156 ret = clk_enable(ce->clk); in __pm_clk_enable()
162 ce->status = PCE_STATUS_ENABLED; in __pm_clk_enable()
165 __func__, ce->clk, ret); in __pm_clk_enable()
173 static void pm_clk_acquire(struct device *dev, struct pm_clock_entry *ce) in pm_clk_acquire() argument
175 if (!ce->clk) in pm_clk_acquire()
176 ce->clk = clk_get(dev, ce->con_id); in pm_clk_acquire()
177 if (IS_ERR(ce->clk)) { in pm_clk_acquire()
178 ce->status = PCE_STATUS_ERROR; in pm_clk_acquire()
180 } else if (clk_is_enabled_when_prepared(ce->clk)) { in pm_clk_acquire()
182 ce->status = PCE_STATUS_ACQUIRED; in pm_clk_acquire()
183 ce->enabled_when_prepared = true; in pm_clk_acquire()
184 } else if (clk_prepare(ce->clk)) { in pm_clk_acquire()
185 ce->status = PCE_STATUS_ERROR; in pm_clk_acquire()
189 ce->status = PCE_STATUS_PREPARED; in pm_clk_acquire()
192 ce->clk, ce->con_id); in pm_clk_acquire()
199 struct pm_clock_entry *ce; in __pm_clk_add() local
204 ce = kzalloc(sizeof(*ce), GFP_KERNEL); in __pm_clk_add()
205 if (!ce) in __pm_clk_add()
209 ce->con_id = kstrdup(con_id, GFP_KERNEL); in __pm_clk_add()
210 if (!ce->con_id) { in __pm_clk_add()
211 kfree(ce); in __pm_clk_add()
216 kfree(ce); in __pm_clk_add()
219 ce->clk = clk; in __pm_clk_add()
222 pm_clk_acquire(dev, ce); in __pm_clk_add()
225 list_add_tail(&ce->node, &psd->clock_list); in __pm_clk_add()
226 if (ce->enabled_when_prepared) in __pm_clk_add()
321 static void __pm_clk_remove(struct pm_clock_entry *ce) in __pm_clk_remove() argument
323 if (!ce) in __pm_clk_remove()
326 switch (ce->status) { in __pm_clk_remove()
328 clk_disable(ce->clk); in __pm_clk_remove()
331 clk_unprepare(ce->clk); in __pm_clk_remove()
335 if (!IS_ERR(ce->clk)) in __pm_clk_remove()
336 clk_put(ce->clk); in __pm_clk_remove()
342 kfree(ce->con_id); in __pm_clk_remove()
343 kfree(ce); in __pm_clk_remove()
357 struct pm_clock_entry *ce; in pm_clk_remove_clk() local
364 list_for_each_entry(ce, &psd->clock_list, node) { in pm_clk_remove_clk()
365 if (clk == ce->clk) in pm_clk_remove_clk()
373 list_del(&ce->node); in pm_clk_remove_clk()
374 if (ce->enabled_when_prepared) in pm_clk_remove_clk()
378 __pm_clk_remove(ce); in pm_clk_remove_clk()
424 struct pm_clock_entry *ce, *c; in pm_clk_destroy() local
434 list_for_each_entry_safe_reverse(ce, c, &psd->clock_list, node) in pm_clk_destroy()
435 list_move(&ce->node, &list); in pm_clk_destroy()
442 list_for_each_entry_safe_reverse(ce, c, &list, node) { in pm_clk_destroy()
443 list_del(&ce->node); in pm_clk_destroy()
444 __pm_clk_remove(ce); in pm_clk_destroy()
473 struct pm_clock_entry *ce; in pm_clk_suspend() local
486 list_for_each_entry_reverse(ce, &psd->clock_list, node) { in pm_clk_suspend()
487 if (ce->status == PCE_STATUS_ENABLED) { in pm_clk_suspend()
488 if (ce->enabled_when_prepared) { in pm_clk_suspend()
489 clk_disable_unprepare(ce->clk); in pm_clk_suspend()
490 ce->status = PCE_STATUS_ACQUIRED; in pm_clk_suspend()
492 clk_disable(ce->clk); in pm_clk_suspend()
493 ce->status = PCE_STATUS_PREPARED; in pm_clk_suspend()
511 struct pm_clock_entry *ce; in pm_clk_resume() local
524 list_for_each_entry(ce, &psd->clock_list, node) in pm_clk_resume()
525 __pm_clk_enable(dev, ce); in pm_clk_resume()