static irqreturn_t mc13xxx_rtc_reset_handler(int irq, void *dev) { struct mc13xxx_rtc *priv = dev; struct mc13xxx *mc13xxx = priv->mc13xxx; priv->valid = 0; mc13xxx_irq_mask(mc13xxx, irq); return IRQ_HANDLED; }
int mc13xxx_irq_free(struct mc13xxx *mc13xxx, int irq, void *dev) { int ret; BUG_ON(!mutex_is_locked(&mc13xxx->lock)); if (irq < 0 || irq >= MC13XXX_NUM_IRQ || !mc13xxx->irqhandler[irq] || mc13xxx->irqdata[irq] != dev) return -EINVAL; ret = mc13xxx_irq_mask(mc13xxx, irq); if (ret) return ret; mc13xxx->irqhandler[irq] = NULL; mc13xxx->irqdata[irq] = NULL; return 0; }