struct input_dev *dev = &psmouse->dev; 
struct input_dev *dev = psmouse->dev; 
static psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse, struct pt_regs *regs){	struct input_dev *dev = &psmouse->dev;	unsigned char *packet = psmouse->packet;	if (psmouse->pktcnt < psmouse->pktsize)		return PSMOUSE_GOOD_DATA;/* * Full packet accumulated, process it */	input_regs(dev, regs);/* * Scroll wheel on IntelliMice, scroll buttons on NetMice */	if (psmouse->type == PSMOUSE_IMPS || psmouse->type == PSMOUSE_GENPS)		input_report_rel(dev, REL_WHEEL, -(signed char) packet[3]);/* * Scroll wheel and buttons on IntelliMouse Explorer */	if (psmouse->type == PSMOUSE_IMEX) {		input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7));		input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1);		input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1);	}/* * Extra buttons on Genius NewNet 3D */	if (psmouse->type == PSMOUSE_GENPS) {		input_report_key(dev, BTN_SIDE, (packet[0] >> 6) & 1);		input_report_key(dev, BTN_EXTRA, (packet[0] >> 7) & 1);	}/* * Extra button on ThinkingMouse */	if (psmouse->type == PSMOUSE_THINKPS) {		input_report_key(dev, BTN_EXTRA, (packet[0] >> 3) & 1);		/* Without this bit of weirdness moving up gives wildly high Y changes. */		packet[1] |= (packet[0] & 0x40) << 1;	}/* * Generic PS/2 Mouse */	input_report_key(dev, BTN_LEFT,    packet[0]       & 1);	input_report_key(dev, BTN_MIDDLE, (packet[0] >> 2) & 1);	input_report_key(dev, BTN_RIGHT,  (packet[0] >> 1) & 1);	input_report_rel(dev, REL_X, packet[1] ? (int) packet[1] - (int) ((packet[0] << 4) & 0x100) : 0);	input_report_rel(dev, REL_Y, packet[2] ? (int) ((packet[0] << 3) & 0x100) - (int) packet[2] : 0);	input_sync(dev);	return PSMOUSE_FULL_PACKET;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2e5b636bb5f8dacbb91d08544e2c41ebcad5dace/psmouse-base.c/buggy/drivers/input/mouse/psmouse-base.c