wacom_sys.c (97f9afa4f9cc5e88e092e47ebd17ebf3f764a582) wacom_sys.c (b62f6465ce1fcbfe4459eb9fd67566ced2a27994)
1/*
2 * drivers/input/tablet/wacom_sys.c
3 *
4 * USB Wacom tablet support - system specific code
5 */
6
7/*
8 * This program is free software; you can redistribute it and/or modify

--- 1383 unchanged lines hidden (view full) ---

1392 input_free_device(wacom->wacom_wac.touch_input);
1393 }
1394 if (wacom->wacom_wac.pad_input) {
1395 if (wacom->wacom_wac.pad_registered)
1396 input_unregister_device(wacom->wacom_wac.pad_input);
1397 else
1398 input_free_device(wacom->wacom_wac.pad_input);
1399 }
1/*
2 * drivers/input/tablet/wacom_sys.c
3 *
4 * USB Wacom tablet support - system specific code
5 */
6
7/*
8 * This program is free software; you can redistribute it and/or modify

--- 1383 unchanged lines hidden (view full) ---

1392 input_free_device(wacom->wacom_wac.touch_input);
1393 }
1394 if (wacom->wacom_wac.pad_input) {
1395 if (wacom->wacom_wac.pad_registered)
1396 input_unregister_device(wacom->wacom_wac.pad_input);
1397 else
1398 input_free_device(wacom->wacom_wac.pad_input);
1399 }
1400 kobject_put(wacom->remote_dir);
1401 wacom->wacom_wac.pen_input = NULL;
1402 wacom->wacom_wac.touch_input = NULL;
1403 wacom->wacom_wac.pad_input = NULL;
1404 wacom->wacom_wac.pen_registered = false;
1405 wacom->wacom_wac.touch_registered = false;
1406 wacom->wacom_wac.pad_registered = false;
1407 wacom_destroy_leds(wacom);
1408}

--- 66 unchanged lines hidden (view full) ---

1475 error = input_register_device(pad_input_dev);
1476 if (error)
1477 goto fail_register_pad_input;
1478 wacom_wac->pad_registered = true;
1479
1480 error = wacom_initialize_leds(wacom);
1481 if (error)
1482 goto fail_leds;
1400 wacom->wacom_wac.pen_input = NULL;
1401 wacom->wacom_wac.touch_input = NULL;
1402 wacom->wacom_wac.pad_input = NULL;
1403 wacom->wacom_wac.pen_registered = false;
1404 wacom->wacom_wac.touch_registered = false;
1405 wacom->wacom_wac.pad_registered = false;
1406 wacom_destroy_leds(wacom);
1407}

--- 66 unchanged lines hidden (view full) ---

1474 error = input_register_device(pad_input_dev);
1475 if (error)
1476 goto fail_register_pad_input;
1477 wacom_wac->pad_registered = true;
1478
1479 error = wacom_initialize_leds(wacom);
1480 if (error)
1481 goto fail_leds;
1483
1484 error = wacom_initialize_remote(wacom);
1485 if (error)
1486 goto fail_remote;
1487 }
1488
1489 return 0;
1490
1482 }
1483
1484 return 0;
1485
1491fail_remote:
1492 wacom_destroy_leds(wacom);
1493fail_leds:
1494 input_unregister_device(pad_input_dev);
1495 pad_input_dev = NULL;
1496 wacom_wac->pad_registered = false;
1497fail_register_pad_input:
1498 if (touch_input_dev)
1499 input_unregister_device(touch_input_dev);
1500 wacom_wac->touch_input = NULL;

--- 180 unchanged lines hidden (view full) ---

1681 if (error)
1682 goto fail_battery;
1683 }
1684
1685 error = wacom_register_inputs(wacom);
1686 if (error)
1687 goto fail_register_inputs;
1688
1486fail_leds:
1487 input_unregister_device(pad_input_dev);
1488 pad_input_dev = NULL;
1489 wacom_wac->pad_registered = false;
1490fail_register_pad_input:
1491 if (touch_input_dev)
1492 input_unregister_device(touch_input_dev);
1493 wacom_wac->touch_input = NULL;

--- 180 unchanged lines hidden (view full) ---

1674 if (error)
1675 goto fail_battery;
1676 }
1677
1678 error = wacom_register_inputs(wacom);
1679 if (error)
1680 goto fail_register_inputs;
1681
1682 if (wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD) {
1683 error = wacom_initialize_remote(wacom);
1684 if (error)
1685 goto fail_remote;
1686 }
1687
1689 if (features->type == HID_GENERIC)
1690 connect_mask |= HID_CONNECT_DRIVER;
1691
1692 /* Regular HID work starts now */
1693 error = hid_hw_start(hdev, connect_mask);
1694 if (error) {
1695 hid_err(hdev, "hw start failed\n");
1696 goto fail_hw_start;
1697 }
1698
1699 if (!wireless) {
1700 /* Note that if query fails it is not a hard failure */
1701 wacom_query_tablet_data(hdev, features);
1702 }
1703
1704 /* touch only Bamboo doesn't support pen */
1705 if ((features->type == BAMBOO_TOUCH) &&
1706 (features->device_type & WACOM_DEVICETYPE_PEN)) {
1707 error = -ENODEV;
1688 if (features->type == HID_GENERIC)
1689 connect_mask |= HID_CONNECT_DRIVER;
1690
1691 /* Regular HID work starts now */
1692 error = hid_hw_start(hdev, connect_mask);
1693 if (error) {
1694 hid_err(hdev, "hw start failed\n");
1695 goto fail_hw_start;
1696 }
1697
1698 if (!wireless) {
1699 /* Note that if query fails it is not a hard failure */
1700 wacom_query_tablet_data(hdev, features);
1701 }
1702
1703 /* touch only Bamboo doesn't support pen */
1704 if ((features->type == BAMBOO_TOUCH) &&
1705 (features->device_type & WACOM_DEVICETYPE_PEN)) {
1706 error = -ENODEV;
1708 goto fail_hw_start;
1707 goto fail_quirks;
1709 }
1710
1711 /* pen only Bamboo neither support touch nor pad */
1712 if ((features->type == BAMBOO_PEN) &&
1713 ((features->device_type & WACOM_DEVICETYPE_TOUCH) ||
1714 (features->device_type & WACOM_DEVICETYPE_PAD))) {
1715 error = -ENODEV;
1708 }
1709
1710 /* pen only Bamboo neither support touch nor pad */
1711 if ((features->type == BAMBOO_PEN) &&
1712 ((features->device_type & WACOM_DEVICETYPE_TOUCH) ||
1713 (features->device_type & WACOM_DEVICETYPE_PAD))) {
1714 error = -ENODEV;
1716 goto fail_hw_start;
1715 goto fail_quirks;
1717 }
1718
1719 if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR)
1720 error = hid_hw_open(hdev);
1721
1722 if ((wacom_wac->features.type == INTUOSHT ||
1723 wacom_wac->features.type == INTUOSHT2) &&
1724 (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH)) {
1725 wacom_wac->shared->type = wacom_wac->features.type;
1726 wacom_wac->shared->touch_input = wacom_wac->touch_input;
1727 }
1728
1729 return 0;
1730
1716 }
1717
1718 if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR)
1719 error = hid_hw_open(hdev);
1720
1721 if ((wacom_wac->features.type == INTUOSHT ||
1722 wacom_wac->features.type == INTUOSHT2) &&
1723 (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH)) {
1724 wacom_wac->shared->type = wacom_wac->features.type;
1725 wacom_wac->shared->touch_input = wacom_wac->touch_input;
1726 }
1727
1728 return 0;
1729
1731fail_hw_start:
1730fail_quirks:
1732 hid_hw_stop(hdev);
1731 hid_hw_stop(hdev);
1733fail_register_inputs:
1732fail_hw_start:
1733 kobject_put(wacom->remote_dir);
1734fail_remote:
1734 wacom_clean_inputs(wacom);
1735 wacom_clean_inputs(wacom);
1736fail_register_inputs:
1735 wacom_destroy_battery(wacom);
1736fail_battery:
1737 wacom_remove_shared_data(wacom);
1738fail_shared_data:
1739fail_parsed:
1740fail_allocate_inputs:
1741 wacom_clean_inputs(wacom);
1742 return error;

