} else { 
} else { 
static void wacom_pl_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 prox, pressure;	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_pl_irq: received unknown report #%d", data[0]);		goto exit;	}	prox = data[1] & 0x40;	input_regs(dev, regs);	if (prox) {		pressure = (signed char)((data[7] << 1) | ((data[4] >> 2) & 1));		if (wacom->features->pressure_max > 255)			pressure = (pressure << 1) | ((data[4] >> 6) & 1);		pressure += (wacom->features->pressure_max + 1) / 2;		/*		 * if going from out of proximity into proximity select between the eraser		 * and the pen based on the state of the stylus2 button, choose eraser if		 * pressed else choose pen. if not a proximity change from out to in, send		 * an out of proximity for previous tool then a in for new tool.		 */		if (!wacom->tool[0]) {			/* Going into proximity select tool */			wacom->tool[1] = (data[4] & 0x20)? BTN_TOOL_RUBBER : BTN_TOOL_PEN;		}		else {			/* was entered with stylus2 pressed */			if (wacom->tool[1] == BTN_TOOL_RUBBER && !(data[4] & 0x20) ) {				/* report out proximity for previous tool */				input_report_key(dev, wacom->tool[1], 0);				input_sync(dev);				wacom->tool[1] = BTN_TOOL_PEN;				goto exit;			}		}		if (wacom->tool[1] != BTN_TOOL_RUBBER) {			/* Unknown tool selected default to pen tool */			wacom->tool[1] = BTN_TOOL_PEN;		}		input_report_key(dev, wacom->tool[1], prox); /* report in proximity for tool */		input_report_abs(dev, ABS_X, data[3] | (data[2] << 7) | ((data[1] & 0x03) << 14));		input_report_abs(dev, ABS_Y, data[6] | (data[5] << 7) | ((data[4] & 0x03) << 14));		input_report_abs(dev, ABS_PRESSURE, pressure);		input_report_key(dev, BTN_TOUCH, data[4] & 0x08);		input_report_key(dev, BTN_STYLUS, data[4] & 0x10);		/* Only allow the stylus2 button to be reported for the pen tool. */		input_report_key(dev, BTN_STYLUS2, (wacom->tool[1] == BTN_TOOL_PEN) && (data[4] & 0x20));	}	else {		/* report proximity-out of a (valid) tool */		if (wacom->tool[1] != BTN_TOOL_RUBBER) {			/* Unknown tool selected default to pen tool */			wacom->tool[1] = BTN_TOOL_PEN;		}		input_report_key(dev, wacom->tool[1], prox);	}	wacom->tool[0] = prox; /* Save proximity state */	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/e5119885f00874453e837e3407014b73de2f4741/wacom.c/buggy/drivers/usb/input/wacom.c