Lines Matching full:ipa
16 #include "ipa.h"
21 * DOC: IPA SMP2P communication with the modem
24 * the modem. The IPA driver uses this for two purposes: to enable the modem
26 * state of IPA power in the event of a crash.
30 * latter case, the modem uses an SMP2P interrupt to tell the AP IPA driver
33 * The modem is also able to inquire about the current state of IPA
38 * at that time records whether the AP has IPA power enabled.
45 * struct ipa_smp2p - IPA SMP2P information
46 * @ipa: IPA pointer
52 * @clock_query_irq: IPA interrupt triggered by modem for power query
53 * @setup_ready_irq: IPA interrupt triggered by modem to signal GSI ready
54 * @power_on: Whether IPA power is on
61 struct ipa *ipa; member
76 * ipa_smp2p_notify() - use SMP2P to tell modem about IPA power state
80 * the modem power query IPA interrupt) or whenever the AP is shutting down
82 * whether the IPA power is on, and the other indicating the first bit
93 smp2p->power_on = pm_runtime_get_if_active(smp2p->ipa->dev) > 0; in ipa_smp2p_notify()
95 /* Signal whether the IPA power is enabled */ in ipa_smp2p_notify()
108 /* Threaded IRQ handler for modem "ipa-clock-query" SMP2P interrupt */
128 ipa_uc_panic_notifier(smp2p->ipa); in ipa_smp2p_panic_notifier()
135 /* IPA panic handler needs to run before modem shuts down */ in ipa_smp2p_panic_notifier_register()
149 /* Threaded IRQ handler for modem "ipa-setup-ready" SMP2P interrupt */
153 struct ipa *ipa = smp2p->ipa; in ipa_smp2p_modem_setup_ready_isr() local
158 if (ipa->setup_complete) in ipa_smp2p_modem_setup_ready_isr()
162 dev = ipa->dev; in ipa_smp2p_modem_setup_ready_isr()
170 ret = ipa_setup(ipa); in ipa_smp2p_modem_setup_ready_isr()
209 static void ipa_smp2p_power_release(struct ipa *ipa) in ipa_smp2p_power_release() argument
211 struct device *dev = ipa->dev; in ipa_smp2p_power_release()
213 if (!ipa->smp2p->power_on) in ipa_smp2p_power_release()
218 ipa->smp2p->power_on = false; in ipa_smp2p_power_release()
221 /* Initialize the IPA SMP2P subsystem */
223 ipa_smp2p_init(struct ipa *ipa, struct platform_device *pdev, bool modem_init) in ipa_smp2p_init() argument
233 valid_state = qcom_smem_state_get(dev, "ipa-clock-enabled-valid", in ipa_smp2p_init()
240 enabled_state = qcom_smem_state_get(dev, "ipa-clock-enabled", in ipa_smp2p_init()
251 smp2p->ipa = ipa; in ipa_smp2p_init()
263 ipa->smp2p = smp2p; in ipa_smp2p_init()
265 ret = ipa_smp2p_irq_init(smp2p, pdev, "ipa-clock-query", in ipa_smp2p_init()
277 ret = ipa_smp2p_irq_init(smp2p, pdev, "ipa-setup-ready", in ipa_smp2p_init()
291 ipa->smp2p = NULL; in ipa_smp2p_init()
298 void ipa_smp2p_exit(struct ipa *ipa) in ipa_smp2p_exit() argument
300 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_exit()
307 ipa_smp2p_power_release(ipa); in ipa_smp2p_exit()
308 ipa->smp2p = NULL; in ipa_smp2p_exit()
313 void ipa_smp2p_irq_disable_setup(struct ipa *ipa) in ipa_smp2p_irq_disable_setup() argument
315 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_irq_disable_setup()
331 void ipa_smp2p_notify_reset(struct ipa *ipa) in ipa_smp2p_notify_reset() argument
333 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_notify_reset()
339 ipa_smp2p_power_release(ipa); in ipa_smp2p_notify_reset()