--- 162 unchanged lines hidden (view full) ---

1905 struct wacom_features *features = &wacom_wac->features;
1906
1907 if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR)
1908 hid_hw_close(hdev);
1909
1910 hid_hw_stop(hdev);
1911
1912 cancel_work_sync(&wacom->work);
1737 wacom_destroy_battery(wacom);
1738fail_battery:
1739 wacom_remove_shared_data(wacom);
1740fail_shared_data:
1741fail_parsed:
1742fail_allocate_inputs:
1743 wacom_clean_inputs(wacom);
1744 return error;

--- 162 unchanged lines hidden (view full) ---

1907 struct wacom_features *features = &wacom_wac->features;
1908
1909 if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR)
1910 hid_hw_close(hdev);
1911
1912 hid_hw_stop(hdev);
1913
1914 cancel_work_sync(&wacom->work);
1915 kobject_put(wacom->remote_dir);
1913 wacom_clean_inputs(wacom);
1914 if (hdev->bus == BUS_BLUETOOTH)
1915 device_remove_file(&hdev->dev, &dev_attr_speed);
1916 wacom_destroy_battery(wacom);
1917 wacom_remove_shared_data(wacom);
1918
1919 hid_set_drvdata(hdev, NULL);
1920 kfree(wacom);

--- 43 unchanged lines hidden ---
1916 wacom_clean_inputs(wacom);
1917 if (hdev->bus == BUS_BLUETOOTH)
1918 device_remove_file(&hdev->dev, &dev_attr_speed);
1919 wacom_destroy_battery(wacom);
1920 wacom_remove_shared_data(wacom);
1921
1922 hid_set_drvdata(hdev, NULL);
1923 kfree(wacom);

--- 43 unchanged lines hidden ---