Lines Matching refs:irq

24 int pcf50633_register_irq(struct pcf50633 *pcf, int irq,
27 if (irq < 0 || irq >= PCF50633_NUM_IRQ || !handler)
30 if (WARN_ON(pcf->irq_handler[irq].handler))
34 pcf->irq_handler[irq].handler = handler;
35 pcf->irq_handler[irq].data = data;
42 int pcf50633_free_irq(struct pcf50633 *pcf, int irq)
44 if (irq < 0 || irq >= PCF50633_NUM_IRQ)
48 pcf->irq_handler[irq].handler = NULL;
55 static int __pcf50633_irq_mask_set(struct pcf50633 *pcf, int irq, u8 mask)
60 idx = irq >> 3;
62 bit = 1 << (irq & 0x07);
78 int pcf50633_irq_mask(struct pcf50633 *pcf, int irq)
80 dev_dbg(pcf->dev, "Masking IRQ %d\n", irq);
82 return __pcf50633_irq_mask_set(pcf, irq, 1);
86 int pcf50633_irq_unmask(struct pcf50633 *pcf, int irq)
88 dev_dbg(pcf->dev, "Unmasking IRQ %d\n", irq);
90 return __pcf50633_irq_mask_set(pcf, irq, 0);
94 int pcf50633_irq_mask_get(struct pcf50633 *pcf, int irq)
98 reg = irq >> 3;
99 bits = 1 << (irq & 0x07);
105 static void pcf50633_irq_call_handler(struct pcf50633 *pcf, int irq)
107 if (pcf->irq_handler[irq].handler)
108 pcf->irq_handler[irq].handler(irq, pcf->irq_handler[irq].data);
114 static irqreturn_t pcf50633_irq(int irq, void *data)
237 disable_irq(pcf->irq);
244 dev_err(pcf->dev, "error saving irq masks\n");
248 /* Write wakeup irq masks */
255 dev_err(pcf->dev, "error writing wakeup irq masks\n");
276 enable_irq(pcf->irq);
283 int pcf50633_irq_init(struct pcf50633 *pcf, int irq)
287 pcf->irq = irq;
297 ret = request_threaded_irq(irq, NULL, pcf50633_irq,
304 if (enable_irq_wake(irq) < 0)
306 "in this hardware revision", irq);
313 free_irq(pcf->irq, pcf);