static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data, struct pt_regs *regs){	struct input_dev *dev = &xpad->dev;	input_regs(dev, regs);		/* left stick */	input_report_abs(dev, ABS_X, (__s16) (((__s16)data[13] << 8) | data[12]));	input_report_abs(dev, ABS_Y, (__s16) (((__s16)data[15] << 8) | data[14]));		/* right stick */	input_report_abs(dev, ABS_RX, (__s16) (((__s16)data[17] << 8) | data[16]));	input_report_abs(dev, ABS_RY, (__s16) (((__s16)data[19] << 8) | data[18]));		/* triggers left/right */	input_report_abs(dev, ABS_Z, data[10]);	input_report_abs(dev, ABS_RZ, data[11]);		/* digital pad */	input_report_abs(dev, ABS_HAT0X, !!(data[2] & 0x08) - !!(data[2] & 0x04));	input_report_abs(dev, ABS_HAT0Y, !!(data[2] & 0x02) - !!(data[2] & 0x01));		/* start/back buttons and stick press left/right */	input_report_key(dev, BTN_START, (data[2] & 0x10) >> 4);	input_report_key(dev, BTN_BACK, (data[2] & 0x20) >> 5);	input_report_key(dev, BTN_THUMBL, (data[2] & 0x40) >> 6);	input_report_key(dev, BTN_THUMBR, data[2] >> 7);		/* "analog" buttons A, B, X, Y */	input_report_key(dev, BTN_A, data[4]);	input_report_key(dev, BTN_B, data[5]);	input_report_key(dev, BTN_X, data[6]);	input_report_key(dev, BTN_Y, data[7]);		/* "analog" buttons black, white */	input_report_key(dev, BTN_C, data[8]);	input_report_key(dev, BTN_Z, data[9]);	input_sync(dev);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05f091ab4c8c1f12f8dd38ee789489904fea327d/xpad.c/buggy/drivers/usb/input/xpad.c