/* We have to disable the codec interrupt in the handler because it can take upto 1ms to clear the interrupt source. We schedule a task in a work queue to do the actual interaction with the chip. The interrupt is then enabled again in the slow handler when the source has been cleared.  */
static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id)
/* We have to disable the codec interrupt in the handler because it can take upto 1ms to clear the interrupt source. We schedule a task in a work queue to do the actual interaction with the chip. The interrupt is then enabled again in the slow handler when the source has been cleared.  */
static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id)
{
	struct wm97xx *wm = dev_id;
	if (!work_pending(&wm->pen_event_work)) {
		wm->mach_ops->irq_enable(wm, 0);
		queue_work(wm->ts_workq, &wm->pen_event_work);
	}
	return IRQ_HANDLED;
}