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()
162 iowrite32(ipa->interrupt->enabled, ipa->reg_virt + reg_offset(reg)); in ipa_interrupt_enabled_update()
169 ipa->interrupt->enabled |= BIT(ipa_irq); in ipa_interrupt_enable()
177 ipa->interrupt->enabled &= ~BIT(ipa_irq); in ipa_interrupt_disable()
183 disable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_disable()
188 enable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_enable()
192 static void ipa_interrupt_suspend_control(struct ipa_interrupt *interrupt, in ipa_interrupt_suspend_control() argument
195 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_suspend_control()
209 weight = bitmap_weight(interrupt->suspend_enabled, ipa->endpoint_count); in ipa_interrupt_suspend_control()
221 __change_bit(endpoint_id, interrupt->suspend_enabled); in ipa_interrupt_suspend_control()
231 ipa_interrupt_suspend_enable(struct ipa_interrupt *interrupt, u32 endpoint_id) in ipa_interrupt_suspend_enable() argument
233 ipa_interrupt_suspend_control(interrupt, endpoint_id, true); in ipa_interrupt_suspend_enable()
238 ipa_interrupt_suspend_disable(struct ipa_interrupt *interrupt, u32 endpoint_id) in ipa_interrupt_suspend_disable() argument
240 ipa_interrupt_suspend_control(interrupt, endpoint_id, false); in ipa_interrupt_suspend_disable()
244 void ipa_interrupt_simulate_suspend(struct ipa_interrupt *interrupt) in ipa_interrupt_simulate_suspend() argument
246 ipa_interrupt_process(interrupt, IPA_IRQ_TX_SUSPEND); in ipa_interrupt_simulate_suspend()
252 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_config() local
253 unsigned int irq = interrupt->irq; in ipa_interrupt_config()
258 interrupt->ipa = ipa; in ipa_interrupt_config()
261 interrupt->enabled = 0; in ipa_interrupt_config()
262 interrupt->suspend_enabled = bitmap_zalloc(ipa->endpoint_count, in ipa_interrupt_config()
264 if (!interrupt->suspend_enabled) { in ipa_interrupt_config()
274 "ipa", interrupt); in ipa_interrupt_config()
293 ipa->interrupt = interrupt; in ipa_interrupt_config()
300 free_irq(interrupt->irq, interrupt); in ipa_interrupt_config()
302 bitmap_free(interrupt->suspend_enabled); in ipa_interrupt_config()
304 kfree(interrupt); in ipa_interrupt_config()
312 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_deconfig() local
315 ipa->interrupt = NULL; in ipa_interrupt_deconfig()
319 free_irq(interrupt->irq, interrupt); in ipa_interrupt_deconfig()
320 bitmap_free(interrupt->suspend_enabled); in ipa_interrupt_deconfig()
326 struct ipa_interrupt *interrupt; in ipa_interrupt_init() local
333 interrupt = kzalloc(sizeof(*interrupt), GFP_KERNEL); in ipa_interrupt_init()
334 if (!interrupt) in ipa_interrupt_init()
336 interrupt->irq = irq; in ipa_interrupt_init()
338 return interrupt; in ipa_interrupt_init()
342 void ipa_interrupt_exit(struct ipa_interrupt *interrupt) in ipa_interrupt_exit() argument
344 kfree(interrupt); in ipa_interrupt_exit()