static void ad7879_work(struct work_struct *work) { struct ad7879 *ts = container_of(work, struct ad7879, work); /* use keventd context to read the result registers */ ad7879_collect(ts); ad7879_report(ts); mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); }
static irqreturn_t ad7879_irq(int irq, void *handle) { struct ad7879 *ts = handle; ad7879_multi_read(ts, AD7879_REG_XPLUS, AD7879_NR_SENSE, ts->conversion_data); if (!ad7879_report(ts)) mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); return IRQ_HANDLED; }