Lines Matching refs:desc

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