Lines Matching refs:hanwang

50 struct hanwang {  struct
107 static void hanwang_parse_packet(struct hanwang *hanwang) in hanwang_parse_packet() argument
109 unsigned char *data = hanwang->data; in hanwang_parse_packet()
110 struct input_dev *input_dev = hanwang->dev; in hanwang_parse_packet()
111 struct usb_device *dev = hanwang->usbdev; in hanwang_parse_packet()
112 enum hanwang_tablet_type type = hanwang->features->type; in hanwang_parse_packet()
117 hanwang->current_tool = BTN_TOOL_PEN; in hanwang_parse_packet()
118 hanwang->current_id = STYLUS_DEVICE_ID; in hanwang_parse_packet()
126 hanwang->current_id = 0; in hanwang_parse_packet()
128 hanwang->current_tool, 0); in hanwang_parse_packet()
134 hanwang->current_id = 0; in hanwang_parse_packet()
136 hanwang->current_tool, 0); in hanwang_parse_packet()
144 hanwang->current_id = STYLUS_DEVICE_ID; in hanwang_parse_packet()
145 hanwang->current_tool = BTN_TOOL_PEN; in hanwang_parse_packet()
150 hanwang->current_id = ERASER_DEVICE_ID; in hanwang_parse_packet()
151 hanwang->current_tool = BTN_TOOL_RUBBER; in hanwang_parse_packet()
155 hanwang->current_id = 0; in hanwang_parse_packet()
198 input_report_abs(input_dev, ABS_MISC, hanwang->current_id); in hanwang_parse_packet()
200 hanwang->features->pid); in hanwang_parse_packet()
205 hanwang->current_id = PAD_DEVICE_ID; in hanwang_parse_packet()
240 input_report_abs(input_dev, ABS_MISC, hanwang->current_id); in hanwang_parse_packet()
254 struct hanwang *hanwang = urb->context; in hanwang_irq() local
255 struct usb_device *dev = hanwang->usbdev; in hanwang_irq()
261 hanwang_parse_packet(hanwang); in hanwang_irq()
284 struct hanwang *hanwang = input_get_drvdata(dev); in hanwang_open() local
286 hanwang->irq->dev = hanwang->usbdev; in hanwang_open()
287 if (usb_submit_urb(hanwang->irq, GFP_KERNEL)) in hanwang_open()
295 struct hanwang *hanwang = input_get_drvdata(dev); in hanwang_close() local
297 usb_kill_urb(hanwang->irq); in hanwang_close()
300 static bool get_features(struct usb_device *dev, struct hanwang *hanwang) in get_features() argument
307 hanwang->features = &features_array[i]; in get_features()
320 struct hanwang *hanwang; in hanwang_probe() local
328 hanwang = kzalloc(sizeof(struct hanwang), GFP_KERNEL); in hanwang_probe()
330 if (!hanwang || !input_dev) { in hanwang_probe()
335 if (!get_features(dev, hanwang)) { in hanwang_probe()
340 hanwang->data = usb_alloc_coherent(dev, hanwang->features->pkg_len, in hanwang_probe()
341 GFP_KERNEL, &hanwang->data_dma); in hanwang_probe()
342 if (!hanwang->data) { in hanwang_probe()
347 hanwang->irq = usb_alloc_urb(0, GFP_KERNEL); in hanwang_probe()
348 if (!hanwang->irq) { in hanwang_probe()
353 hanwang->usbdev = dev; in hanwang_probe()
354 hanwang->dev = input_dev; in hanwang_probe()
356 usb_make_path(dev, hanwang->phys, sizeof(hanwang->phys)); in hanwang_probe()
357 strlcat(hanwang->phys, "/input0", sizeof(hanwang->phys)); in hanwang_probe()
359 strlcpy(hanwang->name, hanwang->features->name, sizeof(hanwang->name)); in hanwang_probe()
360 input_dev->name = hanwang->name; in hanwang_probe()
361 input_dev->phys = hanwang->phys; in hanwang_probe()
365 input_set_drvdata(input_dev, hanwang); in hanwang_probe()
383 0, hanwang->features->max_x, 4, 0); in hanwang_probe()
385 0, hanwang->features->max_y, 4, 0); in hanwang_probe()
387 0, hanwang->features->max_tilt_x, 0, 0); in hanwang_probe()
389 0, hanwang->features->max_tilt_y, 0, 0); in hanwang_probe()
391 0, hanwang->features->max_pressure, 0, 0); in hanwang_probe()
394 usb_fill_int_urb(hanwang->irq, dev, in hanwang_probe()
396 hanwang->data, hanwang->features->pkg_len, in hanwang_probe()
397 hanwang_irq, hanwang, endpoint->bInterval); in hanwang_probe()
398 hanwang->irq->transfer_dma = hanwang->data_dma; in hanwang_probe()
399 hanwang->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in hanwang_probe()
401 error = input_register_device(hanwang->dev); in hanwang_probe()
405 usb_set_intfdata(intf, hanwang); in hanwang_probe()
409 fail3: usb_free_urb(hanwang->irq); in hanwang_probe()
410 fail2: usb_free_coherent(dev, hanwang->features->pkg_len, in hanwang_probe()
411 hanwang->data, hanwang->data_dma); in hanwang_probe()
413 kfree(hanwang); in hanwang_probe()
420 struct hanwang *hanwang = usb_get_intfdata(intf); in hanwang_disconnect() local
422 input_unregister_device(hanwang->dev); in hanwang_disconnect()
423 usb_free_urb(hanwang->irq); in hanwang_disconnect()
425 hanwang->features->pkg_len, hanwang->data, in hanwang_disconnect()
426 hanwang->data_dma); in hanwang_disconnect()
427 kfree(hanwang); in hanwang_disconnect()