Lines Matching refs:interrupt
50 static void ipa_interrupt_suspend_clear_all(struct ipa_interrupt *interrupt) in ipa_interrupt_suspend_clear_all() argument
52 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_suspend_clear_all()
74 static void ipa_interrupt_process(struct ipa_interrupt *interrupt, u32 irq_id) in ipa_interrupt_process() argument
76 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_process()
100 ipa_interrupt_suspend_clear_all(interrupt); in ipa_interrupt_process()
112 struct ipa_interrupt *interrupt = dev_id; in ipa_isr_thread() local
113 struct ipa *ipa = interrupt->ipa; in ipa_isr_thread()
114 u32 enabled = interrupt->enabled; in ipa_isr_thread()
139 ipa_interrupt_process(interrupt, irq_id); in ipa_isr_thread()
161 iowrite32(ipa->interrupt->enabled, ipa->reg_virt + reg_offset(reg)); in ipa_interrupt_enabled_update()
168 ipa->interrupt->enabled |= BIT(ipa_irq); in ipa_interrupt_enable()
176 ipa->interrupt->enabled &= ~BIT(ipa_irq); in ipa_interrupt_disable()
182 disable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_disable()
187 enable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_enable()
191 static void ipa_interrupt_suspend_control(struct ipa_interrupt *interrupt, in ipa_interrupt_suspend_control() argument
194 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_suspend_control()
208 weight = bitmap_weight(interrupt->suspend_enabled, ipa->endpoint_count); in ipa_interrupt_suspend_control()
220 __change_bit(endpoint_id, interrupt->suspend_enabled); in ipa_interrupt_suspend_control()
230 ipa_interrupt_suspend_enable(struct ipa_interrupt *interrupt, u32 endpoint_id) in ipa_interrupt_suspend_enable() argument
232 ipa_interrupt_suspend_control(interrupt, endpoint_id, true); in ipa_interrupt_suspend_enable()
237 ipa_interrupt_suspend_disable(struct ipa_interrupt *interrupt, u32 endpoint_id) in ipa_interrupt_suspend_disable() argument
239 ipa_interrupt_suspend_control(interrupt, endpoint_id, false); in ipa_interrupt_suspend_disable()
243 void ipa_interrupt_simulate_suspend(struct ipa_interrupt *interrupt) in ipa_interrupt_simulate_suspend() argument
245 ipa_interrupt_process(interrupt, IPA_IRQ_TX_SUSPEND); in ipa_interrupt_simulate_suspend()
251 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_config() local
252 unsigned int irq = interrupt->irq; in ipa_interrupt_config()
257 interrupt->ipa = ipa; in ipa_interrupt_config()
260 interrupt->enabled = 0; in ipa_interrupt_config()
261 interrupt->suspend_enabled = bitmap_zalloc(ipa->endpoint_count, in ipa_interrupt_config()
263 if (!interrupt->suspend_enabled) { in ipa_interrupt_config()
273 "ipa", interrupt); in ipa_interrupt_config()
292 ipa->interrupt = interrupt; in ipa_interrupt_config()
299 free_irq(interrupt->irq, interrupt); in ipa_interrupt_config()
301 bitmap_free(interrupt->suspend_enabled); in ipa_interrupt_config()
303 kfree(interrupt); in ipa_interrupt_config()
311 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_deconfig() local
314 ipa->interrupt = NULL; in ipa_interrupt_deconfig()
318 free_irq(interrupt->irq, interrupt); in ipa_interrupt_deconfig()
319 bitmap_free(interrupt->suspend_enabled); in ipa_interrupt_deconfig()
325 struct ipa_interrupt *interrupt; in ipa_interrupt_init() local
332 interrupt = kzalloc_obj(*interrupt); in ipa_interrupt_init()
333 if (!interrupt) in ipa_interrupt_init()
335 interrupt->irq = irq; in ipa_interrupt_init()
337 return interrupt; in ipa_interrupt_init()
341 void ipa_interrupt_exit(struct ipa_interrupt *interrupt) in ipa_interrupt_exit() argument
343 kfree(interrupt); in ipa_interrupt_exit()