wacom 113 drivers/hid/wacom.h struct wacom; wacom 118 drivers/hid/wacom.h struct wacom *wacom; wacom 134 drivers/hid/wacom.h struct wacom *wacom; wacom 187 drivers/hid/wacom.h struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 191 drivers/hid/wacom.h schedule_work(&wacom->wireless_work); wacom 194 drivers/hid/wacom.h schedule_work(&wacom->battery_work); wacom 197 drivers/hid/wacom.h schedule_work(&wacom->remote_work); wacom 200 drivers/hid/wacom.h schedule_work(&wacom->mode_change_work); wacom 223 drivers/hid/wacom.h void wacom_setup_device_quirks(struct wacom *wacom); wacom 237 drivers/hid/wacom.h struct wacom_led *wacom_led_find(struct wacom *wacom, unsigned int group, wacom 239 drivers/hid/wacom.h struct wacom_led *wacom_led_next(struct wacom *wacom, struct wacom_led *cur); wacom 241 drivers/hid/wacom.h int wacom_initialize_leds(struct wacom *wacom); wacom 93 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 94 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 161 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 169 drivers/hid/wacom_sys.c memcpy(wacom->wacom_wac.data, raw_data, size); wacom 171 drivers/hid/wacom_sys.c wacom_wac_irq(&wacom->wacom_wac, size); wacom 178 drivers/hid/wacom_sys.c struct wacom *wacom = input_get_drvdata(dev); wacom 180 drivers/hid/wacom_sys.c return hid_hw_open(wacom->hdev); wacom 185 drivers/hid/wacom_sys.c struct wacom *wacom = input_get_drvdata(dev); wacom 191 drivers/hid/wacom_sys.c if (wacom->hdev) wacom 192 drivers/hid/wacom_sys.c hid_hw_close(wacom->hdev); wacom 214 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 215 drivers/hid/wacom_sys.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 225 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_report = field->report->id; wacom 226 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_value = 2; wacom 297 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 298 drivers/hid/wacom_sys.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 299 drivers/hid/wacom_sys.c struct hid_data *hid_data = &wacom->wacom_wac.hid_data; wacom 309 drivers/hid/wacom_sys.c wacom->generic_has_leds = true; wacom 352 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_report = field->report->id; wacom 353 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_value = 0; wacom 358 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_report = field->report->id; wacom 359 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_value = 2; wacom 367 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_report = field->report->id; wacom 368 drivers/hid/wacom_sys.c wacom->wacom_wac.mode_value = 0; wacom 430 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 431 drivers/hid/wacom_sys.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 486 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 487 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 551 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 552 drivers/hid/wacom_sys.c struct hid_data *hid_data = &wacom->wacom_wac.hid_data; wacom 612 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 631 drivers/hid/wacom_sys.c wacom->wacom_wac.bt_high_speed = speed; wacom 645 drivers/hid/wacom_sys.c wacom->wacom_wac.bt_features &= ~0x20; wacom 647 drivers/hid/wacom_sys.c wacom->wacom_wac.bt_features |= 0x20; wacom 650 drivers/hid/wacom_sys.c rep_data[1] = wacom->wacom_wac.bt_features; wacom 655 drivers/hid/wacom_sys.c wacom->wacom_wac.bt_high_speed = speed; wacom 669 drivers/hid/wacom_sys.c static int _wacom_query_tablet_data(struct wacom *wacom) wacom 671 drivers/hid/wacom_sys.c struct hid_device *hdev = wacom->hdev; wacom 672 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 713 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 714 drivers/hid/wacom_sys.c struct usb_interface *intf = wacom->intf; wacom 753 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 754 drivers/hid/wacom_sys.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 755 drivers/hid/wacom_sys.c struct wacom *sibling_wacom = hid_get_drvdata(sibling); wacom 853 drivers/hid/wacom_sys.c struct wacom *wacom = res; wacom 855 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 861 drivers/hid/wacom_sys.c if (wacom_wac->shared->touch == wacom->hdev) wacom 863 drivers/hid/wacom_sys.c else if (wacom_wac->shared->pen == wacom->hdev) wacom 873 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 874 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 895 drivers/hid/wacom_sys.c retval = devm_add_action(&hdev->dev, wacom_remove_shared_data, wacom); wacom 898 drivers/hid/wacom_sys.c wacom_remove_shared_data(wacom); wacom 912 drivers/hid/wacom_sys.c static int wacom_led_control(struct wacom *wacom) wacom 919 drivers/hid/wacom_sys.c if (!wacom->led.groups) wacom 922 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.type == REMOTE) wacom 925 drivers/hid/wacom_sys.c if (wacom->wacom_wac.pid) { /* wireless connected */ wacom 929 drivers/hid/wacom_sys.c else if (wacom->wacom_wac.features.type == INTUOSP2_BT) { wacom 937 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.type == HID_GENERIC) { wacom 939 drivers/hid/wacom_sys.c buf[1] = wacom->led.llv; wacom 940 drivers/hid/wacom_sys.c buf[2] = wacom->led.groups[0].select & 0x03; wacom 942 drivers/hid/wacom_sys.c } else if ((wacom->wacom_wac.features.type >= INTUOS5S && wacom 943 drivers/hid/wacom_sys.c wacom->wacom_wac.features.type <= INTUOSPL)) { wacom 949 drivers/hid/wacom_sys.c int ring_led = wacom->led.groups[0].select & 0x03; wacom 950 drivers/hid/wacom_sys.c int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03; wacom 955 drivers/hid/wacom_sys.c if (wacom->wacom_wac.pid) { wacom 956 drivers/hid/wacom_sys.c wacom_get_report(wacom->hdev, HID_FEATURE_REPORT, wacom 963 drivers/hid/wacom_sys.c else if (wacom->wacom_wac.features.type == INTUOSP2_BT) { wacom 970 drivers/hid/wacom_sys.c buf[9] = wacom->led.llv; wacom 971 drivers/hid/wacom_sys.c buf[10] = wacom->led.groups[0].select & 0x03; wacom 974 drivers/hid/wacom_sys.c int led = wacom->led.groups[0].select | 0x4; wacom 976 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.type == WACOM_21UX2 || wacom 977 drivers/hid/wacom_sys.c wacom->wacom_wac.features.type == WACOM_24HD) wacom 978 drivers/hid/wacom_sys.c led |= (wacom->led.groups[1].select << 4) | 0x40; wacom 982 drivers/hid/wacom_sys.c buf[2] = wacom->led.llv; wacom 983 drivers/hid/wacom_sys.c buf[3] = wacom->led.hlv; wacom 984 drivers/hid/wacom_sys.c buf[4] = wacom->led.img_lum; wacom 987 drivers/hid/wacom_sys.c retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, buf_size, wacom 994 drivers/hid/wacom_sys.c static int wacom_led_putimage(struct wacom *wacom, int button_id, u8 xfer_id, wacom 1008 drivers/hid/wacom_sys.c retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, wacom 1019 drivers/hid/wacom_sys.c retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, wacom 1028 drivers/hid/wacom_sys.c wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, wacom 1040 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1048 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 1050 drivers/hid/wacom_sys.c wacom->led.groups[set_id].select = id & 0x3; wacom 1051 drivers/hid/wacom_sys.c err = wacom_led_control(wacom); wacom 1053 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 1068 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); \ wacom 1070 drivers/hid/wacom_sys.c wacom->led.groups[SET_ID].select); \ wacom 1079 drivers/hid/wacom_sys.c static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest, wacom 1089 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 1092 drivers/hid/wacom_sys.c err = wacom_led_control(wacom); wacom 1094 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 1104 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); \ wacom 1106 drivers/hid/wacom_sys.c return wacom_luminance_store(wacom, &wacom->led.field, \ wacom 1112 drivers/hid/wacom_sys.c struct wacom *wacom = dev_get_drvdata(dev); \ wacom 1113 drivers/hid/wacom_sys.c return scnprintf(buf, PAGE_SIZE, "%d\n", wacom->led.field); \ wacom 1127 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1143 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 1145 drivers/hid/wacom_sys.c err = wacom_led_putimage(wacom, button_id, xfer_id, len, buf); wacom 1147 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 1239 drivers/hid/wacom_sys.c static int __wacom_devm_sysfs_create_group(struct wacom *wacom, wacom 1261 drivers/hid/wacom_sys.c devres_add(&wacom->hdev->dev, devres); wacom 1266 drivers/hid/wacom_sys.c static int wacom_devm_sysfs_create_group(struct wacom *wacom, wacom 1269 drivers/hid/wacom_sys.c return __wacom_devm_sysfs_create_group(wacom, &wacom->hdev->dev.kobj, wacom 1275 drivers/hid/wacom_sys.c struct wacom *wacom = led->wacom; wacom 1277 drivers/hid/wacom_sys.c if (wacom->led.max_hlv) wacom 1278 drivers/hid/wacom_sys.c return led->hlv * LED_FULL / wacom->led.max_hlv; wacom 1280 drivers/hid/wacom_sys.c if (wacom->led.max_llv) wacom 1281 drivers/hid/wacom_sys.c return led->llv * LED_FULL / wacom->led.max_llv; wacom 1290 drivers/hid/wacom_sys.c struct wacom *wacom = led->wacom; wacom 1292 drivers/hid/wacom_sys.c if (wacom->led.groups[led->group].select != led->id) wacom 1302 drivers/hid/wacom_sys.c struct wacom *wacom = led->wacom; wacom 1305 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 1307 drivers/hid/wacom_sys.c if (!wacom->led.groups || (brightness == LED_OFF && wacom 1308 drivers/hid/wacom_sys.c wacom->led.groups[led->group].select != led->id)) { wacom 1313 drivers/hid/wacom_sys.c led->llv = wacom->led.llv = wacom->led.max_llv * brightness / LED_FULL; wacom 1314 drivers/hid/wacom_sys.c led->hlv = wacom->led.hlv = wacom->led.max_hlv * brightness / LED_FULL; wacom 1316 drivers/hid/wacom_sys.c wacom->led.groups[led->group].select = led->id; wacom 1318 drivers/hid/wacom_sys.c error = wacom_led_control(wacom); wacom 1321 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 1331 drivers/hid/wacom_sys.c static int wacom_led_register_one(struct device *dev, struct wacom *wacom, wacom 1350 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1359 drivers/hid/wacom_sys.c led->wacom = wacom; wacom 1360 drivers/hid/wacom_sys.c led->llv = wacom->led.llv; wacom 1361 drivers/hid/wacom_sys.c led->hlv = wacom->led.hlv; wacom 1375 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1393 drivers/hid/wacom_sys.c struct wacom *wacom, wacom 1400 drivers/hid/wacom_sys.c if (group_id >= wacom->led.count || count <= 0) wacom 1403 drivers/hid/wacom_sys.c if (!devres_open_group(dev, &wacom->led.groups[group_id], GFP_KERNEL)) wacom 1412 drivers/hid/wacom_sys.c wacom->led.groups[group_id].leds = leds; wacom 1413 drivers/hid/wacom_sys.c wacom->led.groups[group_id].count = count; wacom 1416 drivers/hid/wacom_sys.c error = wacom_led_register_one(dev, wacom, &leds[i], wacom 1422 drivers/hid/wacom_sys.c wacom->led.groups[group_id].dev = dev; wacom 1424 drivers/hid/wacom_sys.c devres_close_group(dev, &wacom->led.groups[group_id]); wacom 1435 drivers/hid/wacom_sys.c error = devm_add_action_or_reset(&wacom->hdev->dev, wacom 1437 drivers/hid/wacom_sys.c &wacom->led.groups[group_id]); wacom 1444 drivers/hid/wacom_sys.c devres_release_group(dev, &wacom->led.groups[group_id]); wacom 1448 drivers/hid/wacom_sys.c struct wacom_led *wacom_led_find(struct wacom *wacom, unsigned int group_id, wacom 1453 drivers/hid/wacom_sys.c if (group_id >= wacom->led.count) wacom 1456 drivers/hid/wacom_sys.c group = &wacom->led.groups[group_id]; wacom 1472 drivers/hid/wacom_sys.c struct wacom_led *wacom_led_next(struct wacom *wacom, struct wacom_led *cur) wacom 1477 drivers/hid/wacom_sys.c if (!wacom || !cur) wacom 1484 drivers/hid/wacom_sys.c next_led = wacom_led_find(wacom, group, ++next); wacom 1494 drivers/hid/wacom_sys.c struct wacom *wacom = data; wacom 1496 drivers/hid/wacom_sys.c wacom->led.groups = NULL; wacom 1497 drivers/hid/wacom_sys.c wacom->led.count = 0; wacom 1500 drivers/hid/wacom_sys.c static int wacom_led_groups_allocate(struct wacom *wacom, int count) wacom 1502 drivers/hid/wacom_sys.c struct device *dev = &wacom->hdev->dev; wacom 1511 drivers/hid/wacom_sys.c error = devm_add_action_or_reset(dev, wacom_led_groups_release, wacom); wacom 1515 drivers/hid/wacom_sys.c wacom->led.groups = groups; wacom 1516 drivers/hid/wacom_sys.c wacom->led.count = count; wacom 1521 drivers/hid/wacom_sys.c static int wacom_leds_alloc_and_register(struct wacom *wacom, int group_count, wacom 1527 drivers/hid/wacom_sys.c if (!wacom->wacom_wac.pad_input) wacom 1530 drivers/hid/wacom_sys.c dev = &wacom->wacom_wac.pad_input->dev; wacom 1532 drivers/hid/wacom_sys.c error = wacom_led_groups_allocate(wacom, group_count); wacom 1537 drivers/hid/wacom_sys.c error = wacom_led_groups_alloc_and_register_one(dev, wacom, i, wacom 1547 drivers/hid/wacom_sys.c int wacom_initialize_leds(struct wacom *wacom) wacom 1551 drivers/hid/wacom_sys.c if (!(wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD)) wacom 1555 drivers/hid/wacom_sys.c switch (wacom->wacom_wac.features.type) { wacom 1557 drivers/hid/wacom_sys.c if (!wacom->generic_has_leds) wacom 1559 drivers/hid/wacom_sys.c wacom->led.llv = 100; wacom 1560 drivers/hid/wacom_sys.c wacom->led.max_llv = 100; wacom 1562 drivers/hid/wacom_sys.c error = wacom_leds_alloc_and_register(wacom, 1, 4, false); wacom 1564 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1569 drivers/hid/wacom_sys.c error = wacom_devm_sysfs_create_group(wacom, wacom 1577 drivers/hid/wacom_sys.c wacom->led.llv = 10; wacom 1578 drivers/hid/wacom_sys.c wacom->led.hlv = 20; wacom 1579 drivers/hid/wacom_sys.c wacom->led.max_llv = 127; wacom 1580 drivers/hid/wacom_sys.c wacom->led.max_hlv = 127; wacom 1581 drivers/hid/wacom_sys.c wacom->led.img_lum = 10; wacom 1583 drivers/hid/wacom_sys.c error = wacom_leds_alloc_and_register(wacom, 1, 4, false); wacom 1585 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1590 drivers/hid/wacom_sys.c error = wacom_devm_sysfs_create_group(wacom, wacom 1596 drivers/hid/wacom_sys.c wacom->led.llv = 0; wacom 1597 drivers/hid/wacom_sys.c wacom->led.hlv = 0; wacom 1598 drivers/hid/wacom_sys.c wacom->led.img_lum = 0; wacom 1600 drivers/hid/wacom_sys.c error = wacom_leds_alloc_and_register(wacom, 2, 4, false); wacom 1602 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1607 drivers/hid/wacom_sys.c error = wacom_devm_sysfs_create_group(wacom, wacom 1617 drivers/hid/wacom_sys.c wacom->led.llv = 32; wacom 1618 drivers/hid/wacom_sys.c wacom->led.max_llv = 96; wacom 1620 drivers/hid/wacom_sys.c error = wacom_leds_alloc_and_register(wacom, 1, 4, false); wacom 1622 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1627 drivers/hid/wacom_sys.c error = wacom_devm_sysfs_create_group(wacom, wacom 1632 drivers/hid/wacom_sys.c wacom->led.llv = 50; wacom 1633 drivers/hid/wacom_sys.c wacom->led.max_llv = 100; wacom 1634 drivers/hid/wacom_sys.c error = wacom_leds_alloc_and_register(wacom, 1, 4, false); wacom 1636 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1643 drivers/hid/wacom_sys.c wacom->led.llv = 255; wacom 1644 drivers/hid/wacom_sys.c wacom->led.max_llv = 255; wacom 1645 drivers/hid/wacom_sys.c error = wacom_led_groups_allocate(wacom, 5); wacom 1647 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1658 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1668 drivers/hid/wacom_sys.c struct wacom *wacom = container_of(work, struct wacom, init_work.work); wacom 1670 drivers/hid/wacom_sys.c _wacom_query_tablet_data(wacom); wacom 1671 drivers/hid/wacom_sys.c wacom_led_control(wacom); wacom 1674 drivers/hid/wacom_sys.c static void wacom_query_tablet_data(struct wacom *wacom) wacom 1676 drivers/hid/wacom_sys.c schedule_delayed_work(&wacom->init_work, msecs_to_jiffies(1000)); wacom 1696 drivers/hid/wacom_sys.c val->strval = battery->wacom->wacom_wac.name; wacom 1728 drivers/hid/wacom_sys.c static int __wacom_initialize_battery(struct wacom *wacom, wacom 1732 drivers/hid/wacom_sys.c struct device *dev = &wacom->hdev->dev; wacom 1742 drivers/hid/wacom_sys.c battery->wacom = wacom; wacom 1760 drivers/hid/wacom_sys.c power_supply_powers(ps_bat, &wacom->hdev->dev); wacom 1772 drivers/hid/wacom_sys.c static int wacom_initialize_battery(struct wacom *wacom) wacom 1774 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) wacom 1775 drivers/hid/wacom_sys.c return __wacom_initialize_battery(wacom, &wacom->battery); wacom 1780 drivers/hid/wacom_sys.c static void wacom_destroy_battery(struct wacom *wacom) wacom 1782 drivers/hid/wacom_sys.c if (wacom->battery.battery) { wacom 1783 drivers/hid/wacom_sys.c devres_release_group(&wacom->hdev->dev, wacom 1784 drivers/hid/wacom_sys.c &wacom->battery.bat_desc); wacom 1785 drivers/hid/wacom_sys.c wacom->battery.battery = NULL; wacom 1794 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1796 drivers/hid/wacom_sys.c return snprintf(buf, PAGE_SIZE, "%i\n", wacom->wacom_wac.bt_high_speed); wacom 1804 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1813 drivers/hid/wacom_sys.c wacom_bt_query_tablet_data(hdev, new_speed, &wacom->wacom_wac.features); wacom 1828 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1831 drivers/hid/wacom_sys.c mode = wacom->led.groups[index].select; wacom 1861 drivers/hid/wacom_sys.c static int wacom_remote_create_attr_group(struct wacom *wacom, __u32 serial, wacom 1865 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 1867 drivers/hid/wacom_sys.c remote->remotes[index].group.name = devm_kasprintf(&wacom->hdev->dev, wacom 1873 drivers/hid/wacom_sys.c error = __wacom_devm_sysfs_create_group(wacom, remote->remote_dir, wacom 1877 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 1885 drivers/hid/wacom_sys.c static int wacom_cmd_unpair_remote(struct wacom *wacom, unsigned char selector) wacom 1898 drivers/hid/wacom_sys.c retval = wacom_set_report(wacom->hdev, HID_OUTPUT_REPORT, buf, wacom 1912 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1918 drivers/hid/wacom_sys.c hid_info(wacom->hdev, "remote: unrecognized unpair code: %s\n", wacom 1923 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 1925 drivers/hid/wacom_sys.c err = wacom_cmd_unpair_remote(wacom, selector); wacom 1926 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 1943 drivers/hid/wacom_sys.c struct wacom *wacom = data; wacom 1944 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 1951 drivers/hid/wacom_sys.c wacom->remote = NULL; wacom 1954 drivers/hid/wacom_sys.c static int wacom_initialize_remotes(struct wacom *wacom) wacom 1960 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.type != REMOTE) wacom 1963 drivers/hid/wacom_sys.c remote = devm_kzalloc(&wacom->hdev->dev, sizeof(*wacom->remote), wacom 1968 drivers/hid/wacom_sys.c wacom->remote = remote; wacom 1976 drivers/hid/wacom_sys.c hid_err(wacom->hdev, "failed allocating remote_fifo\n"); wacom 1987 drivers/hid/wacom_sys.c &wacom->hdev->dev.kobj); wacom 1994 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 2000 drivers/hid/wacom_sys.c wacom->led.groups[i].select = WACOM_STATUS_UNKNOWN; wacom 2004 drivers/hid/wacom_sys.c error = devm_add_action_or_reset(&wacom->hdev->dev, wacom 2005 drivers/hid/wacom_sys.c wacom_remotes_destroy, wacom); wacom 2012 drivers/hid/wacom_sys.c static struct input_dev *wacom_allocate_input(struct wacom *wacom) wacom 2015 drivers/hid/wacom_sys.c struct hid_device *hdev = wacom->hdev; wacom 2016 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &(wacom->wacom_wac); wacom 2032 drivers/hid/wacom_sys.c input_set_drvdata(input_dev, wacom); wacom 2037 drivers/hid/wacom_sys.c static int wacom_allocate_inputs(struct wacom *wacom) wacom 2039 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &(wacom->wacom_wac); wacom 2041 drivers/hid/wacom_sys.c wacom_wac->pen_input = wacom_allocate_input(wacom); wacom 2042 drivers/hid/wacom_sys.c wacom_wac->touch_input = wacom_allocate_input(wacom); wacom 2043 drivers/hid/wacom_sys.c wacom_wac->pad_input = wacom_allocate_input(wacom); wacom 2056 drivers/hid/wacom_sys.c static int wacom_register_inputs(struct wacom *wacom) wacom 2059 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &(wacom->wacom_wac); wacom 2149 drivers/hid/wacom_sys.c struct wacom *wacom = container_of(work, struct wacom, battery_work); wacom 2151 drivers/hid/wacom_sys.c if ((wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && wacom 2152 drivers/hid/wacom_sys.c !wacom->battery.battery) { wacom 2153 drivers/hid/wacom_sys.c wacom_initialize_battery(wacom); wacom 2155 drivers/hid/wacom_sys.c else if (!(wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && wacom 2156 drivers/hid/wacom_sys.c wacom->battery.battery) { wacom 2157 drivers/hid/wacom_sys.c wacom_destroy_battery(wacom); wacom 2178 drivers/hid/wacom_sys.c static void wacom_update_name(struct wacom *wacom, const char *suffix) wacom 2180 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2186 drivers/hid/wacom_sys.c char *product_name = wacom->hdev->name; wacom 2188 drivers/hid/wacom_sys.c if (hid_is_using_ll_driver(wacom->hdev, &usb_hid_driver)) { wacom 2189 drivers/hid/wacom_sys.c struct usb_interface *intf = to_usb_interface(wacom->hdev->dev.parent); wacom 2194 drivers/hid/wacom_sys.c if (wacom->hdev->bus == BUS_I2C) { wacom 2196 drivers/hid/wacom_sys.c features->name, wacom->hdev->product); wacom 2233 drivers/hid/wacom_sys.c static void wacom_release_resources(struct wacom *wacom) wacom 2235 drivers/hid/wacom_sys.c struct hid_device *hdev = wacom->hdev; wacom 2237 drivers/hid/wacom_sys.c if (!wacom->resources) wacom 2240 drivers/hid/wacom_sys.c devres_release_group(&hdev->dev, wacom); wacom 2242 drivers/hid/wacom_sys.c wacom->resources = false; wacom 2244 drivers/hid/wacom_sys.c wacom->wacom_wac.pen_input = NULL; wacom 2245 drivers/hid/wacom_sys.c wacom->wacom_wac.touch_input = NULL; wacom 2246 drivers/hid/wacom_sys.c wacom->wacom_wac.pad_input = NULL; wacom 2269 drivers/hid/wacom_sys.c static int wacom_parse_and_register(struct wacom *wacom, bool wireless) wacom 2271 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2273 drivers/hid/wacom_sys.c struct hid_device *hdev = wacom->hdev; wacom 2281 drivers/hid/wacom_sys.c if (!devres_open_group(&hdev->dev, wacom, GFP_KERNEL)) wacom 2284 drivers/hid/wacom_sys.c wacom->resources = true; wacom 2286 drivers/hid/wacom_sys.c error = wacom_allocate_inputs(wacom); wacom 2310 drivers/hid/wacom_sys.c wacom_setup_device_quirks(wacom); wacom 2328 drivers/hid/wacom_sys.c wacom_update_name(wacom, wireless ? " (WL)" : ""); wacom 2344 drivers/hid/wacom_sys.c error = wacom_initialize_battery(wacom); wacom 2349 drivers/hid/wacom_sys.c error = wacom_register_inputs(wacom); wacom 2353 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD) { wacom 2354 drivers/hid/wacom_sys.c error = wacom_initialize_leds(wacom); wacom 2358 drivers/hid/wacom_sys.c error = wacom_initialize_remotes(wacom); wacom 2375 drivers/hid/wacom_sys.c wacom_query_tablet_data(wacom); wacom 2381 drivers/hid/wacom_sys.c cancel_delayed_work_sync(&wacom->init_work); wacom 2382 drivers/hid/wacom_sys.c _wacom_query_tablet_data(wacom); wacom 2391 drivers/hid/wacom_sys.c devres_close_group(&hdev->dev, wacom); wacom 2398 drivers/hid/wacom_sys.c wacom_release_resources(wacom); wacom 2404 drivers/hid/wacom_sys.c struct wacom *wacom = container_of(work, struct wacom, wireless_work); wacom 2405 drivers/hid/wacom_sys.c struct usb_device *usbdev = wacom->usbdev; wacom 2406 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2408 drivers/hid/wacom_sys.c struct wacom *wacom1, *wacom2; wacom 2417 drivers/hid/wacom_sys.c wacom_destroy_battery(wacom); wacom 2432 drivers/hid/wacom_sys.c hid_info(wacom->hdev, "wireless tablet disconnected\n"); wacom 2436 drivers/hid/wacom_sys.c hid_info(wacom->hdev, "wireless tablet connected with PID %x\n", wacom 2447 drivers/hid/wacom_sys.c hid_info(wacom->hdev, "ignoring unknown PID.\n"); wacom 2476 drivers/hid/wacom_sys.c error = wacom_initialize_battery(wacom); wacom 2489 drivers/hid/wacom_sys.c static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index) wacom 2491 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 2504 drivers/hid/wacom_sys.c devres_release_group(&wacom->hdev->dev, wacom 2508 drivers/hid/wacom_sys.c devres_release_group(&wacom->hdev->dev, wacom 2514 drivers/hid/wacom_sys.c wacom->led.groups[i].select = WACOM_STATUS_UNKNOWN; wacom 2519 drivers/hid/wacom_sys.c static int wacom_remote_create_one(struct wacom *wacom, u32 serial, wacom 2522 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 2523 drivers/hid/wacom_sys.c struct device *dev = &wacom->hdev->dev; wacom 2542 drivers/hid/wacom_sys.c error = wacom_remote_create_attr_group(wacom, serial, index); wacom 2546 drivers/hid/wacom_sys.c remote->remotes[index].input = wacom_allocate_input(wacom); wacom 2552 drivers/hid/wacom_sys.c remote->remotes[index].input->name = wacom->wacom_wac.pad_name; wacom 2560 drivers/hid/wacom_sys.c &wacom->wacom_wac); wacom 2572 drivers/hid/wacom_sys.c wacom, index, 3, true); wacom 2587 drivers/hid/wacom_sys.c static int wacom_remote_attach_battery(struct wacom *wacom, int index) wacom 2589 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 2598 drivers/hid/wacom_sys.c if (wacom->led.groups[index].select == WACOM_STATUS_UNKNOWN) wacom 2601 drivers/hid/wacom_sys.c error = __wacom_initialize_battery(wacom, wacom 2602 drivers/hid/wacom_sys.c &wacom->remote->remotes[index].battery); wacom 2611 drivers/hid/wacom_sys.c struct wacom *wacom = container_of(work, struct wacom, remote_work); wacom 2612 drivers/hid/wacom_sys.c struct wacom_remote *remote = wacom->remote; wacom 2624 drivers/hid/wacom_sys.c hid_err(wacom->hdev, wacom 2631 drivers/hid/wacom_sys.c wacom_schedule_work(&wacom->wacom_wac, WACOM_WORKER_REMOTE); wacom 2640 drivers/hid/wacom_sys.c wacom_remote_attach_battery(wacom, i); wacom 2645 drivers/hid/wacom_sys.c wacom_remote_destroy_one(wacom, i); wacom 2647 drivers/hid/wacom_sys.c wacom_remote_create_one(wacom, serial, i); wacom 2650 drivers/hid/wacom_sys.c wacom_remote_destroy_one(wacom, i); wacom 2657 drivers/hid/wacom_sys.c struct wacom *wacom = container_of(work, struct wacom, mode_change_work); wacom 2658 drivers/hid/wacom_sys.c struct wacom_shared *shared = wacom->wacom_wac.shared; wacom 2659 drivers/hid/wacom_sys.c struct wacom *wacom1 = NULL; wacom 2660 drivers/hid/wacom_sys.c struct wacom *wacom2 = NULL; wacom 2661 drivers/hid/wacom_sys.c bool is_direct = wacom->wacom_wac.is_direct_mode; wacom 2700 drivers/hid/wacom_sys.c struct wacom *wacom; wacom 2713 drivers/hid/wacom_sys.c wacom = devm_kzalloc(&hdev->dev, sizeof(struct wacom), GFP_KERNEL); wacom 2714 drivers/hid/wacom_sys.c if (!wacom) wacom 2717 drivers/hid/wacom_sys.c hid_set_drvdata(hdev, wacom); wacom 2718 drivers/hid/wacom_sys.c wacom->hdev = hdev; wacom 2720 drivers/hid/wacom_sys.c wacom_wac = &wacom->wacom_wac; wacom 2734 drivers/hid/wacom_sys.c wacom->usbdev = dev; wacom 2735 drivers/hid/wacom_sys.c wacom->intf = intf; wacom 2736 drivers/hid/wacom_sys.c mutex_init(&wacom->lock); wacom 2737 drivers/hid/wacom_sys.c INIT_DELAYED_WORK(&wacom->init_work, wacom_init_work); wacom 2738 drivers/hid/wacom_sys.c INIT_WORK(&wacom->wireless_work, wacom_wireless_work); wacom 2739 drivers/hid/wacom_sys.c INIT_WORK(&wacom->battery_work, wacom_battery_work); wacom 2740 drivers/hid/wacom_sys.c INIT_WORK(&wacom->remote_work, wacom_remote_work); wacom 2741 drivers/hid/wacom_sys.c INIT_WORK(&wacom->mode_change_work, wacom_mode_change_work); wacom 2750 drivers/hid/wacom_sys.c error = wacom_parse_and_register(wacom, false); wacom 2767 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2768 drivers/hid/wacom_sys.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2776 drivers/hid/wacom_sys.c cancel_delayed_work_sync(&wacom->init_work); wacom 2777 drivers/hid/wacom_sys.c cancel_work_sync(&wacom->wireless_work); wacom 2778 drivers/hid/wacom_sys.c cancel_work_sync(&wacom->battery_work); wacom 2779 drivers/hid/wacom_sys.c cancel_work_sync(&wacom->remote_work); wacom 2780 drivers/hid/wacom_sys.c cancel_work_sync(&wacom->mode_change_work); wacom 2785 drivers/hid/wacom_sys.c wacom_led_groups_release(wacom); wacom 2787 drivers/hid/wacom_sys.c if (wacom->wacom_wac.features.type != REMOTE) wacom 2788 drivers/hid/wacom_sys.c wacom_release_resources(wacom); wacom 2796 drivers/hid/wacom_sys.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2798 drivers/hid/wacom_sys.c mutex_lock(&wacom->lock); wacom 2801 drivers/hid/wacom_sys.c _wacom_query_tablet_data(wacom); wacom 2802 drivers/hid/wacom_sys.c wacom_led_control(wacom); wacom 2804 drivers/hid/wacom_sys.c mutex_unlock(&wacom->lock); wacom 42 drivers/hid/wacom_wac.c static void wacom_update_led(struct wacom *wacom, int button_count, int mask, wacom 82 drivers/hid/wacom_wac.c struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 84 drivers/hid/wacom_wac.c __wacom_notify_battery(&wacom->battery, bat_status, bat_capacity, wacom 88 drivers/hid/wacom_wac.c static int wacom_penpartner_irq(struct wacom_wac *wacom) wacom 90 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 91 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 96 drivers/hid/wacom_wac.c wacom->tool[0] = (data[5] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; wacom 97 drivers/hid/wacom_wac.c wacom->id[0] = (data[5] & 0x20) ? ERASER_DEVICE_ID : STYLUS_DEVICE_ID; wacom 98 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], 1); wacom 99 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ wacom 106 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], 0); wacom 132 drivers/hid/wacom_wac.c static int wacom_pl_irq(struct wacom_wac *wacom) wacom 134 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 135 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 136 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 147 drivers/hid/wacom_wac.c if (!wacom->id[0]) { wacom 149 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_RUBBER; wacom 150 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 153 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 154 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 162 drivers/hid/wacom_wac.c if (wacom->tool[0] == BTN_TOOL_RUBBER && !(data[4] & 0x20)) { wacom 166 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 167 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 183 drivers/hid/wacom_wac.c input_report_key(input, BTN_STYLUS2, (wacom->tool[0] == BTN_TOOL_PEN) && (data[4] & 0x20)); wacom 187 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 188 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], prox); wacom 189 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); wacom 193 drivers/hid/wacom_wac.c static int wacom_ptu_irq(struct wacom_wac *wacom) wacom 195 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 196 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 207 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 211 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 213 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ wacom 222 drivers/hid/wacom_wac.c static int wacom_dtu_irq(struct wacom_wac *wacom) wacom 224 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 225 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 233 drivers/hid/wacom_wac.c wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; wacom 234 drivers/hid/wacom_wac.c if (wacom->tool[0] == BTN_TOOL_PEN) wacom 235 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 237 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 246 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 247 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], prox); wacom 248 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); wacom 252 drivers/hid/wacom_wac.c static int wacom_dtus_irq(struct wacom_wac *wacom) wacom 254 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 255 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 263 drivers/hid/wacom_wac.c input = wacom->pad_input; wacom 276 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_RUBBER; wacom 277 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 281 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 282 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 296 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 297 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], prox); wacom 298 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); wacom 303 drivers/hid/wacom_wac.c static int wacom_graphire_irq(struct wacom_wac *wacom) wacom 305 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 306 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 307 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 308 drivers/hid/wacom_wac.c struct input_dev *pad_input = wacom->pad_input; wacom 328 drivers/hid/wacom_wac.c if (prox || wacom->id[0]) { wacom 333 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 334 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 338 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_RUBBER; wacom 339 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 347 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_MOUSE; wacom 348 drivers/hid/wacom_wac.c wacom->id[0] = CURSOR_DEVICE_ID; wacom 354 drivers/hid/wacom_wac.c if (wacom->tool[0] != BTN_TOOL_MOUSE) { wacom 393 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 394 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ wacom 395 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], prox); wacom 403 drivers/hid/wacom_wac.c if (prox || wacom->id[1]) { wacom 404 drivers/hid/wacom_wac.c wacom->id[1] = PAD_DEVICE_ID; wacom 410 drivers/hid/wacom_wac.c wacom->id[1] = 0; wacom 411 drivers/hid/wacom_wac.c input_report_abs(pad_input, ABS_MISC, wacom->id[1]); wacom 418 drivers/hid/wacom_wac.c if (prox || wacom->id[1]) { wacom 419 drivers/hid/wacom_wac.c wacom->id[1] = PAD_DEVICE_ID; wacom 426 drivers/hid/wacom_wac.c wacom->id[1] = 0; wacom 427 drivers/hid/wacom_wac.c input_report_abs(pad_input, ABS_MISC, wacom->id[1]); wacom 433 drivers/hid/wacom_wac.c if (prox || wacom->id[1]) { wacom 434 drivers/hid/wacom_wac.c wacom->id[1] = PAD_DEVICE_ID; wacom 438 drivers/hid/wacom_wac.c wacom->id[1] = 0; wacom 439 drivers/hid/wacom_wac.c input_report_abs(pad_input, ABS_MISC, wacom->id[1]); wacom 450 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, WACOM_POWER_SUPPLY_STATUS_AUTO, wacom 460 drivers/hid/wacom_wac.c struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 465 drivers/hid/wacom_wac.c re = &(wacom->hdev->report_enum[HID_FEATURE_REPORT]); wacom 471 drivers/hid/wacom_wac.c hid_hw_request(wacom->hdev, r, HID_REQ_GET_REPORT); wacom 475 drivers/hid/wacom_wac.c static int wacom_intuos_pad(struct wacom_wac *wacom) wacom 477 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 478 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 479 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pad_input; wacom 523 drivers/hid/wacom_wac.c wacom->shared->is_touch_on = wacom 524 drivers/hid/wacom_wac.c !wacom->shared->is_touch_on; wacom 538 drivers/hid/wacom_wac.c wacom->shared->is_touch_on = wacom 539 drivers/hid/wacom_wac.c !wacom->shared->is_touch_on; wacom 615 drivers/hid/wacom_wac.c if (wacom->shared && wacom->shared->touch_input) { wacom 616 drivers/hid/wacom_wac.c input_report_switch(wacom->shared->touch_input, wacom 618 drivers/hid/wacom_wac.c !wacom->shared->is_touch_on); wacom 619 drivers/hid/wacom_wac.c input_sync(wacom->shared->touch_input); wacom 628 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[1], prox ? 1 : 0); wacom 729 drivers/hid/wacom_wac.c static void wacom_exit_report(struct wacom_wac *wacom) wacom 731 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 732 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 733 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 745 drivers/hid/wacom_wac.c if (wacom->tool[idx] >= BTN_TOOL_MOUSE) { wacom 762 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[idx], 0); wacom 764 drivers/hid/wacom_wac.c input_event(input, EV_MSC, MSC_SERIAL, wacom->serial[idx]); wacom 765 drivers/hid/wacom_wac.c wacom->id[idx] = 0; wacom 768 drivers/hid/wacom_wac.c static int wacom_intuos_inout(struct wacom_wac *wacom) wacom 770 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 771 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 772 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 783 drivers/hid/wacom_wac.c wacom->serial[idx] = ((data[3] & 0x0f) << 28) + wacom 787 drivers/hid/wacom_wac.c wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) | wacom 790 drivers/hid/wacom_wac.c wacom->tool[idx] = wacom_intuos_get_tool_type(wacom->id[idx]); wacom 792 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = true; wacom 799 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = true; wacom 802 drivers/hid/wacom_wac.c if (wacom->reporting_data) { wacom 805 drivers/hid/wacom_wac.c input_report_abs(input, ABS_DISTANCE, wacom->features.distance_max); wacom 813 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = false; wacom 814 drivers/hid/wacom_wac.c wacom->reporting_data = false; wacom 817 drivers/hid/wacom_wac.c if (!wacom->id[idx]) wacom 820 drivers/hid/wacom_wac.c wacom_exit_report(wacom); wacom 827 drivers/hid/wacom_wac.c static inline bool report_touch_events(struct wacom_wac *wacom) wacom 829 drivers/hid/wacom_wac.c return (touch_arbitration ? !wacom->shared->stylus_in_proximity : 1); wacom 832 drivers/hid/wacom_wac.c static inline bool delay_pen_events(struct wacom_wac *wacom) wacom 834 drivers/hid/wacom_wac.c return (wacom->shared->touch_down && touch_arbitration); wacom 837 drivers/hid/wacom_wac.c static int wacom_intuos_general(struct wacom_wac *wacom) wacom 839 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 840 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 841 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 850 drivers/hid/wacom_wac.c if (delay_pen_events(wacom)) wacom 854 drivers/hid/wacom_wac.c if (!wacom->id[idx]) { wacom 856 drivers/hid/wacom_wac.c wacom_intuos_schedule_prox_event(wacom); wacom 864 drivers/hid/wacom_wac.c if ((!((wacom->id[idx] >> 16) & 0x01) && wacom 867 drivers/hid/wacom_wac.c (wacom->tool[idx] == BTN_TOOL_LENS && wacom 967 drivers/hid/wacom_wac.c if (wacom->tool[idx] == BTN_TOOL_MOUSE) { wacom 981 drivers/hid/wacom_wac.c else if (wacom->tool[idx] == BTN_TOOL_LENS) { wacom 1003 drivers/hid/wacom_wac.c wacom_intuos_id_mangle(wacom->id[idx])); /* report tool id */ wacom 1004 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[idx], 1); wacom 1005 drivers/hid/wacom_wac.c input_event(input, EV_MSC, MSC_SERIAL, wacom->serial[idx]); wacom 1006 drivers/hid/wacom_wac.c wacom->reporting_data = true; wacom 1010 drivers/hid/wacom_wac.c static int wacom_intuos_irq(struct wacom_wac *wacom) wacom 1012 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1013 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 1030 drivers/hid/wacom_wac.c result = wacom_intuos_pad(wacom); wacom 1035 drivers/hid/wacom_wac.c result = wacom_intuos_inout(wacom); wacom 1040 drivers/hid/wacom_wac.c result = wacom_intuos_general(wacom); wacom 1051 drivers/hid/wacom_wac.c struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 1052 drivers/hid/wacom_wac.c struct wacom_remote *remote = wacom->remote; wacom 1059 drivers/hid/wacom_wac.c hid_dbg(wacom->hdev, "%s: received unknown report #%d", wacom 1124 drivers/hid/wacom_wac.c wacom->led.groups[i].select = touch_ring_mode; wacom 1138 drivers/hid/wacom_wac.c struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 1140 drivers/hid/wacom_wac.c struct wacom_remote *remote = wacom->remote; wacom 1164 drivers/hid/wacom_wac.c hid_err(wacom->hdev, "Can't queue Remote status event.\n"); wacom 1181 drivers/hid/wacom_wac.c static void wacom_intuos_bt_process_data(struct wacom_wac *wacom, wacom 1184 drivers/hid/wacom_wac.c memcpy(wacom->data, data, 10); wacom 1185 drivers/hid/wacom_wac.c wacom_intuos_irq(wacom); wacom 1187 drivers/hid/wacom_wac.c input_sync(wacom->pen_input); wacom 1188 drivers/hid/wacom_wac.c if (wacom->pad_input) wacom 1189 drivers/hid/wacom_wac.c input_sync(wacom->pad_input); wacom 1192 drivers/hid/wacom_wac.c static int wacom_intuos_bt_irq(struct wacom_wac *wacom, size_t len) wacom 1198 drivers/hid/wacom_wac.c memcpy(data, wacom->data, len); wacom 1202 drivers/hid/wacom_wac.c wacom_intuos_bt_process_data(wacom, data + i); wacom 1206 drivers/hid/wacom_wac.c wacom_intuos_bt_process_data(wacom, data + i); wacom 1208 drivers/hid/wacom_wac.c wacom_intuos_bt_process_data(wacom, data + i); wacom 1214 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, WACOM_POWER_SUPPLY_STATUS_AUTO, wacom 1220 drivers/hid/wacom_wac.c dev_dbg(wacom->pen_input->dev.parent, wacom 1228 drivers/hid/wacom_wac.c static int wacom_wac_finger_count_touches(struct wacom_wac *wacom) wacom 1230 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 1231 drivers/hid/wacom_wac.c unsigned touch_max = wacom->features.touch_max; wacom 1240 drivers/hid/wacom_wac.c report_touch_events(wacom); wacom 1252 drivers/hid/wacom_wac.c static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom) wacom 1256 drivers/hid/wacom_wac.c struct input_dev *pen_input = wacom->pen_input; wacom 1257 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1260 drivers/hid/wacom_wac.c if (wacom->features.type == INTUOSP2_BT || wacom 1261 drivers/hid/wacom_wac.c wacom->features.type == INTUOSP2S_BT) { wacom 1262 drivers/hid/wacom_wac.c wacom->serial[0] = get_unaligned_le64(&data[99]); wacom 1263 drivers/hid/wacom_wac.c wacom->id[0] = get_unaligned_le16(&data[107]); wacom 1267 drivers/hid/wacom_wac.c wacom->serial[0] = get_unaligned_le64(&data[33]); wacom 1268 drivers/hid/wacom_wac.c wacom->id[0] = get_unaligned_le16(&data[41]); wacom 1273 drivers/hid/wacom_wac.c if (wacom->serial[0] >> 52 == 1) { wacom 1275 drivers/hid/wacom_wac.c wacom->id[0] |= (wacom->serial[0] >> 32) & 0xFFFFF; wacom 1289 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = false; wacom 1290 drivers/hid/wacom_wac.c wacom_exit_report(wacom); wacom 1293 drivers/hid/wacom_wac.c wacom->tool[0] = 0; wacom 1294 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 1295 drivers/hid/wacom_wac.c wacom->serial[0] = 0; wacom 1300 drivers/hid/wacom_wac.c if (!wacom->tool[0]) { /* first in range */ wacom 1303 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_RUBBER; wacom 1304 drivers/hid/wacom_wac.c else if (wacom->id[0]) wacom 1305 drivers/hid/wacom_wac.c wacom->tool[0] = wacom_intuos_get_tool_type(wacom->id[0]); wacom 1307 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 1313 drivers/hid/wacom_wac.c if (wacom->features.type == INTUOSP2_BT || wacom 1314 drivers/hid/wacom_wac.c wacom->features.type == INTUOSP2S_BT) { wacom 1332 drivers/hid/wacom_wac.c if (wacom->tool[0]) { wacom 1334 drivers/hid/wacom_wac.c if (wacom->features.type == INTUOSP2_BT || wacom 1335 drivers/hid/wacom_wac.c wacom->features.type == INTUOSP2S_BT) { wacom 1337 drivers/hid/wacom_wac.c range ? frame[13] : wacom->features.distance_max); wacom 1340 drivers/hid/wacom_wac.c range ? frame[7] : wacom->features.distance_max); wacom 1347 drivers/hid/wacom_wac.c input_report_key(pen_input, wacom->tool[0], prox); wacom 1348 drivers/hid/wacom_wac.c input_event(pen_input, EV_MSC, MSC_SERIAL, wacom->serial[0]); wacom 1350 drivers/hid/wacom_wac.c wacom_intuos_id_mangle(wacom->id[0])); /* report tool id */ wacom 1353 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = prox; wacom 1359 drivers/hid/wacom_wac.c static void wacom_intuos_pro2_bt_touch(struct wacom_wac *wacom) wacom 1365 drivers/hid/wacom_wac.c struct input_dev *touch_input = wacom->touch_input; wacom 1366 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1383 drivers/hid/wacom_wac.c wacom->num_contacts_left = current_num_contacts; wacom 1385 drivers/hid/wacom_wac.c contacts_to_send = min(num_contacts_left, wacom->num_contacts_left); wacom 1409 drivers/hid/wacom_wac.c wacom->num_contacts_left -= contacts_to_send; wacom 1410 drivers/hid/wacom_wac.c if (wacom->num_contacts_left <= 0) { wacom 1411 drivers/hid/wacom_wac.c wacom->num_contacts_left = 0; wacom 1412 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 1417 drivers/hid/wacom_wac.c if (wacom->num_contacts_left == 0) { wacom 1426 drivers/hid/wacom_wac.c static void wacom_intuos_pro2_bt_pad(struct wacom_wac *wacom) wacom 1428 drivers/hid/wacom_wac.c struct input_dev *pad_input = wacom->pad_input; wacom 1429 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1430 drivers/hid/wacom_wac.c int nbuttons = wacom->features.numbered_buttons; wacom 1449 drivers/hid/wacom_wac.c input_report_key(pad_input, wacom->tool[1], prox ? 1 : 0); wacom 1456 drivers/hid/wacom_wac.c static void wacom_intuos_pro2_bt_battery(struct wacom_wac *wacom) wacom 1458 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1463 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, WACOM_POWER_SUPPLY_STATUS_AUTO, wacom 1467 drivers/hid/wacom_wac.c static void wacom_intuos_gen3_bt_pad(struct wacom_wac *wacom) wacom 1469 drivers/hid/wacom_wac.c struct input_dev *pad_input = wacom->pad_input; wacom 1470 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1476 drivers/hid/wacom_wac.c input_report_key(pad_input, wacom->tool[1], buttons ? 1 : 0); wacom 1483 drivers/hid/wacom_wac.c static void wacom_intuos_gen3_bt_battery(struct wacom_wac *wacom) wacom 1485 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1490 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, WACOM_POWER_SUPPLY_STATUS_AUTO, wacom 1494 drivers/hid/wacom_wac.c static int wacom_intuos_pro2_bt_irq(struct wacom_wac *wacom, size_t len) wacom 1496 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1499 drivers/hid/wacom_wac.c dev_dbg(wacom->pen_input->dev.parent, wacom 1504 drivers/hid/wacom_wac.c wacom_intuos_pro2_bt_pen(wacom); wacom 1505 drivers/hid/wacom_wac.c if (wacom->features.type == INTUOSP2_BT || wacom 1506 drivers/hid/wacom_wac.c wacom->features.type == INTUOSP2S_BT) { wacom 1507 drivers/hid/wacom_wac.c wacom_intuos_pro2_bt_touch(wacom); wacom 1508 drivers/hid/wacom_wac.c wacom_intuos_pro2_bt_pad(wacom); wacom 1509 drivers/hid/wacom_wac.c wacom_intuos_pro2_bt_battery(wacom); wacom 1511 drivers/hid/wacom_wac.c wacom_intuos_gen3_bt_pad(wacom); wacom 1512 drivers/hid/wacom_wac.c wacom_intuos_gen3_bt_battery(wacom); wacom 1517 drivers/hid/wacom_wac.c static int wacom_24hdt_irq(struct wacom_wac *wacom) wacom 1519 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 1520 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1528 drivers/hid/wacom_wac.c if (wacom->shared->has_mute_touch_switch && wacom 1529 drivers/hid/wacom_wac.c !wacom->shared->is_touch_on) { wacom 1530 drivers/hid/wacom_wac.c if (!wacom->shared->touch_down) wacom 1534 drivers/hid/wacom_wac.c if (wacom->features.type == WACOM_27QHDT) { wacom 1546 drivers/hid/wacom_wac.c wacom->num_contacts_left = current_num_contacts; wacom 1548 drivers/hid/wacom_wac.c contacts_to_send = min(num_contacts_left, wacom->num_contacts_left); wacom 1552 drivers/hid/wacom_wac.c bool touch = (data[offset] & 0x1) && report_touch_events(wacom); wacom 1567 drivers/hid/wacom_wac.c if (wacom->features.type != WACOM_27QHDT) { wacom 1583 drivers/hid/wacom_wac.c wacom->num_contacts_left -= contacts_to_send; wacom 1584 drivers/hid/wacom_wac.c if (wacom->num_contacts_left <= 0) { wacom 1585 drivers/hid/wacom_wac.c wacom->num_contacts_left = 0; wacom 1586 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 1591 drivers/hid/wacom_wac.c static int wacom_mt_touch(struct wacom_wac *wacom) wacom 1593 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 1594 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1601 drivers/hid/wacom_wac.c if (wacom->features.type == MTTPC || wacom->features.type == MTTPC_B) wacom 1609 drivers/hid/wacom_wac.c wacom->num_contacts_left = current_num_contacts; wacom 1612 drivers/hid/wacom_wac.c contacts_to_send = min(5, wacom->num_contacts_left); wacom 1616 drivers/hid/wacom_wac.c bool touch = (data[offset] & 0x1) && report_touch_events(wacom); wacom 1634 drivers/hid/wacom_wac.c wacom->num_contacts_left -= contacts_to_send; wacom 1635 drivers/hid/wacom_wac.c if (wacom->num_contacts_left <= 0) { wacom 1636 drivers/hid/wacom_wac.c wacom->num_contacts_left = 0; wacom 1637 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 1642 drivers/hid/wacom_wac.c static int wacom_tpc_mt_touch(struct wacom_wac *wacom) wacom 1644 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 1645 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1650 drivers/hid/wacom_wac.c bool touch = p && report_touch_events(wacom); wacom 1665 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 1670 drivers/hid/wacom_wac.c static int wacom_tpc_single_touch(struct wacom_wac *wacom, size_t len) wacom 1672 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1673 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 1674 drivers/hid/wacom_wac.c bool prox = report_touch_events(wacom); wacom 1677 drivers/hid/wacom_wac.c if (wacom->features.touch_max > 1 || len > WACOM_PKGLEN_TPC2FG) wacom 1701 drivers/hid/wacom_wac.c wacom->shared->touch_down = prox; wacom 1706 drivers/hid/wacom_wac.c static int wacom_tpc_pen(struct wacom_wac *wacom) wacom 1708 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1709 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 1712 drivers/hid/wacom_wac.c if (!wacom->shared->stylus_in_proximity) /* first in prox */ wacom 1714 drivers/hid/wacom_wac.c wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; wacom 1717 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = prox; wacom 1722 drivers/hid/wacom_wac.c if (!delay_pen_events(wacom)) { wacom 1729 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], prox); wacom 1736 drivers/hid/wacom_wac.c static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) wacom 1738 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 1740 drivers/hid/wacom_wac.c if (wacom->pen_input) { wacom 1741 drivers/hid/wacom_wac.c dev_dbg(wacom->pen_input->dev.parent, wacom 1746 drivers/hid/wacom_wac.c return wacom_tpc_pen(wacom); wacom 1748 drivers/hid/wacom_wac.c else if (wacom->touch_input) { wacom 1749 drivers/hid/wacom_wac.c dev_dbg(wacom->touch_input->dev.parent, wacom 1754 drivers/hid/wacom_wac.c return wacom_tpc_single_touch(wacom, len); wacom 1757 drivers/hid/wacom_wac.c return wacom_tpc_mt_touch(wacom); wacom 1765 drivers/hid/wacom_wac.c return wacom_tpc_single_touch(wacom, len); wacom 1769 drivers/hid/wacom_wac.c return wacom_mt_touch(wacom); wacom 1839 drivers/hid/wacom_wac.c struct wacom *wacom = input_get_drvdata(input); wacom 1840 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 1886 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1887 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 1903 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1904 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 1943 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1944 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 1962 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 1963 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2069 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2070 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2143 drivers/hid/wacom_wac.c wacom_schedule_work(&wacom->wacom_wac, WACOM_WORKER_MODE_CHANGE); wacom 2148 drivers/hid/wacom_wac.c for (i = 0; i < wacom->led.count; i++) wacom 2149 drivers/hid/wacom_wac.c wacom_update_led(wacom, features->numbered_buttons, wacom 2167 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2168 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2176 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2177 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2193 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2194 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2272 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2273 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2400 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2401 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2410 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2411 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2476 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2477 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2572 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2573 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2575 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 2616 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2617 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2667 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2668 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2692 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2693 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2713 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2715 drivers/hid/wacom_wac.c if (wacom->wacom_wac.features.type != HID_GENERIC) wacom 2724 drivers/hid/wacom_wac.c else if (WACOM_PAD_FIELD(field) && wacom->wacom_wac.pad_input) wacom 2726 drivers/hid/wacom_wac.c else if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input) wacom 2728 drivers/hid/wacom_wac.c else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input) wacom 2762 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2776 drivers/hid/wacom_wac.c if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input) wacom 2778 drivers/hid/wacom_wac.c else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input) wacom 2786 drivers/hid/wacom_wac.c struct wacom *wacom = hid_get_drvdata(hdev); wacom 2787 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 2812 drivers/hid/wacom_wac.c if (pad_in_hid_field && wacom->wacom_wac.pad_input) wacom 2814 drivers/hid/wacom_wac.c if (pen_in_hid_field && wacom->wacom_wac.pen_input) wacom 2816 drivers/hid/wacom_wac.c if (finger_in_hid_field && wacom->wacom_wac.touch_input) wacom 2832 drivers/hid/wacom_wac.c if (true_pad && wacom->wacom_wac.pad_input) wacom 2836 drivers/hid/wacom_wac.c static int wacom_bpt_touch(struct wacom_wac *wacom) wacom 2838 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 2839 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 2840 drivers/hid/wacom_wac.c struct input_dev *pad_input = wacom->pad_input; wacom 2841 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 2849 drivers/hid/wacom_wac.c bool touch = report_touch_events(wacom) wacom 2872 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 2877 drivers/hid/wacom_wac.c static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data) wacom 2879 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 2880 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 2887 drivers/hid/wacom_wac.c touch = touch && report_touch_events(wacom); wacom 2920 drivers/hid/wacom_wac.c static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data) wacom 2922 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pad_input; wacom 2923 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 2936 drivers/hid/wacom_wac.c static int wacom_bpt3_touch(struct wacom_wac *wacom) wacom 2938 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 2951 drivers/hid/wacom_wac.c wacom_bpt3_touch_msg(wacom, data + offset); wacom 2954 drivers/hid/wacom_wac.c wacom_bpt3_button_msg(wacom, data + offset); wacom 2959 drivers/hid/wacom_wac.c if (wacom->touch_input && touch_changed) { wacom 2960 drivers/hid/wacom_wac.c input_mt_sync_frame(wacom->touch_input); wacom 2961 drivers/hid/wacom_wac.c wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); wacom 2967 drivers/hid/wacom_wac.c static int wacom_bpt_pen(struct wacom_wac *wacom) wacom 2969 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 2970 drivers/hid/wacom_wac.c struct input_dev *input = wacom->pen_input; wacom 2971 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 2983 drivers/hid/wacom_wac.c wacom->shared->stylus_in_proximity = range; wacom 2984 drivers/hid/wacom_wac.c if (delay_pen_events(wacom)) wacom 2998 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_RUBBER; wacom 2999 drivers/hid/wacom_wac.c wacom->id[0] = ERASER_DEVICE_ID; wacom 3001 drivers/hid/wacom_wac.c wacom->tool[0] = BTN_TOOL_PEN; wacom 3002 drivers/hid/wacom_wac.c wacom->id[0] = STYLUS_DEVICE_ID; wacom 3004 drivers/hid/wacom_wac.c wacom->reporting_data = true; wacom 3016 drivers/hid/wacom_wac.c wacom->id[0] = 0; wacom 3019 drivers/hid/wacom_wac.c if (wacom->reporting_data) { wacom 3031 drivers/hid/wacom_wac.c input_report_key(input, wacom->tool[0], range); /* PEN or RUBBER */ wacom 3032 drivers/hid/wacom_wac.c input_report_abs(input, ABS_MISC, wacom->id[0]); /* TOOL ID */ wacom 3036 drivers/hid/wacom_wac.c wacom->reporting_data = false; wacom 3042 drivers/hid/wacom_wac.c static int wacom_bpt_irq(struct wacom_wac *wacom, size_t len) wacom 3044 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->features; wacom 3048 drivers/hid/wacom_wac.c return wacom_intuos_irq(wacom); wacom 3050 drivers/hid/wacom_wac.c return wacom_bpt_touch(wacom); wacom 3052 drivers/hid/wacom_wac.c return wacom_bpt3_touch(wacom); wacom 3054 drivers/hid/wacom_wac.c return wacom_bpt_pen(wacom); wacom 3059 drivers/hid/wacom_wac.c static void wacom_bamboo_pad_pen_event(struct wacom_wac *wacom, wacom 3079 drivers/hid/wacom_wac.c hid_input_report(wacom->shared->pen, HID_INPUT_REPORT, data, wacom 3085 drivers/hid/wacom_wac.c static int wacom_bamboo_pad_touch_event(struct wacom_wac *wacom, wacom 3088 drivers/hid/wacom_wac.c struct input_dev *input = wacom->touch_input; wacom 3096 drivers/hid/wacom_wac.c for (id = 0; id < wacom->features.touch_max; id++) { wacom 3098 drivers/hid/wacom_wac.c report_touch_events(wacom); wacom 3120 drivers/hid/wacom_wac.c wacom->shared->touch_down = !!prefix && report_touch_events(wacom); wacom 3125 drivers/hid/wacom_wac.c static int wacom_bamboo_pad_irq(struct wacom_wac *wacom, size_t len) wacom 3127 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 3135 drivers/hid/wacom_wac.c wacom_bamboo_pad_pen_event(wacom, &data[1]); wacom 3138 drivers/hid/wacom_wac.c return wacom_bamboo_pad_touch_event(wacom, &data[9]); wacom 3143 drivers/hid/wacom_wac.c static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len) wacom 3145 drivers/hid/wacom_wac.c unsigned char *data = wacom->data; wacom 3155 drivers/hid/wacom_wac.c if ((wacom->shared->type == INTUOSHT || wacom 3156 drivers/hid/wacom_wac.c wacom->shared->type == INTUOSHT2) && wacom 3157 drivers/hid/wacom_wac.c wacom->shared->touch_input && wacom 3158 drivers/hid/wacom_wac.c wacom->shared->touch_max) { wacom 3159 drivers/hid/wacom_wac.c input_report_switch(wacom->shared->touch_input, wacom 3161 drivers/hid/wacom_wac.c input_sync(wacom->shared->touch_input); wacom 3167 drivers/hid/wacom_wac.c if (wacom->pid != pid) { wacom 3168 drivers/hid/wacom_wac.c wacom->pid = pid; wacom 3169 drivers/hid/wacom_wac.c wacom_schedule_work(wacom, WACOM_WORKER_WIRELESS); wacom 3172 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, WACOM_POWER_SUPPLY_STATUS_AUTO, wacom 3175 drivers/hid/wacom_wac.c } else if (wacom->pid != 0) { wacom 3177 drivers/hid/wacom_wac.c wacom->pid = 0; wacom 3178 drivers/hid/wacom_wac.c wacom_schedule_work(wacom, WACOM_WORKER_WIRELESS); wacom 3179 drivers/hid/wacom_wac.c wacom_notify_battery(wacom, POWER_SUPPLY_STATUS_UNKNOWN, 0, 0, 0, 0); wacom 3187 drivers/hid/wacom_wac.c struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); wacom 3210 drivers/hid/wacom_wac.c if (!wacom->battery.battery && wacom 3217 drivers/hid/wacom_wac.c wacom->battery.battery) { wacom 3412 drivers/hid/wacom_wac.c void wacom_setup_device_quirks(struct wacom *wacom) wacom 3414 drivers/hid/wacom_wac.c struct wacom_wac *wacom_wac = &wacom->wacom_wac; wacom 3415 drivers/hid/wacom_wac.c struct wacom_features *features = &wacom->wacom_wac.features; wacom 3524 drivers/hid/wacom_wac.c if (wacom->hdev->bus == BUS_BLUETOOTH) wacom 3549 drivers/hid/wacom_wac.c if (wacom->hdev->product == 0x382 || wacom->hdev->product == 0x37d) { wacom 3896 drivers/hid/wacom_wac.c static void wacom_24hd_update_leds(struct wacom *wacom, int mask, int group) wacom 3911 drivers/hid/wacom_wac.c led = wacom_led_find(wacom, group, i); wacom 3913 drivers/hid/wacom_wac.c hid_err(wacom->hdev, "can't find LED %d in group %d\n", wacom 3926 drivers/hid/wacom_wac.c static bool wacom_is_led_toggled(struct wacom *wacom, int button_count, wacom 3936 drivers/hid/wacom_wac.c if (wacom->wacom_wac.features.type == WACOM_21UX2) wacom 3939 drivers/hid/wacom_wac.c group_button = group * (button_count/wacom->led.count); wacom 3941 drivers/hid/wacom_wac.c if (wacom->wacom_wac.features.type == INTUOSP2_BT) wacom 3947 drivers/hid/wacom_wac.c static void wacom_update_led(struct wacom *wacom, int button_count, int mask, wacom 3954 drivers/hid/wacom_wac.c if (wacom->wacom_wac.features.type == WACOM_24HD) wacom 3955 drivers/hid/wacom_wac.c return wacom_24hd_update_leds(wacom, mask, group); wacom 3957 drivers/hid/wacom_wac.c pressed = wacom_is_led_toggled(wacom, button_count, mask, group); wacom 3958 drivers/hid/wacom_wac.c cur = wacom->led.groups[group].select; wacom 3960 drivers/hid/wacom_wac.c led = wacom_led_find(wacom, group, cur); wacom 3962 drivers/hid/wacom_wac.c hid_err(wacom->hdev, "can't find current LED %d in group %d\n", wacom 3975 drivers/hid/wacom_wac.c next_led = wacom_led_next(wacom, led); wacom 3977 drivers/hid/wacom_wac.c hid_err(wacom->hdev, "can't find next LED in group %d\n", wacom 3992 drivers/hid/wacom_wac.c struct wacom *wacom = input_get_drvdata(input_dev); wacom 3995 drivers/hid/wacom_wac.c for (i = 0; i < wacom->led.count; i++) wacom 3996 drivers/hid/wacom_wac.c wacom_update_led(wacom, button_count, mask, i); wacom 188 drivers/input/tablet/wacom_serial4.c static void wacom_handle_model_response(struct wacom *wacom) wacom 193 drivers/input/tablet/wacom_serial4.c p = strrchr(wacom->data, 'V'); wacom 199 drivers/input/tablet/wacom_serial4.c switch (wacom->data[2] << 8 | wacom->data[3]) { wacom 202 drivers/input/tablet/wacom_serial4.c if ((wacom->data[2] << 8 | wacom->data[3]) == MODEL_CINTIQ) { wacom 203 drivers/input/tablet/wacom_serial4.c wacom->dev->name = "Wacom Cintiq"; wacom 204 drivers/input/tablet/wacom_serial4.c wacom->dev->id.version = MODEL_CINTIQ; wacom 206 drivers/input/tablet/wacom_serial4.c wacom->dev->name = "Wacom Cintiq II"; wacom 207 drivers/input/tablet/wacom_serial4.c wacom->dev->id.version = MODEL_CINTIQ2; wacom 209 drivers/input/tablet/wacom_serial4.c wacom->res_x = 508; wacom 210 drivers/input/tablet/wacom_serial4.c wacom->res_y = 508; wacom 212 drivers/input/tablet/wacom_serial4.c switch (wacom->data[5] << 8 | wacom->data[6]) { wacom 214 drivers/input/tablet/wacom_serial4.c wacom->res_x = 2540; wacom 215 drivers/input/tablet/wacom_serial4.c wacom->res_y = 2540; wacom 219 drivers/input/tablet/wacom_serial4.c wacom->extra_z_bits = 2; wacom 222 drivers/input/tablet/wacom_serial4.c wacom->flags = F_COVERS_SCREEN; wacom 226 drivers/input/tablet/wacom_serial4.c wacom->dev->name = "Wacom Penpartner"; wacom 227 drivers/input/tablet/wacom_serial4.c wacom->dev->id.version = MODEL_PENPARTNER; wacom 228 drivers/input/tablet/wacom_serial4.c wacom->res_x = 1000; wacom 229 drivers/input/tablet/wacom_serial4.c wacom->res_y = 1000; wacom 233 drivers/input/tablet/wacom_serial4.c wacom->dev->name = "Wacom Graphire"; wacom 234 drivers/input/tablet/wacom_serial4.c wacom->dev->id.version = MODEL_GRAPHIRE; wacom 235 drivers/input/tablet/wacom_serial4.c wacom->res_x = 1016; wacom 236 drivers/input/tablet/wacom_serial4.c wacom->res_y = 1016; wacom 237 drivers/input/tablet/wacom_serial4.c wacom->max_x = 5103; wacom 238 drivers/input/tablet/wacom_serial4.c wacom->max_y = 3711; wacom 239 drivers/input/tablet/wacom_serial4.c wacom->extra_z_bits = 2; wacom 240 drivers/input/tablet/wacom_serial4.c wacom->eraser_mask = 0x08; wacom 241 drivers/input/tablet/wacom_serial4.c wacom->flags = F_HAS_STYLUS2 | F_HAS_SCROLLWHEEL; wacom 246 drivers/input/tablet/wacom_serial4.c wacom->dev->name = "Wacom Digitizer II"; wacom 247 drivers/input/tablet/wacom_serial4.c wacom->dev->id.version = MODEL_DIGITIZER_II; wacom 249 drivers/input/tablet/wacom_serial4.c wacom->extra_z_bits = 0; /* UNTESTED */ wacom 253 drivers/input/tablet/wacom_serial4.c dev_err(&wacom->dev->dev, "Unsupported Wacom model %s\n", wacom 254 drivers/input/tablet/wacom_serial4.c wacom->data); wacom 255 drivers/input/tablet/wacom_serial4.c wacom->result = -ENODEV; wacom 259 drivers/input/tablet/wacom_serial4.c dev_info(&wacom->dev->dev, "%s tablet, version %u.%u\n", wacom 260 drivers/input/tablet/wacom_serial4.c wacom->dev->name, major_v, minor_v); wacom 263 drivers/input/tablet/wacom_serial4.c static void wacom_handle_configuration_response(struct wacom *wacom) wacom 267 drivers/input/tablet/wacom_serial4.c dev_dbg(&wacom->dev->dev, "Configuration string: %s\n", wacom->data); wacom 268 drivers/input/tablet/wacom_serial4.c r = sscanf(wacom->data, "~R%x,%u,%u,%u,%u", &skip, &skip, &skip, wacom 269 drivers/input/tablet/wacom_serial4.c &wacom->res_x, &wacom->res_y); wacom 271 drivers/input/tablet/wacom_serial4.c dev_warn(&wacom->dev->dev, "could not get resolution\n"); wacom 274 drivers/input/tablet/wacom_serial4.c static void wacom_handle_coordinates_response(struct wacom *wacom) wacom 278 drivers/input/tablet/wacom_serial4.c dev_dbg(&wacom->dev->dev, "Coordinates string: %s\n", wacom->data); wacom 279 drivers/input/tablet/wacom_serial4.c r = sscanf(wacom->data, "~C%u,%u", &wacom->max_x, &wacom->max_y); wacom 281 drivers/input/tablet/wacom_serial4.c dev_warn(&wacom->dev->dev, "could not get max coordinates\n"); wacom 284 drivers/input/tablet/wacom_serial4.c static void wacom_handle_response(struct wacom *wacom) wacom 286 drivers/input/tablet/wacom_serial4.c if (wacom->data[0] != '~' || wacom->data[1] != wacom->expect) { wacom 287 drivers/input/tablet/wacom_serial4.c dev_err(&wacom->dev->dev, wacom 288 drivers/input/tablet/wacom_serial4.c "Wacom got an unexpected response: %s\n", wacom->data); wacom 289 drivers/input/tablet/wacom_serial4.c wacom->result = -EIO; wacom 291 drivers/input/tablet/wacom_serial4.c wacom->result = 0; wacom 293 drivers/input/tablet/wacom_serial4.c switch (wacom->data[1]) { wacom 295 drivers/input/tablet/wacom_serial4.c wacom_handle_model_response(wacom); wacom 298 drivers/input/tablet/wacom_serial4.c wacom_handle_configuration_response(wacom); wacom 301 drivers/input/tablet/wacom_serial4.c wacom_handle_coordinates_response(wacom); wacom 306 drivers/input/tablet/wacom_serial4.c complete(&wacom->cmd_done); wacom 309 drivers/input/tablet/wacom_serial4.c static void wacom_handle_packet(struct wacom *wacom) wacom 315 drivers/input/tablet/wacom_serial4.c in_proximity_p = wacom->data[0] & 0x40; wacom 316 drivers/input/tablet/wacom_serial4.c stylus_p = wacom->data[0] & 0x20; wacom 317 drivers/input/tablet/wacom_serial4.c button = (wacom->data[3] & 0x78) >> 3; wacom 318 drivers/input/tablet/wacom_serial4.c x = (wacom->data[0] & 3) << 14 | wacom->data[1]<<7 | wacom->data[2]; wacom 319 drivers/input/tablet/wacom_serial4.c y = (wacom->data[3] & 3) << 14 | wacom->data[4]<<7 | wacom->data[5]; wacom 322 drivers/input/tablet/wacom_serial4.c z = wacom->data[6] & 0x7f; wacom 323 drivers/input/tablet/wacom_serial4.c if (wacom->extra_z_bits >= 1) wacom 324 drivers/input/tablet/wacom_serial4.c z = z << 1 | (wacom->data[3] & 0x4) >> 2; wacom 325 drivers/input/tablet/wacom_serial4.c if (wacom->extra_z_bits > 1) wacom 326 drivers/input/tablet/wacom_serial4.c z = z << 1 | (wacom->data[0] & 0x4) >> 2; wacom 327 drivers/input/tablet/wacom_serial4.c z = z ^ (0x40 << wacom->extra_z_bits); wacom 333 drivers/input/tablet/wacom_serial4.c tool = (button & wacom->eraser_mask) ? ERASER : STYLUS; wacom 337 drivers/input/tablet/wacom_serial4.c if (tool != wacom->tool && wacom->tool != 0) { wacom 338 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, tools[wacom->tool].input_id, 0); wacom 339 drivers/input/tablet/wacom_serial4.c input_sync(wacom->dev); wacom 341 drivers/input/tablet/wacom_serial4.c wacom->tool = tool; wacom 343 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, tools[tool].input_id, in_proximity_p); wacom 344 drivers/input/tablet/wacom_serial4.c input_report_abs(wacom->dev, ABS_MISC, wacom 346 drivers/input/tablet/wacom_serial4.c input_report_abs(wacom->dev, ABS_X, x); wacom 347 drivers/input/tablet/wacom_serial4.c input_report_abs(wacom->dev, ABS_Y, y); wacom 348 drivers/input/tablet/wacom_serial4.c input_report_abs(wacom->dev, ABS_PRESSURE, z); wacom 350 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_TOUCH, button & 1); wacom 351 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_STYLUS, button & 2); wacom 352 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_STYLUS2, button & 4); wacom 354 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_LEFT, button & 1); wacom 355 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_RIGHT, button & 2); wacom 356 drivers/input/tablet/wacom_serial4.c input_report_key(wacom->dev, BTN_MIDDLE, button & 4); wacom 358 drivers/input/tablet/wacom_serial4.c z = (wacom->data[6] & 0x30) >> 4; wacom 359 drivers/input/tablet/wacom_serial4.c if (wacom->data[6] & 0x40) wacom 361 drivers/input/tablet/wacom_serial4.c input_report_rel(wacom->dev, REL_WHEEL, z); wacom 363 drivers/input/tablet/wacom_serial4.c input_sync(wacom->dev); wacom 366 drivers/input/tablet/wacom_serial4.c static void wacom_clear_data_buf(struct wacom *wacom) wacom 368 drivers/input/tablet/wacom_serial4.c memset(wacom->data, 0, DATA_SIZE); wacom 369 drivers/input/tablet/wacom_serial4.c wacom->idx = 0; wacom 375 drivers/input/tablet/wacom_serial4.c struct wacom *wacom = serio_get_drvdata(serio); wacom 378 drivers/input/tablet/wacom_serial4.c wacom->idx = 0; wacom 389 drivers/input/tablet/wacom_serial4.c if (data == '\r' && !(wacom->data[0] & 0x80)) { wacom 390 drivers/input/tablet/wacom_serial4.c wacom_handle_response(wacom); wacom 391 drivers/input/tablet/wacom_serial4.c wacom_clear_data_buf(wacom); wacom 396 drivers/input/tablet/wacom_serial4.c if (wacom->idx > (DATA_SIZE - 2)) { wacom 397 drivers/input/tablet/wacom_serial4.c dev_dbg(&wacom->dev->dev, wacom 398 drivers/input/tablet/wacom_serial4.c "throwing away %d bytes of garbage\n", wacom->idx); wacom 399 drivers/input/tablet/wacom_serial4.c wacom_clear_data_buf(wacom); wacom 401 drivers/input/tablet/wacom_serial4.c wacom->data[wacom->idx++] = data; wacom 403 drivers/input/tablet/wacom_serial4.c if (wacom->idx == PACKET_LENGTH && (wacom->data[0] & 0x80)) { wacom 404 drivers/input/tablet/wacom_serial4.c wacom_handle_packet(wacom); wacom 405 drivers/input/tablet/wacom_serial4.c wacom_clear_data_buf(wacom); wacom 413 drivers/input/tablet/wacom_serial4.c struct wacom *wacom = serio_get_drvdata(serio); wacom 417 drivers/input/tablet/wacom_serial4.c input_unregister_device(wacom->dev); wacom 418 drivers/input/tablet/wacom_serial4.c kfree(wacom); wacom 431 drivers/input/tablet/wacom_serial4.c static int wacom_send_setup_string(struct wacom *wacom, struct serio *serio) wacom 435 drivers/input/tablet/wacom_serial4.c switch (wacom->dev->id.version) { wacom 464 drivers/input/tablet/wacom_serial4.c static int wacom_send_and_wait(struct wacom *wacom, struct serio *serio, wacom 470 drivers/input/tablet/wacom_serial4.c wacom->expect = cmd[1]; wacom 471 drivers/input/tablet/wacom_serial4.c init_completion(&wacom->cmd_done); wacom 477 drivers/input/tablet/wacom_serial4.c u = wait_for_completion_timeout(&wacom->cmd_done, HZ); wacom 480 drivers/input/tablet/wacom_serial4.c wacom_handle_response(wacom); wacom 483 drivers/input/tablet/wacom_serial4.c wacom->expect = 0; wacom 484 drivers/input/tablet/wacom_serial4.c return wacom->result; wacom 487 drivers/input/tablet/wacom_serial4.c static int wacom_setup(struct wacom *wacom, struct serio *serio) wacom 494 drivers/input/tablet/wacom_serial4.c err = wacom_send_and_wait(wacom, serio, REQUEST_MODEL_AND_ROM_VERSION, wacom 499 drivers/input/tablet/wacom_serial4.c if (!(wacom->res_x && wacom->res_y)) { wacom 500 drivers/input/tablet/wacom_serial4.c err = wacom_send_and_wait(wacom, serio, wacom 507 drivers/input/tablet/wacom_serial4.c if (!(wacom->max_x && wacom->max_y)) { wacom 508 drivers/input/tablet/wacom_serial4.c err = wacom_send_and_wait(wacom, serio, wacom 515 drivers/input/tablet/wacom_serial4.c return wacom_send_setup_string(wacom, serio); wacom 520 drivers/input/tablet/wacom_serial4.c struct wacom *wacom; wacom 524 drivers/input/tablet/wacom_serial4.c wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); wacom 526 drivers/input/tablet/wacom_serial4.c if (!wacom || !input_dev) wacom 529 drivers/input/tablet/wacom_serial4.c wacom->dev = input_dev; wacom 530 drivers/input/tablet/wacom_serial4.c wacom->extra_z_bits = 1; wacom 531 drivers/input/tablet/wacom_serial4.c wacom->eraser_mask = 0x04; wacom 532 drivers/input/tablet/wacom_serial4.c wacom->tool = wacom->idx = 0; wacom 533 drivers/input/tablet/wacom_serial4.c snprintf(wacom->phys, sizeof(wacom->phys), "%s/input0", serio->phys); wacom 534 drivers/input/tablet/wacom_serial4.c input_dev->phys = wacom->phys; wacom 552 drivers/input/tablet/wacom_serial4.c serio_set_drvdata(serio, wacom); wacom 558 drivers/input/tablet/wacom_serial4.c err = wacom_setup(wacom, serio); wacom 563 drivers/input/tablet/wacom_serial4.c if (!(wacom->flags & F_COVERS_SCREEN)) wacom 566 drivers/input/tablet/wacom_serial4.c if (wacom->flags & F_HAS_STYLUS2) wacom 569 drivers/input/tablet/wacom_serial4.c if (wacom->flags & F_HAS_SCROLLWHEEL) wacom 572 drivers/input/tablet/wacom_serial4.c input_abs_set_res(wacom->dev, ABS_X, wacom->res_x); wacom 573 drivers/input/tablet/wacom_serial4.c input_abs_set_res(wacom->dev, ABS_Y, wacom->res_y); wacom 574 drivers/input/tablet/wacom_serial4.c input_set_abs_params(wacom->dev, ABS_X, 0, wacom->max_x, 0, 0); wacom 575 drivers/input/tablet/wacom_serial4.c input_set_abs_params(wacom->dev, ABS_Y, 0, wacom->max_y, 0, 0); wacom 576 drivers/input/tablet/wacom_serial4.c input_set_abs_params(wacom->dev, ABS_PRESSURE, -1, wacom 577 drivers/input/tablet/wacom_serial4.c (1 << (7 + wacom->extra_z_bits)) - 1, 0, 0); wacom 579 drivers/input/tablet/wacom_serial4.c err = input_register_device(wacom->dev); wacom 590 drivers/input/tablet/wacom_serial4.c kfree(wacom);