Lines Matching refs:synusb
79 struct synusb { struct
94 static void synusb_report_buttons(struct synusb *synusb) in synusb_report_buttons() argument
96 struct input_dev *input_dev = synusb->input; in synusb_report_buttons()
98 input_report_key(input_dev, BTN_LEFT, synusb->data[1] & 0x04); in synusb_report_buttons()
99 input_report_key(input_dev, BTN_RIGHT, synusb->data[1] & 0x01); in synusb_report_buttons()
100 input_report_key(input_dev, BTN_MIDDLE, synusb->data[1] & 0x02); in synusb_report_buttons()
103 static void synusb_report_stick(struct synusb *synusb) in synusb_report_stick() argument
105 struct input_dev *input_dev = synusb->input; in synusb_report_stick()
109 pressure = synusb->data[6]; in synusb_report_stick()
110 x = (s16)(be16_to_cpup((__be16 *)&synusb->data[2]) << 3) >> 7; in synusb_report_stick()
111 y = (s16)(be16_to_cpup((__be16 *)&synusb->data[4]) << 3) >> 7; in synusb_report_stick()
120 synusb_report_buttons(synusb); in synusb_report_stick()
125 static void synusb_report_touchpad(struct synusb *synusb) in synusb_report_touchpad() argument
127 struct input_dev *input_dev = synusb->input; in synusb_report_touchpad()
132 pressure = synusb->data[6]; in synusb_report_touchpad()
133 x = be16_to_cpup((__be16 *)&synusb->data[2]); in synusb_report_touchpad()
134 y = be16_to_cpup((__be16 *)&synusb->data[4]); in synusb_report_touchpad()
135 w = synusb->data[0] & 0x0f; in synusb_report_touchpad()
181 synusb_report_buttons(synusb); in synusb_report_touchpad()
182 if (synusb->flags & SYNUSB_AUXDISPLAY) in synusb_report_touchpad()
183 input_report_key(input_dev, BTN_MIDDLE, synusb->data[1] & 0x08); in synusb_report_touchpad()
190 struct synusb *synusb = urb->context; in synusb_irq() local
196 usb_mark_last_busy(synusb->udev); in synusb_irq()
210 if (synusb->flags & SYNUSB_STICK) in synusb_irq()
211 synusb_report_stick(synusb); in synusb_irq()
213 synusb_report_touchpad(synusb); in synusb_irq()
218 dev_err(&synusb->intf->dev, in synusb_irq()
244 struct synusb *synusb = input_get_drvdata(dev); in synusb_open() local
247 retval = usb_autopm_get_interface(synusb->intf); in synusb_open()
249 dev_err(&synusb->intf->dev, in synusb_open()
255 retval = usb_submit_urb(synusb->urb, GFP_KERNEL); in synusb_open()
257 dev_err(&synusb->intf->dev, in synusb_open()
264 synusb->intf->needs_remote_wakeup = 1; in synusb_open()
267 usb_autopm_put_interface(synusb->intf); in synusb_open()
273 struct synusb *synusb = input_get_drvdata(dev); in synusb_close() local
276 autopm_error = usb_autopm_get_interface(synusb->intf); in synusb_close()
278 usb_kill_urb(synusb->urb); in synusb_close()
279 synusb->intf->needs_remote_wakeup = 0; in synusb_close()
282 usb_autopm_put_interface(synusb->intf); in synusb_close()
290 struct synusb *synusb; in synusb_probe() local
308 synusb = kzalloc(sizeof(*synusb), GFP_KERNEL); in synusb_probe()
310 if (!synusb || !input_dev) { in synusb_probe()
315 synusb->udev = udev; in synusb_probe()
316 synusb->intf = intf; in synusb_probe()
317 synusb->input = input_dev; in synusb_probe()
319 synusb->flags = id->driver_info; in synusb_probe()
320 if (synusb->flags & SYNUSB_COMBO) { in synusb_probe()
325 synusb->flags |= intf_num == 1 ? in synusb_probe()
329 synusb->urb = usb_alloc_urb(0, GFP_KERNEL); in synusb_probe()
330 if (!synusb->urb) { in synusb_probe()
335 synusb->data = usb_alloc_coherent(udev, SYNUSB_RECV_SIZE, GFP_KERNEL, in synusb_probe()
336 &synusb->urb->transfer_dma); in synusb_probe()
337 if (!synusb->data) { in synusb_probe()
342 usb_fill_int_urb(synusb->urb, udev, in synusb_probe()
344 synusb->data, SYNUSB_RECV_SIZE, in synusb_probe()
345 synusb_irq, synusb, in synusb_probe()
347 synusb->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in synusb_probe()
350 strlcpy(synusb->name, udev->manufacturer, in synusb_probe()
351 sizeof(synusb->name)); in synusb_probe()
355 strlcat(synusb->name, " ", sizeof(synusb->name)); in synusb_probe()
356 strlcat(synusb->name, udev->product, sizeof(synusb->name)); in synusb_probe()
359 if (!strlen(synusb->name)) in synusb_probe()
360 snprintf(synusb->name, sizeof(synusb->name), in synusb_probe()
365 if (synusb->flags & SYNUSB_STICK) in synusb_probe()
366 strlcat(synusb->name, " (Stick)", sizeof(synusb->name)); in synusb_probe()
368 usb_make_path(udev, synusb->phys, sizeof(synusb->phys)); in synusb_probe()
369 strlcat(synusb->phys, "/input0", sizeof(synusb->phys)); in synusb_probe()
371 input_dev->name = synusb->name; in synusb_probe()
372 input_dev->phys = synusb->phys; in synusb_probe()
374 input_dev->dev.parent = &synusb->intf->dev; in synusb_probe()
376 if (!(synusb->flags & SYNUSB_IO_ALWAYS)) { in synusb_probe()
381 input_set_drvdata(input_dev, synusb); in synusb_probe()
386 if (synusb->flags & SYNUSB_STICK) { in synusb_probe()
405 if (synusb->flags & SYNUSB_TOUCHSCREEN) in synusb_probe()
414 usb_set_intfdata(intf, synusb); in synusb_probe()
416 if (synusb->flags & SYNUSB_IO_ALWAYS) { in synusb_probe()
433 if (synusb->flags & SYNUSB_IO_ALWAYS) in synusb_probe()
434 synusb_close(synusb->input); in synusb_probe()
436 usb_free_coherent(udev, SYNUSB_RECV_SIZE, synusb->data, in synusb_probe()
437 synusb->urb->transfer_dma); in synusb_probe()
439 usb_free_urb(synusb->urb); in synusb_probe()
442 kfree(synusb); in synusb_probe()
450 struct synusb *synusb = usb_get_intfdata(intf); in synusb_disconnect() local
453 if (synusb->flags & SYNUSB_IO_ALWAYS) in synusb_disconnect()
454 synusb_close(synusb->input); in synusb_disconnect()
456 input_unregister_device(synusb->input); in synusb_disconnect()
458 usb_free_coherent(udev, SYNUSB_RECV_SIZE, synusb->data, in synusb_disconnect()
459 synusb->urb->transfer_dma); in synusb_disconnect()
460 usb_free_urb(synusb->urb); in synusb_disconnect()
461 kfree(synusb); in synusb_disconnect()
468 struct synusb *synusb = usb_get_intfdata(intf); in synusb_suspend() local
469 struct input_dev *input_dev = synusb->input; in synusb_suspend()
472 usb_kill_urb(synusb->urb); in synusb_suspend()
480 struct synusb *synusb = usb_get_intfdata(intf); in synusb_resume() local
481 struct input_dev *input_dev = synusb->input; in synusb_resume()
486 if ((input_dev->users || (synusb->flags & SYNUSB_IO_ALWAYS)) && in synusb_resume()
487 usb_submit_urb(synusb->urb, GFP_NOIO) < 0) { in synusb_resume()
498 struct synusb *synusb = usb_get_intfdata(intf); in synusb_pre_reset() local
499 struct input_dev *input_dev = synusb->input; in synusb_pre_reset()
502 usb_kill_urb(synusb->urb); in synusb_pre_reset()
509 struct synusb *synusb = usb_get_intfdata(intf); in synusb_post_reset() local
510 struct input_dev *input_dev = synusb->input; in synusb_post_reset()
513 if ((input_dev->users || (synusb->flags & SYNUSB_IO_ALWAYS)) && in synusb_post_reset()
514 usb_submit_urb(synusb->urb, GFP_NOIO) < 0) { in synusb_post_reset()