Lines Matching refs:ipa
16 #include "ipa.h"
115 static int ipa_power_enable(struct ipa *ipa)
117 struct ipa_power *power = ipa->power;
135 static void ipa_power_disable(struct ipa *ipa)
137 struct ipa_power *power = ipa->power;
146 struct ipa *ipa = dev_get_drvdata(dev);
149 if (ipa->setup_complete) {
150 __clear_bit(IPA_POWER_FLAG_RESUMED, ipa->power->flags);
151 ipa_endpoint_suspend(ipa);
152 gsi_suspend(&ipa->gsi);
155 ipa_power_disable(ipa);
162 struct ipa *ipa = dev_get_drvdata(dev);
165 ret = ipa_power_enable(ipa);
170 if (ipa->setup_complete) {
171 gsi_resume(&ipa->gsi);
172 ipa_endpoint_resume(ipa);
180 struct ipa *ipa = dev_get_drvdata(dev);
182 __set_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags);
193 ipa_interrupt_irq_disable(ipa);
200 struct ipa *ipa = dev_get_drvdata(dev);
205 __clear_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags);
211 ipa_interrupt_irq_enable(ipa);
217 u32 ipa_core_clock_rate(struct ipa *ipa)
219 return ipa->power ? (u32)clk_get_rate(ipa->power->core) : 0;
222 void ipa_power_suspend_handler(struct ipa *ipa, enum ipa_irq_id irq_id)
228 if (!__test_and_set_bit(IPA_POWER_FLAG_RESUMED, ipa->power->flags))
229 if (test_bit(IPA_POWER_FLAG_SYSTEM, ipa->power->flags))
230 pm_wakeup_dev_event(&ipa->pdev->dev, 0, true);
233 ipa_interrupt_suspend_clear_all(ipa->interrupt);
259 void ipa_power_modem_queue_stop(struct ipa *ipa)
261 struct ipa_power *power = ipa->power;
267 netif_stop_queue(ipa->modem_netdev);
279 void ipa_power_modem_queue_wake(struct ipa *ipa)
281 struct ipa_power *power = ipa->power;
288 netif_wake_queue(ipa->modem_netdev);
295 void ipa_power_modem_queue_active(struct ipa *ipa)
297 clear_bit(IPA_POWER_FLAG_STARTED, ipa->power->flags);
323 void ipa_power_retention(struct ipa *ipa, bool enable)
326 struct ipa_power *power = ipa->power;
338 int ipa_power_setup(struct ipa *ipa)
342 ipa_interrupt_enable(ipa, IPA_IRQ_TX_SUSPEND);
344 ret = device_init_wakeup(&ipa->pdev->dev, true);
346 ipa_interrupt_disable(ipa, IPA_IRQ_TX_SUSPEND);
351 void ipa_power_teardown(struct ipa *ipa)
353 (void)device_init_wakeup(&ipa->pdev->dev, false);
354 ipa_interrupt_disable(ipa, IPA_IRQ_TX_SUSPEND);