break; 
break; 
static irqreturn_t h3600ts_interrupt(struct serio *serio, unsigned char data,                                     unsigned int flags, struct pt_regs *regs){        struct h3600_dev *ts = serio_get_drvdata(serio);	/*         * We have a new frame coming in.         */	switch (state) {		case STATE_SOF:        		if (data == CHAR_SOF)                		state = STATE_ID;			break;        	case STATE_ID:			ts->event = (data & 0xf0) >> 4;			ts->len = (data & 0xf);			ts->idx = 0;			if (ts->event >= MAX_ID) {				state = STATE_SOF;                        	break;			}			ts->chksum = data;                	state = (ts->len > 0) ? STATE_DATA : STATE_EOF;			break;		case STATE_DATA:			ts->chksum += data;			ts->buf[ts->idx]= data;			if(++ts->idx == ts->len)                        	state = STATE_EOF;			break;		case STATE_EOF:                	state = STATE_SOF;                	if (data == CHAR_EOF || data == ts->chksum)				h3600ts_process_packet(ts, regs);                	break;        	default:                	printk("Error3\n");                	break;	}	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/de1b963a416232bf429550ee475d6b9a34b66309/h3600_ts_input.c/buggy/drivers/input/touchscreen/h3600_ts_input.c