static void itmtouch_irq(struct urb *urb, struct pt_regs *regs){	struct itmtouch_dev * itmtouch = urb->context;	unsigned char *data = urb->transfer_buffer;	struct input_dev *dev = &itmtouch->inputdev;	int retval;	switch (urb->status) {	case 0:		/* success */		break;	case -ETIMEDOUT:		/* this urb is timing out */		dbg("%s - urb timed out - was the device unplugged?",		    __FUNCTION__);		return;	case -ECONNRESET:	case -ENOENT:	case -ESHUTDOWN:		/* this urb is terminated, clean up */		dbg("%s - urb shutting down with status: %d",		    __FUNCTION__, urb->status);		return;	default:		dbg("%s - nonzero urb status received: %d",		    __FUNCTION__, urb->status);		goto exit;	}	input_regs(dev, regs);	/* if pressure has been released, then don't report X/Y */	if (data[7] & 0x20) {		input_report_abs(dev, ABS_X, (data[0] & 0x1F) << 7 | (data[3] & 0x7F));		input_report_abs(dev, ABS_Y, (data[1] & 0x1F) << 7 | (data[4] & 0x7F));	}		input_report_abs(dev, ABS_PRESSURE, (data[2] & 1) << 7 | (data[5] & 0x7F));	input_report_key(dev, BTN_TOUCH, ~data[7] & 0x20);	input_sync(dev);exit:	retval = usb_submit_urb (urb, GFP_ATOMIC);	if (retval)		printk(KERN_ERR "%s - usb_submit_urb failed with result: %d",				__FUNCTION__, retval);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05f091ab4c8c1f12f8dd38ee789489904fea327d/itmtouch.c/buggy/drivers/usb/input/itmtouch.c