Lines Matching full:ipa

17 #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
94 dev = &smp2p->ipa->pdev->dev; in ipa_smp2p_notify()
97 /* Signal whether the IPA power is enabled */ in ipa_smp2p_notify()
110 /* Threaded IRQ handler for modem "ipa-clock-query" SMP2P interrupt */
130 ipa_uc_panic_notifier(smp2p->ipa); in ipa_smp2p_panic_notifier()
137 /* IPA panic handler needs to run before modem shuts down */ in ipa_smp2p_panic_notifier_register()
151 /* Threaded IRQ handler for modem "ipa-setup-ready" SMP2P interrupt */
159 if (smp2p->ipa->setup_complete) in ipa_smp2p_modem_setup_ready_isr()
163 dev = &smp2p->ipa->pdev->dev; in ipa_smp2p_modem_setup_ready_isr()
171 ret = ipa_setup(smp2p->ipa); in ipa_smp2p_modem_setup_ready_isr()
185 struct device *dev = &smp2p->ipa->pdev->dev; in ipa_smp2p_irq_init()
189 ret = platform_get_irq_byname(smp2p->ipa->pdev, name); in ipa_smp2p_irq_init()
209 static void ipa_smp2p_power_release(struct ipa *ipa) in ipa_smp2p_power_release() argument
211 struct device *dev = &ipa->pdev->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 */
222 int ipa_smp2p_init(struct ipa *ipa, bool modem_init) in ipa_smp2p_init() argument
225 struct device *dev = &ipa->pdev->dev; in ipa_smp2p_init()
232 valid_state = qcom_smem_state_get(dev, "ipa-clock-enabled-valid", in ipa_smp2p_init()
239 enabled_state = qcom_smem_state_get(dev, "ipa-clock-enabled", in ipa_smp2p_init()
250 smp2p->ipa = ipa; in ipa_smp2p_init()
262 ipa->smp2p = smp2p; in ipa_smp2p_init()
264 ret = ipa_smp2p_irq_init(smp2p, "ipa-clock-query", in ipa_smp2p_init()
276 ret = ipa_smp2p_irq_init(smp2p, "ipa-setup-ready", in ipa_smp2p_init()
290 ipa->smp2p = NULL; in ipa_smp2p_init()
297 void ipa_smp2p_exit(struct ipa *ipa) in ipa_smp2p_exit() argument
299 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_exit()
306 ipa_smp2p_power_release(ipa); in ipa_smp2p_exit()
307 ipa->smp2p = NULL; in ipa_smp2p_exit()
312 void ipa_smp2p_irq_disable_setup(struct ipa *ipa) in ipa_smp2p_irq_disable_setup() argument
314 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_irq_disable_setup()
330 void ipa_smp2p_notify_reset(struct ipa *ipa) in ipa_smp2p_notify_reset() argument
332 struct ipa_smp2p *smp2p = ipa->smp2p; in ipa_smp2p_notify_reset()
338 ipa_smp2p_power_release(ipa); in ipa_smp2p_notify_reset()