Lines Matching refs:desc
33 struct irq_desc *desc; in resend_irqs() local
37 desc = hlist_entry(irq_resend_list.first, struct irq_desc, in resend_irqs()
39 hlist_del_init(&desc->resend_node); in resend_irqs()
41 desc->handle_irq(desc); in resend_irqs()
50 static int irq_sw_resend(struct irq_desc *desc) in irq_sw_resend() argument
56 if (handle_enforce_irqctx(&desc->irq_data)) in irq_sw_resend()
64 if (irq_settings_is_nested_thread(desc)) { in irq_sw_resend()
69 if (!desc->parent_irq) in irq_sw_resend()
72 desc = irq_to_desc(desc->parent_irq); in irq_sw_resend()
73 if (!desc) in irq_sw_resend()
79 if (hlist_unhashed(&desc->resend_node)) in irq_sw_resend()
80 hlist_add_head(&desc->resend_node, &irq_resend_list); in irq_sw_resend()
86 void clear_irq_resend(struct irq_desc *desc) in clear_irq_resend() argument
89 hlist_del_init(&desc->resend_node); in clear_irq_resend()
93 void irq_resend_init(struct irq_desc *desc) in irq_resend_init() argument
95 INIT_HLIST_NODE(&desc->resend_node); in irq_resend_init()
98 void clear_irq_resend(struct irq_desc *desc) {} in clear_irq_resend() argument
99 void irq_resend_init(struct irq_desc *desc) {} in irq_resend_init() argument
101 static int irq_sw_resend(struct irq_desc *desc) in irq_sw_resend() argument
107 static int try_retrigger(struct irq_desc *desc) in try_retrigger() argument
109 if (desc->irq_data.chip->irq_retrigger) in try_retrigger()
110 return desc->irq_data.chip->irq_retrigger(&desc->irq_data); in try_retrigger()
113 return irq_chip_retrigger_hierarchy(&desc->irq_data); in try_retrigger()
124 int check_irq_resend(struct irq_desc *desc, bool inject) in check_irq_resend() argument
133 if (irq_settings_is_level(desc)) { in check_irq_resend()
134 desc->istate &= ~IRQS_PENDING; in check_irq_resend()
138 if (desc->istate & IRQS_REPLAY) in check_irq_resend()
141 if (!(desc->istate & IRQS_PENDING) && !inject) in check_irq_resend()
144 desc->istate &= ~IRQS_PENDING; in check_irq_resend()
146 if (!try_retrigger(desc)) in check_irq_resend()
147 err = irq_sw_resend(desc); in check_irq_resend()
151 desc->istate |= IRQS_REPLAY; in check_irq_resend()
175 struct irq_desc *desc; in irq_inject_interrupt() local
184 desc = irq_get_desc_buslock(irq, &flags, 0); in irq_inject_interrupt()
185 if (!desc) in irq_inject_interrupt()
193 if ((desc->istate & IRQS_NMI) || !irqd_is_activated(&desc->irq_data)) in irq_inject_interrupt()
196 err = check_irq_resend(desc, true); in irq_inject_interrupt()
198 irq_put_desc_busunlock(desc, flags); in irq_inject_interrupt()