Lines Matching refs:psd
42 * @psd: pm_subsys_data instance corresponding to the PM clock entry list
52 static void pm_clk_list_lock(struct pm_subsys_data *psd)
53 __acquires(&psd->lock)
55 mutex_lock(&psd->clock_mutex);
56 spin_lock_irq(&psd->lock);
61 * @psd: the same pm_subsys_data instance previously passed to
64 static void pm_clk_list_unlock(struct pm_subsys_data *psd)
65 __releases(&psd->lock)
67 spin_unlock_irq(&psd->lock);
68 mutex_unlock(&psd->clock_mutex);
73 * @psd: pm_subsys_data instance corresponding to the PM clock entry list
86 static int pm_clk_op_lock(struct pm_subsys_data *psd, unsigned long *flags,
93 spin_lock_irqsave(&psd->lock, *flags);
94 if (!psd->clock_op_might_sleep) {
96 __release(&psd->lock);
103 fn, psd->clock_op_might_sleep);
104 spin_unlock_irqrestore(&psd->lock, *flags);
110 spin_unlock_irqrestore(&psd->lock, *flags);
111 mutex_lock(&psd->clock_mutex);
114 * There was a possibility for psd->clock_op_might_sleep
117 if (likely(psd->clock_op_might_sleep))
120 mutex_unlock(&psd->clock_mutex);
126 * @psd: the same pm_subsys_data instance previously passed to
130 static void pm_clk_op_unlock(struct pm_subsys_data *psd, unsigned long *flags)
133 if (psd->clock_op_might_sleep) {
134 mutex_unlock(&psd->clock_mutex);
137 __acquire(&psd->lock);
138 spin_unlock_irqrestore(&psd->lock, *flags);
198 struct pm_subsys_data *psd = dev_to_psd(dev);
201 if (!psd)
224 pm_clk_list_lock(psd);
225 list_add_tail(&ce->node, &psd->clock_list);
227 psd->clock_op_might_sleep++;
228 pm_clk_list_unlock(psd);
389 struct pm_subsys_data *psd = dev_to_psd(dev);
392 if (!psd)
395 pm_clk_list_lock(psd);
397 list_for_each_entry(ce, &psd->clock_list, node) {
406 pm_clk_list_unlock(psd);
412 psd->clock_op_might_sleep--;
413 pm_clk_list_unlock(psd);
429 struct pm_subsys_data *psd = dev_to_psd(dev);
432 if (!psd || !clk)
435 pm_clk_list_lock(psd);
437 list_for_each_entry(ce, &psd->clock_list, node) {
442 pm_clk_list_unlock(psd);
448 psd->clock_op_might_sleep--;
449 pm_clk_list_unlock(psd);
464 struct pm_subsys_data *psd = dev_to_psd(dev);
465 if (psd) {
466 INIT_LIST_HEAD(&psd->clock_list);
467 mutex_init(&psd->clock_mutex);
468 psd->clock_op_might_sleep = 0;
496 struct pm_subsys_data *psd = dev_to_psd(dev);
500 if (!psd)
505 pm_clk_list_lock(psd);
507 list_for_each_entry_safe_reverse(ce, c, &psd->clock_list, node)
509 psd->clock_op_might_sleep = 0;
511 pm_clk_list_unlock(psd);
545 struct pm_subsys_data *psd = dev_to_psd(dev);
552 if (!psd)
555 ret = pm_clk_op_lock(psd, &flags, __func__);
559 list_for_each_entry_reverse(ce, &psd->clock_list, node) {
571 pm_clk_op_unlock(psd, &flags);
583 struct pm_subsys_data *psd = dev_to_psd(dev);
590 if (!psd)
593 ret = pm_clk_op_lock(psd, &flags, __func__);
597 list_for_each_entry(ce, &psd->clock_list, node)
600 pm_clk_op_unlock(psd, &flags);