Lines Matching refs:wacom

71 	struct wacom *wacom = hid_get_drvdata(hdev);  in wacom_raw_event()  local
76 memcpy(wacom->wacom_wac.data, raw_data, size); in wacom_raw_event()
78 wacom_wac_irq(&wacom->wacom_wac, size); in wacom_raw_event()
85 struct wacom *wacom = input_get_drvdata(dev); in wacom_open() local
87 return hid_hw_open(wacom->hdev); in wacom_open()
92 struct wacom *wacom = input_get_drvdata(dev); in wacom_close() local
94 hid_hw_close(wacom->hdev); in wacom_close()
116 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_feature_mapping() local
117 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_feature_mapping()
118 struct hid_data *hid_data = &wacom->wacom_wac.hid_data; in wacom_feature_mapping()
193 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_usage_mapping() local
194 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_usage_mapping()
256 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_post_parse_hid() local
257 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_post_parse_hid()
308 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_hid_set_device_mode() local
309 struct hid_data *hid_data = &wacom->wacom_wac.hid_data; in wacom_hid_set_device_mode()
354 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_bt_query_tablet_data() local
373 wacom->wacom_wac.bt_high_speed = speed; in wacom_bt_query_tablet_data()
387 wacom->wacom_wac.bt_features &= ~0x20; in wacom_bt_query_tablet_data()
389 wacom->wacom_wac.bt_features |= 0x20; in wacom_bt_query_tablet_data()
392 rep_data[1] = wacom->wacom_wac.bt_features; in wacom_bt_query_tablet_data()
397 wacom->wacom_wac.bt_high_speed = speed; in wacom_bt_query_tablet_data()
446 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_retrieve_hid_descriptor() local
447 struct usb_interface *intf = wacom->intf; in wacom_retrieve_hid_descriptor()
485 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_are_sibling() local
486 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_are_sibling()
524 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_add_shared_data() local
525 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_add_shared_data()
568 static void wacom_remove_shared_data(struct wacom *wacom) in wacom_remove_shared_data() argument
571 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_remove_shared_data()
577 if (wacom_wac->shared->touch == wacom->hdev) in wacom_remove_shared_data()
579 else if (wacom_wac->shared->pen == wacom->hdev) in wacom_remove_shared_data()
587 static int wacom_led_control(struct wacom *wacom) in wacom_led_control() argument
594 if (wacom->wacom_wac.pid) { /* wireless connected */ in wacom_led_control()
602 if (wacom->wacom_wac.features.type >= INTUOS5S && in wacom_led_control()
603 wacom->wacom_wac.features.type <= INTUOSPL) { in wacom_led_control()
609 int ring_led = wacom->led.select[0] & 0x03; in wacom_led_control()
610 int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03; in wacom_led_control()
615 if (wacom->wacom_wac.pid) { in wacom_led_control()
616 wacom_get_report(wacom->hdev, HID_FEATURE_REPORT, in wacom_led_control()
624 int led = wacom->led.select[0] | 0x4; in wacom_led_control()
626 if (wacom->wacom_wac.features.type == WACOM_21UX2 || in wacom_led_control()
627 wacom->wacom_wac.features.type == WACOM_24HD) in wacom_led_control()
628 led |= (wacom->led.select[1] << 4) | 0x40; in wacom_led_control()
632 buf[2] = wacom->led.llv; in wacom_led_control()
633 buf[3] = wacom->led.hlv; in wacom_led_control()
634 buf[4] = wacom->led.img_lum; in wacom_led_control()
637 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, buf_size, in wacom_led_control()
644 static int wacom_led_putimage(struct wacom *wacom, int button_id, u8 xfer_id, in wacom_led_putimage() argument
658 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, in wacom_led_putimage()
669 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, in wacom_led_putimage()
678 wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, in wacom_led_putimage()
690 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_led_select_store() local
698 mutex_lock(&wacom->lock); in wacom_led_select_store()
700 wacom->led.select[set_id] = id & 0x3; in wacom_led_select_store()
701 err = wacom_led_control(wacom); in wacom_led_select_store()
703 mutex_unlock(&wacom->lock); in wacom_led_select_store()
718 struct wacom *wacom = hid_get_drvdata(hdev); \
720 wacom->led.select[SET_ID]); \
729 static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest, in wacom_luminance_store() argument
739 mutex_lock(&wacom->lock); in wacom_luminance_store()
742 err = wacom_led_control(wacom); in wacom_luminance_store()
744 mutex_unlock(&wacom->lock); in wacom_luminance_store()
754 struct wacom *wacom = hid_get_drvdata(hdev); \
756 return wacom_luminance_store(wacom, &wacom->led.field, \
762 struct wacom *wacom = dev_get_drvdata(dev); \
763 return scnprintf(buf, PAGE_SIZE, "%d\n", wacom->led.field); \
777 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_button_image_store() local
793 mutex_lock(&wacom->lock); in wacom_button_image_store()
795 err = wacom_led_putimage(wacom, button_id, xfer_id, len, buf); in wacom_button_image_store()
797 mutex_unlock(&wacom->lock); in wacom_button_image_store()
863 static int wacom_initialize_leds(struct wacom *wacom) in wacom_initialize_leds() argument
867 if (!(wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD)) in wacom_initialize_leds()
871 switch (wacom->wacom_wac.features.type) { in wacom_initialize_leds()
876 wacom->led.select[0] = 0; in wacom_initialize_leds()
877 wacom->led.select[1] = 0; in wacom_initialize_leds()
878 wacom->led.llv = 10; in wacom_initialize_leds()
879 wacom->led.hlv = 20; in wacom_initialize_leds()
880 wacom->led.img_lum = 10; in wacom_initialize_leds()
881 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
887 wacom->led.select[0] = 0; in wacom_initialize_leds()
888 wacom->led.select[1] = 0; in wacom_initialize_leds()
889 wacom->led.llv = 0; in wacom_initialize_leds()
890 wacom->led.hlv = 0; in wacom_initialize_leds()
891 wacom->led.img_lum = 0; in wacom_initialize_leds()
893 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
903 wacom->led.select[0] = 0; in wacom_initialize_leds()
904 wacom->led.select[1] = 0; in wacom_initialize_leds()
905 wacom->led.llv = 32; in wacom_initialize_leds()
906 wacom->led.hlv = 0; in wacom_initialize_leds()
907 wacom->led.img_lum = 0; in wacom_initialize_leds()
909 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
918 hid_err(wacom->hdev, in wacom_initialize_leds()
922 wacom_led_control(wacom); in wacom_initialize_leds()
923 wacom->led_initialized = true; in wacom_initialize_leds()
928 static void wacom_destroy_leds(struct wacom *wacom) in wacom_destroy_leds() argument
930 if (!wacom->led_initialized) in wacom_destroy_leds()
933 if (!(wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD)) in wacom_destroy_leds()
936 wacom->led_initialized = false; in wacom_destroy_leds()
938 switch (wacom->wacom_wac.features.type) { in wacom_destroy_leds()
943 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
949 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
959 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
982 struct wacom *wacom = power_supply_get_drvdata(psy); in wacom_battery_get_property() local
987 val->intval = wacom->wacom_wac.bat_connected; in wacom_battery_get_property()
994 wacom->wacom_wac.battery_capacity; in wacom_battery_get_property()
997 if (wacom->wacom_wac.bat_charging) in wacom_battery_get_property()
999 else if (wacom->wacom_wac.battery_capacity == 100 && in wacom_battery_get_property()
1000 wacom->wacom_wac.ps_connected) in wacom_battery_get_property()
1002 else if (wacom->wacom_wac.ps_connected) in wacom_battery_get_property()
1019 struct wacom *wacom = power_supply_get_drvdata(psy); in wacom_ac_get_property() local
1026 val->intval = wacom->wacom_wac.ps_connected; in wacom_ac_get_property()
1038 static int wacom_initialize_battery(struct wacom *wacom) in wacom_initialize_battery() argument
1041 struct power_supply_config psy_cfg = { .drv_data = wacom, }; in wacom_initialize_battery()
1044 if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) { in wacom_initialize_battery()
1045 struct power_supply_desc *bat_desc = &wacom->battery_desc; in wacom_initialize_battery()
1046 struct power_supply_desc *ac_desc = &wacom->ac_desc; in wacom_initialize_battery()
1052 sprintf(wacom->wacom_wac.bat_name, "wacom_battery_%ld", n); in wacom_initialize_battery()
1053 bat_desc->name = wacom->wacom_wac.bat_name; in wacom_initialize_battery()
1060 sprintf(wacom->wacom_wac.ac_name, "wacom_ac_%ld", n); in wacom_initialize_battery()
1061 ac_desc->name = wacom->wacom_wac.ac_name; in wacom_initialize_battery()
1065 wacom->battery = power_supply_register(&wacom->hdev->dev, in wacom_initialize_battery()
1066 &wacom->battery_desc, &psy_cfg); in wacom_initialize_battery()
1067 if (IS_ERR(wacom->battery)) in wacom_initialize_battery()
1068 return PTR_ERR(wacom->battery); in wacom_initialize_battery()
1070 power_supply_powers(wacom->battery, &wacom->hdev->dev); in wacom_initialize_battery()
1072 wacom->ac = power_supply_register(&wacom->hdev->dev, in wacom_initialize_battery()
1073 &wacom->ac_desc, in wacom_initialize_battery()
1075 if (IS_ERR(wacom->ac)) { in wacom_initialize_battery()
1076 power_supply_unregister(wacom->battery); in wacom_initialize_battery()
1077 return PTR_ERR(wacom->ac); in wacom_initialize_battery()
1080 power_supply_powers(wacom->ac, &wacom->hdev->dev); in wacom_initialize_battery()
1086 static void wacom_destroy_battery(struct wacom *wacom) in wacom_destroy_battery() argument
1088 if (wacom->battery) { in wacom_destroy_battery()
1089 power_supply_unregister(wacom->battery); in wacom_destroy_battery()
1090 wacom->battery = NULL; in wacom_destroy_battery()
1091 power_supply_unregister(wacom->ac); in wacom_destroy_battery()
1092 wacom->ac = NULL; in wacom_destroy_battery()
1101 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_show_speed() local
1103 return snprintf(buf, PAGE_SIZE, "%i\n", wacom->wacom_wac.bt_high_speed); in wacom_show_speed()
1111 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_store_speed() local
1120 wacom_bt_query_tablet_data(hdev, new_speed, &wacom->wacom_wac.features); in wacom_store_speed()
1135 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_show_remote_mode() local
1138 mode = wacom->led.select[index]; in wacom_show_remote_mode()
1171 int wacom_remote_create_attr_group(struct wacom *wacom, __u32 serial, int index) in wacom_remote_create_attr_group() argument
1175 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_remote_create_attr_group()
1183 wacom->remote_group[index].name = buf; in wacom_remote_create_attr_group()
1185 error = sysfs_create_group(wacom->remote_dir, in wacom_remote_create_attr_group()
1186 &wacom->remote_group[index]); in wacom_remote_create_attr_group()
1188 hid_err(wacom->hdev, in wacom_remote_create_attr_group()
1190 kobject_put(wacom->remote_dir); in wacom_remote_create_attr_group()
1197 void wacom_remote_destroy_attr_group(struct wacom *wacom, __u32 serial) in wacom_remote_destroy_attr_group() argument
1199 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_remote_destroy_attr_group()
1208 wacom->led.select[i] = WACOM_STATUS_UNKNOWN; in wacom_remote_destroy_attr_group()
1209 if (wacom->remote_group[i].name) { in wacom_remote_destroy_attr_group()
1210 sysfs_remove_group(wacom->remote_dir, in wacom_remote_destroy_attr_group()
1211 &wacom->remote_group[i]); in wacom_remote_destroy_attr_group()
1212 kfree(wacom->remote_group[i].name); in wacom_remote_destroy_attr_group()
1213 wacom->remote_group[i].name = NULL; in wacom_remote_destroy_attr_group()
1219 static int wacom_cmd_unpair_remote(struct wacom *wacom, unsigned char selector) in wacom_cmd_unpair_remote() argument
1232 retval = wacom_set_report(wacom->hdev, HID_OUTPUT_REPORT, buf, in wacom_cmd_unpair_remote()
1246 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_store_unpair_remote() local
1252 hid_info(wacom->hdev, "remote: unrecognized unpair code: %s\n", in wacom_store_unpair_remote()
1257 mutex_lock(&wacom->lock); in wacom_store_unpair_remote()
1259 err = wacom_cmd_unpair_remote(wacom, selector); in wacom_store_unpair_remote()
1260 mutex_unlock(&wacom->lock); in wacom_store_unpair_remote()
1275 static int wacom_initialize_remote(struct wacom *wacom) in wacom_initialize_remote() argument
1278 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_initialize_remote()
1281 if (wacom->wacom_wac.features.type != REMOTE) in wacom_initialize_remote()
1284 wacom->remote_group[0] = remote0_serial_group; in wacom_initialize_remote()
1285 wacom->remote_group[1] = remote1_serial_group; in wacom_initialize_remote()
1286 wacom->remote_group[2] = remote2_serial_group; in wacom_initialize_remote()
1287 wacom->remote_group[3] = remote3_serial_group; in wacom_initialize_remote()
1288 wacom->remote_group[4] = remote4_serial_group; in wacom_initialize_remote()
1290 wacom->remote_dir = kobject_create_and_add("wacom_remote", in wacom_initialize_remote()
1291 &wacom->hdev->dev.kobj); in wacom_initialize_remote()
1292 if (!wacom->remote_dir) in wacom_initialize_remote()
1295 error = sysfs_create_files(wacom->remote_dir, remote_unpair_attrs); in wacom_initialize_remote()
1298 hid_err(wacom->hdev, in wacom_initialize_remote()
1304 wacom->led.select[i] = WACOM_STATUS_UNKNOWN; in wacom_initialize_remote()
1311 static struct input_dev *wacom_allocate_input(struct wacom *wacom) in wacom_allocate_input() argument
1314 struct hid_device *hdev = wacom->hdev; in wacom_allocate_input()
1315 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_allocate_input()
1331 input_set_drvdata(input_dev, wacom); in wacom_allocate_input()
1336 static void wacom_clean_inputs(struct wacom *wacom) in wacom_clean_inputs() argument
1338 if (wacom->wacom_wac.pen_input) { in wacom_clean_inputs()
1339 if (wacom->wacom_wac.pen_registered) in wacom_clean_inputs()
1340 input_unregister_device(wacom->wacom_wac.pen_input); in wacom_clean_inputs()
1342 input_free_device(wacom->wacom_wac.pen_input); in wacom_clean_inputs()
1344 if (wacom->wacom_wac.touch_input) { in wacom_clean_inputs()
1345 if (wacom->wacom_wac.touch_registered) in wacom_clean_inputs()
1346 input_unregister_device(wacom->wacom_wac.touch_input); in wacom_clean_inputs()
1348 input_free_device(wacom->wacom_wac.touch_input); in wacom_clean_inputs()
1350 if (wacom->wacom_wac.pad_input) { in wacom_clean_inputs()
1351 if (wacom->wacom_wac.pad_registered) in wacom_clean_inputs()
1352 input_unregister_device(wacom->wacom_wac.pad_input); in wacom_clean_inputs()
1354 input_free_device(wacom->wacom_wac.pad_input); in wacom_clean_inputs()
1356 if (wacom->remote_dir) in wacom_clean_inputs()
1357 kobject_put(wacom->remote_dir); in wacom_clean_inputs()
1358 wacom->wacom_wac.pen_input = NULL; in wacom_clean_inputs()
1359 wacom->wacom_wac.touch_input = NULL; in wacom_clean_inputs()
1360 wacom->wacom_wac.pad_input = NULL; in wacom_clean_inputs()
1361 wacom_destroy_leds(wacom); in wacom_clean_inputs()
1364 static int wacom_allocate_inputs(struct wacom *wacom) in wacom_allocate_inputs() argument
1366 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_allocate_inputs()
1368 wacom_wac->pen_input = wacom_allocate_input(wacom); in wacom_allocate_inputs()
1369 wacom_wac->touch_input = wacom_allocate_input(wacom); in wacom_allocate_inputs()
1370 wacom_wac->pad_input = wacom_allocate_input(wacom); in wacom_allocate_inputs()
1372 wacom_clean_inputs(wacom); in wacom_allocate_inputs()
1383 static int wacom_register_inputs(struct wacom *wacom) in wacom_register_inputs() argument
1386 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_register_inputs()
1434 error = wacom_initialize_leds(wacom); in wacom_register_inputs()
1438 error = wacom_initialize_remote(wacom); in wacom_register_inputs()
1446 wacom_destroy_leds(wacom); in wacom_register_inputs()
1500 struct wacom *wacom = container_of(work, struct wacom, work); in wacom_wireless_work() local
1501 struct usb_device *usbdev = wacom->usbdev; in wacom_wireless_work()
1502 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wireless_work()
1504 struct wacom *wacom1, *wacom2; in wacom_wireless_work()
1513 wacom_destroy_battery(wacom); in wacom_wireless_work()
1528 hid_info(wacom->hdev, "wireless tablet disconnected\n"); in wacom_wireless_work()
1533 hid_info(wacom->hdev, "wireless tablet connected with PID %x\n", in wacom_wireless_work()
1544 hid_info(wacom->hdev, "ignoring unknown PID.\n"); in wacom_wireless_work()
1602 error = wacom_initialize_battery(wacom); in wacom_wireless_work()
1617 struct wacom *wacom = container_of(work, struct wacom, work); in wacom_battery_work() local
1619 if ((wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && in wacom_battery_work()
1620 !wacom->battery) { in wacom_battery_work()
1621 wacom_initialize_battery(wacom); in wacom_battery_work()
1623 else if (!(wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && in wacom_battery_work()
1624 wacom->battery) { in wacom_battery_work()
1625 wacom_destroy_battery(wacom); in wacom_battery_work()
1646 static void wacom_update_name(struct wacom *wacom) in wacom_update_name() argument
1648 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_update_name()
1654 if (strstr(wacom->hdev->name, "Wacom") || in wacom_update_name()
1655 strstr(wacom->hdev->name, "wacom") || in wacom_update_name()
1656 strstr(wacom->hdev->name, "WACOM")) { in wacom_update_name()
1658 strlcpy(name, wacom->hdev->name, sizeof(name)); in wacom_update_name()
1674 "%s %X", features->name, wacom->hdev->product); in wacom_update_name()
1694 struct wacom *wacom; in wacom_probe() local
1708 wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); in wacom_probe()
1709 if (!wacom) in wacom_probe()
1712 hid_set_drvdata(hdev, wacom); in wacom_probe()
1713 wacom->hdev = hdev; in wacom_probe()
1722 wacom_wac = &wacom->wacom_wac; in wacom_probe()
1736 wacom->usbdev = dev; in wacom_probe()
1737 wacom->intf = intf; in wacom_probe()
1738 mutex_init(&wacom->lock); in wacom_probe()
1739 INIT_WORK(&wacom->work, wacom_wireless_work); in wacom_probe()
1741 error = wacom_allocate_inputs(wacom); in wacom_probe()
1765 wacom_setup_device_quirks(wacom); in wacom_probe()
1783 wacom_update_name(wacom); in wacom_probe()
1791 error = wacom_initialize_battery(wacom); in wacom_probe()
1796 error = wacom_register_inputs(wacom); in wacom_probe()
1851 wacom_clean_inputs(wacom); in wacom_probe()
1852 wacom_destroy_battery(wacom); in wacom_probe()
1854 wacom_remove_shared_data(wacom); in wacom_probe()
1856 wacom_clean_inputs(wacom); in wacom_probe()
1861 kfree(wacom); in wacom_probe()
1868 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_remove() local
1872 cancel_work_sync(&wacom->work); in wacom_remove()
1873 wacom_clean_inputs(wacom); in wacom_remove()
1876 wacom_destroy_battery(wacom); in wacom_remove()
1877 wacom_remove_shared_data(wacom); in wacom_remove()
1880 kfree(wacom); in wacom_remove()
1886 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_resume() local
1887 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_resume()
1889 mutex_lock(&wacom->lock); in wacom_resume()
1893 wacom_led_control(wacom); in wacom_resume()
1895 mutex_unlock(&wacom->lock); in wacom_resume()