static void ts_timer_handler(unsigned long data) { spin_lock_irq(&(tsdev.lock)); if (tsdev.penStatus == PEN_DOWN) { start_ts_adc(); } spin_unlock_irq(&(tsdev.lock)); }
static void s3c2410_isr_tc(int irq, void *dev_id, struct pt_regs *reg) { #if 0 DPRINTK("Occured Touch Screen Interrupt\n"); DPRINTK("SUBSRCPND = 0x%08lx\n", SUBSRCPND); #endif spin_lock_irq(&(tsdev.lock)); if (tsdev.penStatus == PEN_UP) { start_ts_adc(); } else { tsdev.penStatus = PEN_UP; DPRINTK("PEN UP: x: %08d, y: %08d\n", x, y); wait_down_int(); tsEvent(); } spin_unlock_irq(&(tsdev.lock)); }
int ts_request_irq(u32 *irq, irqreturn_t (*handler)(int, void *), const char *devname, void *dev_id) { int ret; /* return the irq number */ *irq = IRQ_SADC; ts_disable_irq(); /* interrupt mode */ ret = request_irq(IRQ_SADC, handler, IRQF_DISABLED, devname, dev_id); if(ret) printk("failed irq \n"); start_ts_adc(); return ret; }