Lines Matching refs:hanwang

47 struct hanwang {  struct
104 static void hanwang_parse_packet(struct hanwang *hanwang) in hanwang_parse_packet() argument
106 unsigned char *data = hanwang->data; in hanwang_parse_packet()
107 struct input_dev *input_dev = hanwang->dev; in hanwang_parse_packet()
108 struct usb_device *dev = hanwang->usbdev; in hanwang_parse_packet()
109 enum hanwang_tablet_type type = hanwang->features->type; in hanwang_parse_packet()
114 hanwang->current_tool = BTN_TOOL_PEN; in hanwang_parse_packet()
115 hanwang->current_id = STYLUS_DEVICE_ID; in hanwang_parse_packet()
123 hanwang->current_id = 0; in hanwang_parse_packet()
125 hanwang->current_tool, 0); in hanwang_parse_packet()
131 hanwang->current_id = 0; in hanwang_parse_packet()
133 hanwang->current_tool, 0); in hanwang_parse_packet()
141 hanwang->current_id = STYLUS_DEVICE_ID; in hanwang_parse_packet()
142 hanwang->current_tool = BTN_TOOL_PEN; in hanwang_parse_packet()
147 hanwang->current_id = ERASER_DEVICE_ID; in hanwang_parse_packet()
148 hanwang->current_tool = BTN_TOOL_RUBBER; in hanwang_parse_packet()
152 hanwang->current_id = 0; in hanwang_parse_packet()
195 input_report_abs(input_dev, ABS_MISC, hanwang->current_id); in hanwang_parse_packet()
197 hanwang->features->pid); in hanwang_parse_packet()
202 hanwang->current_id = PAD_DEVICE_ID; in hanwang_parse_packet()
237 input_report_abs(input_dev, ABS_MISC, hanwang->current_id); in hanwang_parse_packet()
251 struct hanwang *hanwang = urb->context; in hanwang_irq() local
252 struct usb_device *dev = hanwang->usbdev; in hanwang_irq()
258 hanwang_parse_packet(hanwang); in hanwang_irq()
281 struct hanwang *hanwang = input_get_drvdata(dev); in hanwang_open() local
283 hanwang->irq->dev = hanwang->usbdev; in hanwang_open()
284 if (usb_submit_urb(hanwang->irq, GFP_KERNEL)) in hanwang_open()
292 struct hanwang *hanwang = input_get_drvdata(dev); in hanwang_close() local
294 usb_kill_urb(hanwang->irq); in hanwang_close()
297 static bool get_features(struct usb_device *dev, struct hanwang *hanwang) in get_features() argument
304 hanwang->features = &features_array[i]; in get_features()
317 struct hanwang *hanwang; in hanwang_probe() local
325 hanwang = kzalloc(sizeof(struct hanwang), GFP_KERNEL); in hanwang_probe()
327 if (!hanwang || !input_dev) { in hanwang_probe()
332 if (!get_features(dev, hanwang)) { in hanwang_probe()
337 hanwang->data = usb_alloc_coherent(dev, hanwang->features->pkg_len, in hanwang_probe()
338 GFP_KERNEL, &hanwang->data_dma); in hanwang_probe()
339 if (!hanwang->data) { in hanwang_probe()
344 hanwang->irq = usb_alloc_urb(0, GFP_KERNEL); in hanwang_probe()
345 if (!hanwang->irq) { in hanwang_probe()
350 hanwang->usbdev = dev; in hanwang_probe()
351 hanwang->dev = input_dev; in hanwang_probe()
353 usb_make_path(dev, hanwang->phys, sizeof(hanwang->phys)); in hanwang_probe()
354 strlcat(hanwang->phys, "/input0", sizeof(hanwang->phys)); in hanwang_probe()
356 strscpy(hanwang->name, hanwang->features->name, sizeof(hanwang->name)); in hanwang_probe()
357 input_dev->name = hanwang->name; in hanwang_probe()
358 input_dev->phys = hanwang->phys; in hanwang_probe()
362 input_set_drvdata(input_dev, hanwang); in hanwang_probe()
380 0, hanwang->features->max_x, 4, 0); in hanwang_probe()
382 0, hanwang->features->max_y, 4, 0); in hanwang_probe()
384 0, hanwang->features->max_tilt_x, 0, 0); in hanwang_probe()
386 0, hanwang->features->max_tilt_y, 0, 0); in hanwang_probe()
388 0, hanwang->features->max_pressure, 0, 0); in hanwang_probe()
391 usb_fill_int_urb(hanwang->irq, dev, in hanwang_probe()
393 hanwang->data, hanwang->features->pkg_len, in hanwang_probe()
394 hanwang_irq, hanwang, endpoint->bInterval); in hanwang_probe()
395 hanwang->irq->transfer_dma = hanwang->data_dma; in hanwang_probe()
396 hanwang->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in hanwang_probe()
398 error = input_register_device(hanwang->dev); in hanwang_probe()
402 usb_set_intfdata(intf, hanwang); in hanwang_probe()
406 fail3: usb_free_urb(hanwang->irq); in hanwang_probe()
407 fail2: usb_free_coherent(dev, hanwang->features->pkg_len, in hanwang_probe()
408 hanwang->data, hanwang->data_dma); in hanwang_probe()
410 kfree(hanwang); in hanwang_probe()
417 struct hanwang *hanwang = usb_get_intfdata(intf); in hanwang_disconnect() local
419 input_unregister_device(hanwang->dev); in hanwang_disconnect()
420 usb_free_urb(hanwang->irq); in hanwang_disconnect()
422 hanwang->features->pkg_len, hanwang->data, in hanwang_disconnect()
423 hanwang->data_dma); in hanwang_disconnect()
424 kfree(hanwang); in hanwang_disconnect()