Lines Matching refs:ipa
118 static struct ipa_uc_mem_area *ipa_uc_shared(struct ipa *ipa) in ipa_uc_shared() argument
120 const struct ipa_mem *mem = ipa_mem_find(ipa, IPA_MEM_UC_SHARED); in ipa_uc_shared()
121 u32 offset = ipa->mem_offset + mem->offset; in ipa_uc_shared()
123 return ipa->mem_virt + offset; in ipa_uc_shared()
127 static void ipa_uc_event_handler(struct ipa *ipa, enum ipa_irq_id irq_id) in ipa_uc_event_handler() argument
129 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa); in ipa_uc_event_handler()
130 struct device *dev = &ipa->pdev->dev; in ipa_uc_event_handler()
141 static void ipa_uc_response_hdlr(struct ipa *ipa, enum ipa_irq_id irq_id) in ipa_uc_response_hdlr() argument
143 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa); in ipa_uc_response_hdlr()
144 struct device *dev = &ipa->pdev->dev; in ipa_uc_response_hdlr()
156 if (ipa->uc_powered) { in ipa_uc_response_hdlr()
157 ipa->uc_loaded = true; in ipa_uc_response_hdlr()
158 ipa_power_retention(ipa, true); in ipa_uc_response_hdlr()
161 ipa->uc_powered = false; in ipa_uc_response_hdlr()
174 void ipa_uc_config(struct ipa *ipa) in ipa_uc_config() argument
176 ipa->uc_powered = false; in ipa_uc_config()
177 ipa->uc_loaded = false; in ipa_uc_config()
178 ipa_interrupt_add(ipa->interrupt, IPA_IRQ_UC_0, ipa_uc_event_handler); in ipa_uc_config()
179 ipa_interrupt_add(ipa->interrupt, IPA_IRQ_UC_1, ipa_uc_response_hdlr); in ipa_uc_config()
183 void ipa_uc_deconfig(struct ipa *ipa) in ipa_uc_deconfig() argument
185 struct device *dev = &ipa->pdev->dev; in ipa_uc_deconfig()
187 ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_1); in ipa_uc_deconfig()
188 ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_0); in ipa_uc_deconfig()
189 if (ipa->uc_loaded) in ipa_uc_deconfig()
190 ipa_power_retention(ipa, false); in ipa_uc_deconfig()
192 if (!ipa->uc_powered) in ipa_uc_deconfig()
200 void ipa_uc_power(struct ipa *ipa) in ipa_uc_power() argument
211 dev = &ipa->pdev->dev; in ipa_uc_power()
217 ipa->uc_powered = true; in ipa_uc_power()
222 static void send_uc_command(struct ipa *ipa, u32 command, u32 command_param) in send_uc_command() argument
224 struct ipa_uc_mem_area *shared = ipa_uc_shared(ipa); in send_uc_command()
236 reg = ipa_reg(ipa, IPA_IRQ_UC); in send_uc_command()
239 iowrite32(val, ipa->reg_virt + ipa_reg_offset(reg)); in send_uc_command()
243 void ipa_uc_panic_notifier(struct ipa *ipa) in ipa_uc_panic_notifier() argument
245 if (!ipa->uc_loaded) in ipa_uc_panic_notifier()
248 send_uc_command(ipa, IPA_UC_COMMAND_ERR_FATAL, 0); in ipa_uc_panic_notifier()