Lines Matching refs:aiptek
288 struct aiptek { struct
414 struct aiptek *aiptek = urb->context; in aiptek_irq() local
415 unsigned char *data = aiptek->data; in aiptek_irq()
416 struct input_dev *inputdev = aiptek->inputdev; in aiptek_irq()
417 struct usb_interface *intf = aiptek->intf; in aiptek_irq()
442 if (aiptek->inDelay == 1 && time_after(aiptek->endDelay, jiffies)) { in aiptek_irq()
446 aiptek->inDelay = 0; in aiptek_irq()
447 aiptek->eventCount++; in aiptek_irq()
454 if (aiptek->curSetting.coordinateMode == in aiptek_irq()
456 aiptek->diagnostic = in aiptek_irq()
471 left = (data[1] & aiptek->curSetting.mouseButtonLeft >> 2) != 0 ? 1 : 0; in aiptek_irq()
472 right = (data[1] & aiptek->curSetting.mouseButtonRight >> 2) != 0 ? 1 : 0; in aiptek_irq()
473 middle = (data[1] & aiptek->curSetting.mouseButtonMiddle >> 2) != 0 ? 1 : 0; in aiptek_irq()
487 if (aiptek->curSetting.wheel != AIPTEK_WHEEL_DISABLE) { in aiptek_irq()
489 aiptek->curSetting.wheel); in aiptek_irq()
490 aiptek->curSetting.wheel = AIPTEK_WHEEL_DISABLE; in aiptek_irq()
492 if (aiptek->lastMacro != -1) { in aiptek_irq()
494 macroKeyEvents[aiptek->lastMacro], 0); in aiptek_irq()
495 aiptek->lastMacro = -1; in aiptek_irq()
504 if (aiptek->curSetting.coordinateMode == AIPTEK_COORDINATE_RELATIVE_MODE) { in aiptek_irq()
505 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_SENDING_ABSOLUTE_IN_RELATIVE; in aiptek_irq()
507 (aiptek->curSetting.pointerMode)) { in aiptek_irq()
508 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED; in aiptek_irq()
522 bs = (data[5] & aiptek->curSetting.stylusButtonLower) != 0 ? 1 : 0; in aiptek_irq()
523 pck = (data[5] & aiptek->curSetting.stylusButtonUpper) != 0 ? 1 : 0; in aiptek_irq()
533 if (aiptek->previousToolMode != in aiptek_irq()
534 aiptek->curSetting.toolMode) { in aiptek_irq()
536 aiptek->previousToolMode, 0); in aiptek_irq()
538 aiptek->curSetting.toolMode, in aiptek_irq()
540 aiptek->previousToolMode = in aiptek_irq()
541 aiptek->curSetting.toolMode; in aiptek_irq()
553 if (aiptek->curSetting.xTilt != in aiptek_irq()
557 aiptek->curSetting.xTilt); in aiptek_irq()
559 if (aiptek->curSetting.yTilt != AIPTEK_TILT_DISABLE) { in aiptek_irq()
562 aiptek->curSetting.yTilt); in aiptek_irq()
568 if (aiptek->curSetting.wheel != in aiptek_irq()
572 aiptek->curSetting.wheel); in aiptek_irq()
573 aiptek->curSetting.wheel = AIPTEK_WHEEL_DISABLE; in aiptek_irq()
577 if (aiptek->lastMacro != -1) { in aiptek_irq()
579 macroKeyEvents[aiptek->lastMacro], 0); in aiptek_irq()
580 aiptek->lastMacro = -1; in aiptek_irq()
589 if (aiptek->curSetting.coordinateMode == AIPTEK_COORDINATE_RELATIVE_MODE) { in aiptek_irq()
590 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_SENDING_ABSOLUTE_IN_RELATIVE; in aiptek_irq()
592 (aiptek->curSetting.pointerMode)) { in aiptek_irq()
593 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED; in aiptek_irq()
602 left = (data[5] & aiptek->curSetting.mouseButtonLeft) != 0 ? 1 : 0; in aiptek_irq()
603 right = (data[5] & aiptek->curSetting.mouseButtonRight) != 0 ? 1 : 0; in aiptek_irq()
604 middle = (data[5] & aiptek->curSetting.mouseButtonMiddle) != 0 ? 1 : 0; in aiptek_irq()
610 if (aiptek->previousToolMode != in aiptek_irq()
611 aiptek->curSetting.toolMode) { in aiptek_irq()
613 aiptek->previousToolMode, 0); in aiptek_irq()
615 aiptek->curSetting.toolMode, in aiptek_irq()
617 aiptek->previousToolMode = in aiptek_irq()
618 aiptek->curSetting.toolMode; in aiptek_irq()
632 if (aiptek->curSetting.wheel != AIPTEK_WHEEL_DISABLE) { in aiptek_irq()
635 aiptek->curSetting.wheel); in aiptek_irq()
636 aiptek->curSetting.wheel = AIPTEK_WHEEL_DISABLE; in aiptek_irq()
640 if (aiptek->lastMacro != -1) { in aiptek_irq()
642 macroKeyEvents[aiptek->lastMacro], 0); in aiptek_irq()
643 aiptek->lastMacro = -1; in aiptek_irq()
657 bs = (data[1] & aiptek->curSetting.stylusButtonLower) != 0 ? 1 : 0; in aiptek_irq()
658 pck = (data[1] & aiptek->curSetting.stylusButtonUpper) != 0 ? 1 : 0; in aiptek_irq()
667 if (aiptek->previousToolMode != in aiptek_irq()
668 aiptek->curSetting.toolMode) { in aiptek_irq()
670 aiptek->previousToolMode, 0); in aiptek_irq()
672 aiptek->curSetting.toolMode, in aiptek_irq()
674 aiptek->previousToolMode = in aiptek_irq()
675 aiptek->curSetting.toolMode; in aiptek_irq()
679 if (aiptek->lastMacro != -1 && aiptek->lastMacro != macro) { in aiptek_irq()
680 input_report_key(inputdev, macroKeyEvents[aiptek->lastMacro], 0); in aiptek_irq()
681 aiptek->lastMacro = -1; in aiptek_irq()
684 if (macro != -1 && macro != aiptek->lastMacro) { in aiptek_irq()
686 aiptek->lastMacro = macro; in aiptek_irq()
699 left = (data[1]& aiptek->curSetting.mouseButtonLeft) != 0 ? 1 : 0; in aiptek_irq()
700 right = (data[1] & aiptek->curSetting.mouseButtonRight) != 0 ? 1 : 0; in aiptek_irq()
701 middle = (data[1] & aiptek->curSetting.mouseButtonMiddle) != 0 ? 1 : 0; in aiptek_irq()
708 if (aiptek->previousToolMode != in aiptek_irq()
709 aiptek->curSetting.toolMode) { in aiptek_irq()
711 aiptek->previousToolMode, 0); in aiptek_irq()
713 aiptek->curSetting.toolMode, 1); in aiptek_irq()
714 aiptek->previousToolMode = aiptek->curSetting.toolMode; in aiptek_irq()
718 if (aiptek->lastMacro != -1 && aiptek->lastMacro != macro) { in aiptek_irq()
719 input_report_key(inputdev, macroKeyEvents[aiptek->lastMacro], 0); in aiptek_irq()
720 aiptek->lastMacro = -1; in aiptek_irq()
723 if (macro != -1 && macro != aiptek->lastMacro) { in aiptek_irq()
725 aiptek->lastMacro = macro; in aiptek_irq()
752 if (aiptek->previousToolMode != in aiptek_irq()
753 aiptek->curSetting.toolMode) { in aiptek_irq()
755 aiptek->previousToolMode, 0); in aiptek_irq()
757 aiptek->curSetting.toolMode, in aiptek_irq()
759 aiptek->previousToolMode = in aiptek_irq()
760 aiptek->curSetting.toolMode; in aiptek_irq()
783 if (aiptek->previousJitterable != jitterable && in aiptek_irq()
784 aiptek->curSetting.jitterDelay != 0 && aiptek->inDelay != 1) { in aiptek_irq()
785 aiptek->endDelay = jiffies + in aiptek_irq()
786 ((aiptek->curSetting.jitterDelay * HZ) / 1000); in aiptek_irq()
787 aiptek->inDelay = 1; in aiptek_irq()
789 aiptek->previousJitterable = jitterable; in aiptek_irq()
827 struct aiptek *aiptek = input_get_drvdata(inputdev); in aiptek_open() local
829 aiptek->urb->dev = interface_to_usbdev(aiptek->intf); in aiptek_open()
830 if (usb_submit_urb(aiptek->urb, GFP_KERNEL) != 0) in aiptek_open()
841 struct aiptek *aiptek = input_get_drvdata(inputdev); in aiptek_close() local
843 usb_kill_urb(aiptek->urb); in aiptek_close()
851 aiptek_set_report(struct aiptek *aiptek, in aiptek_set_report() argument
855 struct usb_device *udev = interface_to_usbdev(aiptek->intf); in aiptek_set_report()
862 aiptek->ifnum, buffer, size, 5000); in aiptek_set_report()
866 aiptek_get_report(struct aiptek *aiptek, in aiptek_get_report() argument
870 struct usb_device *udev = interface_to_usbdev(aiptek->intf); in aiptek_get_report()
877 aiptek->ifnum, buffer, size, 5000); in aiptek_get_report()
884 aiptek_command(struct aiptek *aiptek, unsigned char command, unsigned char data) in aiptek_command() argument
899 aiptek_set_report(aiptek, 3, 2, buf, sizeof_buf)) != sizeof_buf) { in aiptek_command()
900 dev_dbg(&aiptek->intf->dev, in aiptek_command()
914 aiptek_query(struct aiptek *aiptek, unsigned char command, unsigned char data) in aiptek_query() argument
928 if (aiptek_command(aiptek, command, data) != 0) { in aiptek_query()
932 msleep(aiptek->curSetting.programmableDelay); in aiptek_query()
934 if (aiptek_get_report(aiptek, 3, 2, buf, sizeof_buf) != sizeof_buf) { in aiptek_query()
935 dev_dbg(&aiptek->intf->dev, in aiptek_query()
950 static int aiptek_program_tablet(struct aiptek *aiptek) in aiptek_program_tablet() argument
954 if ((ret = aiptek_command(aiptek, 0x18, 0x04)) < 0) in aiptek_program_tablet()
958 if ((ret = aiptek_query(aiptek, 0x02, 0x00)) < 0) in aiptek_program_tablet()
960 aiptek->features.modelCode = ret & 0xff; in aiptek_program_tablet()
963 if ((ret = aiptek_query(aiptek, 0x03, 0x00)) < 0) in aiptek_program_tablet()
965 aiptek->features.odmCode = ret; in aiptek_program_tablet()
968 if ((ret = aiptek_query(aiptek, 0x04, 0x00)) < 0) in aiptek_program_tablet()
970 aiptek->features.firmwareCode = ret; in aiptek_program_tablet()
973 if ((ret = aiptek_query(aiptek, 0x01, 0x00)) < 0) in aiptek_program_tablet()
975 input_set_abs_params(aiptek->inputdev, ABS_X, 0, ret - 1, 0, 0); in aiptek_program_tablet()
978 if ((ret = aiptek_query(aiptek, 0x01, 0x01)) < 0) in aiptek_program_tablet()
980 input_set_abs_params(aiptek->inputdev, ABS_Y, 0, ret - 1, 0, 0); in aiptek_program_tablet()
983 if ((ret = aiptek_query(aiptek, 0x08, 0x00)) < 0) in aiptek_program_tablet()
985 input_set_abs_params(aiptek->inputdev, ABS_PRESSURE, 0, ret - 1, 0, 0); in aiptek_program_tablet()
990 if (aiptek->curSetting.coordinateMode == in aiptek_program_tablet()
993 if ((ret = aiptek_command(aiptek, 0x10, 0x01)) < 0) { in aiptek_program_tablet()
998 if ((ret = aiptek_command(aiptek, 0x10, 0x00)) < 0) { in aiptek_program_tablet()
1004 if ((ret = aiptek_command(aiptek, 0x11, 0x02)) < 0) in aiptek_program_tablet()
1008 if ((ret = aiptek_command(aiptek, 0x17, 0x00)) < 0) in aiptek_program_tablet()
1013 if ((ret = aiptek_command(aiptek, 0x12, 0xff)) < 0) in aiptek_program_tablet()
1018 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_NA; in aiptek_program_tablet()
1019 aiptek->eventCount = 0; in aiptek_program_tablet()
1036 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletSize() local
1039 input_abs_get_max(aiptek->inputdev, ABS_X) + 1, in show_tabletSize()
1040 input_abs_get_max(aiptek->inputdev, ABS_Y) + 1); in show_tabletSize()
1064 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletPointerMode() local
1067 aiptek->curSetting.pointerMode)); in show_tabletPointerMode()
1073 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletPointerMode() local
1079 aiptek->newSetting.pointerMode = new_mode; in store_tabletPointerMode()
1100 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletCoordinateMode() local
1103 aiptek->curSetting.coordinateMode)); in show_tabletCoordinateMode()
1109 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletCoordinateMode() local
1115 aiptek->newSetting.coordinateMode = new_mode; in store_tabletCoordinateMode()
1141 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletToolMode() local
1144 aiptek->curSetting.toolMode)); in show_tabletToolMode()
1150 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletToolMode() local
1156 aiptek->newSetting.toolMode = new_mode; in store_tabletToolMode()
1170 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletXtilt() local
1172 if (aiptek->curSetting.xTilt == AIPTEK_TILT_DISABLE) { in show_tabletXtilt()
1175 return sysfs_emit(buf, "%d\n", aiptek->curSetting.xTilt); in show_tabletXtilt()
1182 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletXtilt() local
1191 aiptek->newSetting.xTilt = AIPTEK_TILT_DISABLE; in store_tabletXtilt()
1196 aiptek->newSetting.xTilt = x; in store_tabletXtilt()
1211 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletYtilt() local
1213 if (aiptek->curSetting.yTilt == AIPTEK_TILT_DISABLE) { in show_tabletYtilt()
1216 return sysfs_emit(buf, "%d\n", aiptek->curSetting.yTilt); in show_tabletYtilt()
1223 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletYtilt() local
1232 aiptek->newSetting.yTilt = AIPTEK_TILT_DISABLE; in store_tabletYtilt()
1237 aiptek->newSetting.yTilt = y; in store_tabletYtilt()
1252 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletJitterDelay() local
1254 return sysfs_emit(buf, "%d\n", aiptek->curSetting.jitterDelay); in show_tabletJitterDelay()
1260 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletJitterDelay() local
1267 aiptek->newSetting.jitterDelay = j; in store_tabletJitterDelay()
1281 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletProgrammableDelay() local
1283 return sysfs_emit(buf, "%d\n", aiptek->curSetting.programmableDelay); in show_tabletProgrammableDelay()
1289 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletProgrammableDelay() local
1296 aiptek->newSetting.programmableDelay = d; in store_tabletProgrammableDelay()
1310 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletEventsReceived() local
1312 return sysfs_emit(buf, "%ld\n", aiptek->eventCount); in show_tabletEventsReceived()
1323 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletDiagnosticMessage() local
1326 switch (aiptek->diagnostic) { in show_tabletDiagnosticMessage()
1340 if (aiptek->curSetting.pointerMode == in show_tabletDiagnosticMessage()
1369 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletStylusUpper() local
1372 aiptek->curSetting.stylusButtonUpper)); in show_tabletStylusUpper()
1378 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletStylusUpper() local
1384 aiptek->newSetting.stylusButtonUpper = new_button; in store_tabletStylusUpper()
1399 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletStylusLower() local
1402 aiptek->curSetting.stylusButtonLower)); in show_tabletStylusLower()
1408 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletStylusLower() local
1414 aiptek->newSetting.stylusButtonLower = new_button; in store_tabletStylusLower()
1436 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletMouseLeft() local
1439 aiptek->curSetting.mouseButtonLeft)); in show_tabletMouseLeft()
1445 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletMouseLeft() local
1451 aiptek->newSetting.mouseButtonLeft = new_button; in store_tabletMouseLeft()
1465 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletMouseMiddle() local
1468 aiptek->curSetting.mouseButtonMiddle)); in show_tabletMouseMiddle()
1474 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletMouseMiddle() local
1480 aiptek->newSetting.mouseButtonMiddle = new_button; in store_tabletMouseMiddle()
1494 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletMouseRight() local
1497 aiptek->curSetting.mouseButtonRight)); in show_tabletMouseRight()
1503 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletMouseRight() local
1509 aiptek->newSetting.mouseButtonRight = new_button; in store_tabletMouseRight()
1523 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletWheel() local
1525 if (aiptek->curSetting.wheel == AIPTEK_WHEEL_DISABLE) { in show_tabletWheel()
1528 return sysfs_emit(buf, "%d\n", aiptek->curSetting.wheel); in show_tabletWheel()
1535 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletWheel() local
1542 aiptek->newSetting.wheel = w; in store_tabletWheel()
1564 struct aiptek *aiptek = dev_get_drvdata(dev); in store_tabletExecute() local
1569 memcpy(&aiptek->curSetting, &aiptek->newSetting, in store_tabletExecute()
1572 if (aiptek_program_tablet(aiptek) < 0) in store_tabletExecute()
1587 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletODMCode() local
1589 return sysfs_emit(buf, "0x%04x\n", aiptek->features.odmCode); in show_tabletODMCode()
1600 struct aiptek *aiptek = dev_get_drvdata(dev); in show_tabletModelCode() local
1602 return sysfs_emit(buf, "0x%04x\n", aiptek->features.modelCode); in show_tabletModelCode()
1613 struct aiptek *aiptek = dev_get_drvdata(dev); in show_firmwareCode() local
1615 return sysfs_emit(buf, "%04x\n", aiptek->features.firmwareCode); in show_firmwareCode()
1655 struct aiptek *aiptek; in aiptek_probe() local
1676 aiptek = kzalloc(sizeof(*aiptek), GFP_KERNEL); in aiptek_probe()
1678 if (!aiptek || !inputdev) { in aiptek_probe()
1684 aiptek->data = usb_alloc_coherent(usbdev, AIPTEK_PACKET_LENGTH, in aiptek_probe()
1685 GFP_KERNEL, &aiptek->data_dma); in aiptek_probe()
1686 if (!aiptek->data) { in aiptek_probe()
1691 aiptek->urb = usb_alloc_urb(0, GFP_KERNEL); in aiptek_probe()
1692 if (!aiptek->urb) { in aiptek_probe()
1697 aiptek->inputdev = inputdev; in aiptek_probe()
1698 aiptek->intf = intf; in aiptek_probe()
1699 aiptek->ifnum = intf->cur_altsetting->desc.bInterfaceNumber; in aiptek_probe()
1700 aiptek->inDelay = 0; in aiptek_probe()
1701 aiptek->endDelay = 0; in aiptek_probe()
1702 aiptek->previousJitterable = 0; in aiptek_probe()
1703 aiptek->lastMacro = -1; in aiptek_probe()
1711 aiptek->curSetting.pointerMode = AIPTEK_POINTER_EITHER_MODE; in aiptek_probe()
1712 aiptek->curSetting.coordinateMode = AIPTEK_COORDINATE_ABSOLUTE_MODE; in aiptek_probe()
1713 aiptek->curSetting.toolMode = AIPTEK_TOOL_BUTTON_PEN_MODE; in aiptek_probe()
1714 aiptek->curSetting.xTilt = AIPTEK_TILT_DISABLE; in aiptek_probe()
1715 aiptek->curSetting.yTilt = AIPTEK_TILT_DISABLE; in aiptek_probe()
1716 aiptek->curSetting.mouseButtonLeft = AIPTEK_MOUSE_LEFT_BUTTON; in aiptek_probe()
1717 aiptek->curSetting.mouseButtonMiddle = AIPTEK_MOUSE_MIDDLE_BUTTON; in aiptek_probe()
1718 aiptek->curSetting.mouseButtonRight = AIPTEK_MOUSE_RIGHT_BUTTON; in aiptek_probe()
1719 aiptek->curSetting.stylusButtonUpper = AIPTEK_STYLUS_UPPER_BUTTON; in aiptek_probe()
1720 aiptek->curSetting.stylusButtonLower = AIPTEK_STYLUS_LOWER_BUTTON; in aiptek_probe()
1721 aiptek->curSetting.jitterDelay = jitterDelay; in aiptek_probe()
1722 aiptek->curSetting.programmableDelay = programmableDelay; in aiptek_probe()
1726 aiptek->newSetting = aiptek->curSetting; in aiptek_probe()
1735 usb_make_path(usbdev, aiptek->features.usbPath, in aiptek_probe()
1736 sizeof(aiptek->features.usbPath)); in aiptek_probe()
1737 strlcat(aiptek->features.usbPath, "/input0", in aiptek_probe()
1738 sizeof(aiptek->features.usbPath)); in aiptek_probe()
1744 inputdev->phys = aiptek->features.usbPath; in aiptek_probe()
1748 input_set_drvdata(inputdev, aiptek); in aiptek_probe()
1798 usb_fill_int_urb(aiptek->urb, in aiptek_probe()
1802 aiptek->data, 8, aiptek_irq, aiptek, in aiptek_probe()
1805 aiptek->urb->transfer_dma = aiptek->data_dma; in aiptek_probe()
1806 aiptek->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in aiptek_probe()
1820 aiptek->curSetting.programmableDelay = speeds[i]; in aiptek_probe()
1821 (void)aiptek_program_tablet(aiptek); in aiptek_probe()
1822 if (input_abs_get_max(aiptek->inputdev, ABS_X) > 0) { in aiptek_probe()
1825 aiptek->curSetting.programmableDelay); in aiptek_probe()
1841 usb_set_intfdata(intf, aiptek); in aiptek_probe()
1845 err = input_register_device(aiptek->inputdev); in aiptek_probe()
1853 fail3: usb_free_urb(aiptek->urb); in aiptek_probe()
1854 fail2: usb_free_coherent(usbdev, AIPTEK_PACKET_LENGTH, aiptek->data, in aiptek_probe()
1855 aiptek->data_dma); in aiptek_probe()
1858 kfree(aiptek); in aiptek_probe()
1867 struct aiptek *aiptek = usb_get_intfdata(intf); in aiptek_disconnect() local
1872 if (aiptek != NULL) { in aiptek_disconnect()
1875 usb_kill_urb(aiptek->urb); in aiptek_disconnect()
1876 input_unregister_device(aiptek->inputdev); in aiptek_disconnect()
1877 usb_free_urb(aiptek->urb); in aiptek_disconnect()
1880 aiptek->data, aiptek->data_dma); in aiptek_disconnect()
1881 kfree(aiptek); in aiptek_disconnect()