Lines Matching refs:power

111 static int ipa_interconnect_init(struct ipa_power *power, struct device *dev,  in ipa_interconnect_init()  argument
118 count = power->interconnect_count; in ipa_interconnect_init()
122 power->interconnect = interconnect; in ipa_interconnect_init()
134 while (interconnect-- > power->interconnect) in ipa_interconnect_init()
136 kfree(power->interconnect); in ipa_interconnect_init()
137 power->interconnect = NULL; in ipa_interconnect_init()
143 static void ipa_interconnect_exit(struct ipa_power *power) in ipa_interconnect_exit() argument
147 interconnect = power->interconnect + power->interconnect_count; in ipa_interconnect_exit()
148 while (interconnect-- > power->interconnect) in ipa_interconnect_exit()
150 kfree(power->interconnect); in ipa_interconnect_exit()
151 power->interconnect = NULL; in ipa_interconnect_exit()
158 struct ipa_power *power = ipa->power; in ipa_interconnect_enable() local
162 interconnect = power->interconnect; in ipa_interconnect_enable()
163 for (i = 0; i < power->interconnect_count; i++) { in ipa_interconnect_enable()
179 while (interconnect-- > power->interconnect) in ipa_interconnect_enable()
189 struct ipa_power *power = ipa->power; in ipa_interconnect_disable() local
195 count = power->interconnect_count; in ipa_interconnect_disable()
196 interconnect = power->interconnect + count; in ipa_interconnect_disable()
221 ret = clk_prepare_enable(ipa->power->core); in ipa_power_enable()
233 clk_disable_unprepare(ipa->power->core); in ipa_power_disable()
244 __clear_bit(IPA_POWER_FLAG_RESUMED, ipa->power->flags); in ipa_runtime_suspend()
274 __set_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags); in ipa_suspend()
286 __clear_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags); in ipa_resume()
294 return ipa->power ? (u32)clk_get_rate(ipa->power->core) : 0; in ipa_core_clock_rate()
313 if (!__test_and_set_bit(IPA_POWER_FLAG_RESUMED, ipa->power->flags)) in ipa_suspend_handler()
314 if (test_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags)) in ipa_suspend_handler()
346 struct ipa_power *power = ipa->power; in ipa_power_modem_queue_stop() local
349 spin_lock_irqsave(&power->spinlock, flags); in ipa_power_modem_queue_stop()
351 if (!__test_and_clear_bit(IPA_POWER_FLAG_STARTED, power->flags)) { in ipa_power_modem_queue_stop()
353 __set_bit(IPA_POWER_FLAG_STOPPED, power->flags); in ipa_power_modem_queue_stop()
356 spin_unlock_irqrestore(&power->spinlock, flags); in ipa_power_modem_queue_stop()
366 struct ipa_power *power = ipa->power; in ipa_power_modem_queue_wake() local
369 spin_lock_irqsave(&power->spinlock, flags); in ipa_power_modem_queue_wake()
371 if (__test_and_clear_bit(IPA_POWER_FLAG_STOPPED, power->flags)) { in ipa_power_modem_queue_wake()
372 __set_bit(IPA_POWER_FLAG_STARTED, power->flags); in ipa_power_modem_queue_wake()
376 spin_unlock_irqrestore(&power->spinlock, flags); in ipa_power_modem_queue_wake()
382 clear_bit(IPA_POWER_FLAG_STARTED, ipa->power->flags); in ipa_power_modem_queue_active()
409 struct ipa_power *power; in ipa_power_init() local
427 power = kzalloc(sizeof(*power), GFP_KERNEL); in ipa_power_init()
428 if (!power) { in ipa_power_init()
432 power->dev = dev; in ipa_power_init()
433 power->core = clk; in ipa_power_init()
434 spin_lock_init(&power->spinlock); in ipa_power_init()
435 power->interconnect_count = data->interconnect_count; in ipa_power_init()
437 ret = ipa_interconnect_init(power, dev, data->interconnect_data); in ipa_power_init()
445 return power; in ipa_power_init()
448 kfree(power); in ipa_power_init()
456 void ipa_power_exit(struct ipa_power *power) in ipa_power_exit() argument
458 struct device *dev = power->dev; in ipa_power_exit()
459 struct clk *clk = power->core; in ipa_power_exit()
463 ipa_interconnect_exit(power); in ipa_power_exit()
464 kfree(power); in ipa_power_exit()