if (data[1] & 0x80) { 
if (data[1] & 0x90) { x = le16_to_cpu(*(__le16 *) &data[2]); y = le16_to_cpu(*(__le16 *) &data[4]); 
static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs){	struct wacom *wacom = urb->context;	unsigned char *data = wacom->data;	struct input_dev *dev = &wacom->dev;	int x, y;	int retval;	switch (urb->status) {	case 0:		/* success */		break;	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;	}	if (data[0] != 2) {		dbg("wacom_graphire_irq: received unknown report #%d", data[0]);		goto exit;	}	x = le16_to_cpu(*(__le16 *) &data[2]);	y = le16_to_cpu(*(__le16 *) &data[4]);	input_regs(dev, regs);	if (data[1] & 0x10) { /* in prox */		switch ((data[1] >> 5) & 3) {			case 0:	/* Pen */				wacom->tool[0] = BTN_TOOL_PEN;				break;			case 1: /* Rubber */				wacom->tool[0] = BTN_TOOL_RUBBER;				break;			case 2: /* Mouse with wheel */				input_report_key(dev, BTN_MIDDLE, data[1] & 0x04);				input_report_rel(dev, REL_WHEEL, (signed char) data[6]);				/* fall through */			case 3: /* Mouse without wheel */				wacom->tool[0] = BTN_TOOL_MOUSE;				input_report_key(dev, BTN_LEFT, data[1] & 0x01);				input_report_key(dev, BTN_RIGHT, data[1] & 0x02);				input_report_abs(dev, ABS_DISTANCE, data[7]);				break;		}	}	if (data[1] & 0x80) {		input_report_abs(dev, ABS_X, x);		input_report_abs(dev, ABS_Y, y);	}	if (wacom->tool[0] != BTN_TOOL_MOUSE) {		input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6]));		input_report_key(dev, BTN_TOUCH, data[1] & 0x01);		input_report_key(dev, BTN_STYLUS, data[1] & 0x02);		input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);	}	input_report_key(dev, wacom->tool[0], data[1] & 0x10);	input_sync(dev); exit:	retval = usb_submit_urb (urb, GFP_ATOMIC);	if (retval)		err ("%s - usb_submit_urb failed with result %d",		     __FUNCTION__, retval);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dc1d97e466c2836adebe5618759bfb5b35b3bc0a/wacom.c/buggy/drivers/usb/input/wacom.c