Lines Matching refs:wacom

59 	struct wacom *wacom = hid_get_drvdata(hdev);  in wacom_raw_event()  local
64 memcpy(wacom->wacom_wac.data, raw_data, size); in wacom_raw_event()
66 wacom_wac_irq(&wacom->wacom_wac, size); in wacom_raw_event()
73 struct wacom *wacom = input_get_drvdata(dev); in wacom_open() local
75 return hid_hw_open(wacom->hdev); in wacom_open()
80 struct wacom *wacom = input_get_drvdata(dev); in wacom_close() local
82 hid_hw_close(wacom->hdev); in wacom_close()
104 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_feature_mapping() local
105 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_feature_mapping()
106 struct hid_data *hid_data = &wacom->wacom_wac.hid_data; in wacom_feature_mapping()
174 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_usage_mapping() local
175 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_usage_mapping()
234 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_post_parse_hid() local
235 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_post_parse_hid()
286 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_hid_set_device_mode() local
287 struct hid_data *hid_data = &wacom->wacom_wac.hid_data; in wacom_hid_set_device_mode()
332 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_bt_query_tablet_data() local
351 wacom->wacom_wac.bt_high_speed = speed; in wacom_bt_query_tablet_data()
365 wacom->wacom_wac.bt_features &= ~0x20; in wacom_bt_query_tablet_data()
367 wacom->wacom_wac.bt_features |= 0x20; in wacom_bt_query_tablet_data()
370 rep_data[1] = wacom->wacom_wac.bt_features; in wacom_bt_query_tablet_data()
375 wacom->wacom_wac.bt_high_speed = speed; in wacom_bt_query_tablet_data()
424 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_retrieve_hid_descriptor() local
425 struct usb_interface *intf = wacom->intf; in wacom_retrieve_hid_descriptor()
469 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_are_sibling() local
470 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_are_sibling()
508 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_add_shared_data() local
509 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_add_shared_data()
552 static void wacom_remove_shared_data(struct wacom *wacom) in wacom_remove_shared_data() argument
555 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_remove_shared_data()
561 if (wacom_wac->shared->touch == wacom->hdev) in wacom_remove_shared_data()
563 else if (wacom_wac->shared->pen == wacom->hdev) in wacom_remove_shared_data()
571 static int wacom_led_control(struct wacom *wacom) in wacom_led_control() argument
578 if (wacom->wacom_wac.pid) { /* wireless connected */ in wacom_led_control()
586 if (wacom->wacom_wac.features.type >= INTUOS5S && in wacom_led_control()
587 wacom->wacom_wac.features.type <= INTUOSPL) { in wacom_led_control()
593 int ring_led = wacom->led.select[0] & 0x03; in wacom_led_control()
594 int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03; in wacom_led_control()
599 if (wacom->wacom_wac.pid) { in wacom_led_control()
600 wacom_get_report(wacom->hdev, HID_FEATURE_REPORT, in wacom_led_control()
608 int led = wacom->led.select[0] | 0x4; in wacom_led_control()
610 if (wacom->wacom_wac.features.type == WACOM_21UX2 || in wacom_led_control()
611 wacom->wacom_wac.features.type == WACOM_24HD) in wacom_led_control()
612 led |= (wacom->led.select[1] << 4) | 0x40; in wacom_led_control()
616 buf[2] = wacom->led.llv; in wacom_led_control()
617 buf[3] = wacom->led.hlv; in wacom_led_control()
618 buf[4] = wacom->led.img_lum; in wacom_led_control()
621 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, buf_size, in wacom_led_control()
628 static int wacom_led_putimage(struct wacom *wacom, int button_id, u8 xfer_id, in wacom_led_putimage() argument
642 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, in wacom_led_putimage()
653 retval = wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, in wacom_led_putimage()
662 wacom_set_report(wacom->hdev, HID_FEATURE_REPORT, buf, 2, in wacom_led_putimage()
674 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_led_select_store() local
682 mutex_lock(&wacom->lock); in wacom_led_select_store()
684 wacom->led.select[set_id] = id & 0x3; in wacom_led_select_store()
685 err = wacom_led_control(wacom); in wacom_led_select_store()
687 mutex_unlock(&wacom->lock); in wacom_led_select_store()
702 struct wacom *wacom = hid_get_drvdata(hdev); \
704 wacom->led.select[SET_ID]); \
713 static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest, in wacom_luminance_store() argument
723 mutex_lock(&wacom->lock); in wacom_luminance_store()
726 err = wacom_led_control(wacom); in wacom_luminance_store()
728 mutex_unlock(&wacom->lock); in wacom_luminance_store()
738 struct wacom *wacom = hid_get_drvdata(hdev); \
740 return wacom_luminance_store(wacom, &wacom->led.field, \
746 struct wacom *wacom = dev_get_drvdata(dev); \
747 return scnprintf(buf, PAGE_SIZE, "%d\n", wacom->led.field); \
761 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_button_image_store() local
777 mutex_lock(&wacom->lock); in wacom_button_image_store()
779 err = wacom_led_putimage(wacom, button_id, xfer_id, len, buf); in wacom_button_image_store()
781 mutex_unlock(&wacom->lock); in wacom_button_image_store()
847 static int wacom_initialize_leds(struct wacom *wacom) in wacom_initialize_leds() argument
852 switch (wacom->wacom_wac.features.type) { in wacom_initialize_leds()
857 wacom->led.select[0] = 0; in wacom_initialize_leds()
858 wacom->led.select[1] = 0; in wacom_initialize_leds()
859 wacom->led.llv = 10; in wacom_initialize_leds()
860 wacom->led.hlv = 20; in wacom_initialize_leds()
861 wacom->led.img_lum = 10; in wacom_initialize_leds()
862 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
868 wacom->led.select[0] = 0; in wacom_initialize_leds()
869 wacom->led.select[1] = 0; in wacom_initialize_leds()
870 wacom->led.llv = 0; in wacom_initialize_leds()
871 wacom->led.hlv = 0; in wacom_initialize_leds()
872 wacom->led.img_lum = 0; in wacom_initialize_leds()
874 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
884 if (wacom->wacom_wac.features.device_type == BTN_TOOL_PEN) { in wacom_initialize_leds()
885 wacom->led.select[0] = 0; in wacom_initialize_leds()
886 wacom->led.select[1] = 0; in wacom_initialize_leds()
887 wacom->led.llv = 32; in wacom_initialize_leds()
888 wacom->led.hlv = 0; in wacom_initialize_leds()
889 wacom->led.img_lum = 0; in wacom_initialize_leds()
891 error = sysfs_create_group(&wacom->hdev->dev.kobj, in wacom_initialize_leds()
902 hid_err(wacom->hdev, in wacom_initialize_leds()
906 wacom_led_control(wacom); in wacom_initialize_leds()
907 wacom->led_initialized = true; in wacom_initialize_leds()
912 static void wacom_destroy_leds(struct wacom *wacom) in wacom_destroy_leds() argument
914 if (!wacom->led_initialized) in wacom_destroy_leds()
917 wacom->led_initialized = false; in wacom_destroy_leds()
919 switch (wacom->wacom_wac.features.type) { in wacom_destroy_leds()
924 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
930 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
940 if (wacom->wacom_wac.features.device_type == BTN_TOOL_PEN) in wacom_destroy_leds()
941 sysfs_remove_group(&wacom->hdev->dev.kobj, in wacom_destroy_leds()
964 struct wacom *wacom = power_supply_get_drvdata(psy); in wacom_battery_get_property() local
969 val->intval = wacom->wacom_wac.bat_connected; in wacom_battery_get_property()
976 wacom->wacom_wac.battery_capacity; in wacom_battery_get_property()
979 if (wacom->wacom_wac.bat_charging) in wacom_battery_get_property()
981 else if (wacom->wacom_wac.battery_capacity == 100 && in wacom_battery_get_property()
982 wacom->wacom_wac.ps_connected) in wacom_battery_get_property()
984 else if (wacom->wacom_wac.ps_connected) in wacom_battery_get_property()
1001 struct wacom *wacom = power_supply_get_drvdata(psy); in wacom_ac_get_property() local
1008 val->intval = wacom->wacom_wac.ps_connected; in wacom_ac_get_property()
1020 static int wacom_initialize_battery(struct wacom *wacom) in wacom_initialize_battery() argument
1023 struct power_supply_config psy_cfg = { .drv_data = wacom, }; in wacom_initialize_battery()
1026 if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) { in wacom_initialize_battery()
1027 struct power_supply_desc *bat_desc = &wacom->battery_desc; in wacom_initialize_battery()
1028 struct power_supply_desc *ac_desc = &wacom->ac_desc; in wacom_initialize_battery()
1034 sprintf(wacom->wacom_wac.bat_name, "wacom_battery_%ld", n); in wacom_initialize_battery()
1035 bat_desc->name = wacom->wacom_wac.bat_name; in wacom_initialize_battery()
1042 sprintf(wacom->wacom_wac.ac_name, "wacom_ac_%ld", n); in wacom_initialize_battery()
1043 ac_desc->name = wacom->wacom_wac.ac_name; in wacom_initialize_battery()
1047 wacom->battery = power_supply_register(&wacom->hdev->dev, in wacom_initialize_battery()
1048 &wacom->battery_desc, &psy_cfg); in wacom_initialize_battery()
1049 if (IS_ERR(wacom->battery)) in wacom_initialize_battery()
1050 return PTR_ERR(wacom->battery); in wacom_initialize_battery()
1052 power_supply_powers(wacom->battery, &wacom->hdev->dev); in wacom_initialize_battery()
1054 wacom->ac = power_supply_register(&wacom->hdev->dev, in wacom_initialize_battery()
1055 &wacom->ac_desc, in wacom_initialize_battery()
1057 if (IS_ERR(wacom->ac)) { in wacom_initialize_battery()
1058 power_supply_unregister(wacom->battery); in wacom_initialize_battery()
1059 return PTR_ERR(wacom->ac); in wacom_initialize_battery()
1062 power_supply_powers(wacom->ac, &wacom->hdev->dev); in wacom_initialize_battery()
1068 static void wacom_destroy_battery(struct wacom *wacom) in wacom_destroy_battery() argument
1070 if (wacom->battery) { in wacom_destroy_battery()
1071 power_supply_unregister(wacom->battery); in wacom_destroy_battery()
1072 wacom->battery = NULL; in wacom_destroy_battery()
1073 power_supply_unregister(wacom->ac); in wacom_destroy_battery()
1074 wacom->ac = NULL; in wacom_destroy_battery()
1083 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_show_speed() local
1085 return snprintf(buf, PAGE_SIZE, "%i\n", wacom->wacom_wac.bt_high_speed); in wacom_show_speed()
1093 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_store_speed() local
1102 wacom_bt_query_tablet_data(hdev, new_speed, &wacom->wacom_wac.features); in wacom_store_speed()
1110 static struct input_dev *wacom_allocate_input(struct wacom *wacom) in wacom_allocate_input() argument
1113 struct hid_device *hdev = wacom->hdev; in wacom_allocate_input()
1114 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_allocate_input()
1130 input_set_drvdata(input_dev, wacom); in wacom_allocate_input()
1135 static void wacom_free_inputs(struct wacom *wacom) in wacom_free_inputs() argument
1137 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_free_inputs()
1147 static int wacom_allocate_inputs(struct wacom *wacom) in wacom_allocate_inputs() argument
1150 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_allocate_inputs()
1152 input_dev = wacom_allocate_input(wacom); in wacom_allocate_inputs()
1153 pad_input_dev = wacom_allocate_input(wacom); in wacom_allocate_inputs()
1155 wacom_free_inputs(wacom); in wacom_allocate_inputs()
1166 static void wacom_clean_inputs(struct wacom *wacom) in wacom_clean_inputs() argument
1168 if (wacom->wacom_wac.input) { in wacom_clean_inputs()
1169 if (wacom->wacom_wac.input_registered) in wacom_clean_inputs()
1170 input_unregister_device(wacom->wacom_wac.input); in wacom_clean_inputs()
1172 input_free_device(wacom->wacom_wac.input); in wacom_clean_inputs()
1174 if (wacom->wacom_wac.pad_input) { in wacom_clean_inputs()
1175 if (wacom->wacom_wac.pad_registered) in wacom_clean_inputs()
1176 input_unregister_device(wacom->wacom_wac.pad_input); in wacom_clean_inputs()
1178 input_free_device(wacom->wacom_wac.pad_input); in wacom_clean_inputs()
1180 wacom->wacom_wac.input = NULL; in wacom_clean_inputs()
1181 wacom->wacom_wac.pad_input = NULL; in wacom_clean_inputs()
1182 wacom_destroy_leds(wacom); in wacom_clean_inputs()
1185 static int wacom_register_inputs(struct wacom *wacom) in wacom_register_inputs() argument
1188 struct wacom_wac *wacom_wac = &(wacom->wacom_wac); in wacom_register_inputs()
1217 error = wacom_initialize_leds(wacom); in wacom_register_inputs()
1237 struct wacom *wacom = container_of(work, struct wacom, work); in wacom_wireless_work() local
1238 struct usb_device *usbdev = wacom->usbdev; in wacom_wireless_work()
1239 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wireless_work()
1241 struct wacom *wacom1, *wacom2; in wacom_wireless_work()
1250 wacom_destroy_battery(wacom); in wacom_wireless_work()
1265 hid_info(wacom->hdev, "wireless tablet disconnected\n"); in wacom_wireless_work()
1270 hid_info(wacom->hdev, "wireless tablet connected with PID %x\n", in wacom_wireless_work()
1281 hid_info(wacom->hdev, "ignoring unknown PID.\n"); in wacom_wireless_work()
1328 error = wacom_initialize_battery(wacom); in wacom_wireless_work()
1343 struct wacom *wacom = container_of(work, struct wacom, work); in wacom_battery_work() local
1345 if ((wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && in wacom_battery_work()
1346 !wacom->battery) { in wacom_battery_work()
1347 wacom_initialize_battery(wacom); in wacom_battery_work()
1349 else if (!(wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && in wacom_battery_work()
1350 wacom->battery) { in wacom_battery_work()
1351 wacom_destroy_battery(wacom); in wacom_battery_work()
1404 struct wacom *wacom; in wacom_probe() local
1418 wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); in wacom_probe()
1419 if (!wacom) in wacom_probe()
1422 hid_set_drvdata(hdev, wacom); in wacom_probe()
1423 wacom->hdev = hdev; in wacom_probe()
1432 wacom_wac = &wacom->wacom_wac; in wacom_probe()
1446 wacom->usbdev = dev; in wacom_probe()
1447 wacom->intf = intf; in wacom_probe()
1448 mutex_init(&wacom->lock); in wacom_probe()
1449 INIT_WORK(&wacom->work, wacom_wireless_work); in wacom_probe()
1452 error = wacom_allocate_inputs(wacom); in wacom_probe()
1542 error = wacom_initialize_battery(wacom); in wacom_probe()
1548 error = wacom_register_inputs(wacom); in wacom_probe()
1588 wacom_clean_inputs(wacom); in wacom_probe()
1589 wacom_destroy_battery(wacom); in wacom_probe()
1591 wacom_remove_shared_data(wacom); in wacom_probe()
1593 wacom_clean_inputs(wacom); in wacom_probe()
1598 kfree(wacom); in wacom_probe()
1605 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_remove() local
1609 cancel_work_sync(&wacom->work); in wacom_remove()
1610 wacom_clean_inputs(wacom); in wacom_remove()
1613 wacom_destroy_battery(wacom); in wacom_remove()
1614 wacom_remove_shared_data(wacom); in wacom_remove()
1617 kfree(wacom); in wacom_remove()
1623 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_resume() local
1624 struct wacom_features *features = &wacom->wacom_wac.features; in wacom_resume()
1626 mutex_lock(&wacom->lock); in wacom_resume()
1630 wacom_led_control(wacom); in wacom_resume()
1632 mutex_unlock(&wacom->lock); in wacom_resume()