Lines Matching refs:ipa
11 #include "ipa.h"
117 static struct ipa_uc_mem_area *ipa_uc_shared(struct ipa *ipa)
119 u32 offset = ipa->mem_offset + ipa->mem[IPA_MEM_UC_SHARED].offset;
121 return ipa->mem_virt + offset;
125 static void ipa_uc_event_handler(struct ipa *ipa, enum ipa_irq_id irq_id)
127 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa);
128 struct device *dev = &ipa->pdev->dev;
138 static void ipa_uc_response_hdlr(struct ipa *ipa, enum ipa_irq_id irq_id)
140 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa);
152 ipa->uc_loaded = true;
153 ipa_clock_put(ipa);
156 dev_warn(&ipa->pdev->dev,
164 void ipa_uc_setup(struct ipa *ipa)
174 ipa_clock_get(ipa);
176 ipa->uc_loaded = false;
177 ipa_interrupt_add(ipa->interrupt, IPA_IRQ_UC_0, ipa_uc_event_handler);
178 ipa_interrupt_add(ipa->interrupt, IPA_IRQ_UC_1, ipa_uc_response_hdlr);
182 void ipa_uc_teardown(struct ipa *ipa)
184 ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_1);
185 ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_0);
186 if (!ipa->uc_loaded)
187 ipa_clock_put(ipa);
191 static void send_uc_command(struct ipa *ipa, u32 command, u32 command_param)
193 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa);
201 iowrite32(1, ipa->reg_virt + IPA_REG_IRQ_UC_OFFSET);
205 void ipa_uc_panic_notifier(struct ipa *ipa)
207 if (!ipa->uc_loaded)
210 send_uc_command(ipa, IPA_UC_COMMAND_ERR_FATAL, 0);