static void __ad7879_disable(struct ad7879 *ts) { u16 reg = (ts->cmd_crtl2 & ~AD7879_PM(-1)) | AD7879_PM(AD7879_PM_SHUTDOWN); disable_irq(ts->irq); if (del_timer_sync(&ts->timer)) ad7879_ts_event_release(ts); ad7879_write(ts, AD7879_REG_CTRL2, reg); }
static void ad7879_disable(struct ad7879 *ts) { mutex_lock(&ts->mutex); if (!ts->disabled) { ts->disabled = 1; disable_irq(ts->bus->irq); cancel_work_sync(&ts->work); if (del_timer_sync(&ts->timer)) ad7879_ts_event_release(ts); ad7879_write(ts->bus, AD7879_REG_CTRL2, AD7879_PM(AD7879_PM_SHUTDOWN)); } mutex_unlock(&ts->mutex); }
static void ad7879_timer(unsigned long handle) { struct ad7879 *ts = (void *)handle; ad7879_ts_event_release(ts); }