Lines Matching refs:ar2
231 static int ati_remote2_submit_urbs(struct ati_remote2 *ar2) in ati_remote2_submit_urbs() argument
235 r = usb_submit_urb(ar2->urb[0], GFP_KERNEL); in ati_remote2_submit_urbs()
237 dev_err(&ar2->intf[0]->dev, in ati_remote2_submit_urbs()
241 r = usb_submit_urb(ar2->urb[1], GFP_KERNEL); in ati_remote2_submit_urbs()
243 usb_kill_urb(ar2->urb[0]); in ati_remote2_submit_urbs()
244 dev_err(&ar2->intf[1]->dev, in ati_remote2_submit_urbs()
252 static void ati_remote2_kill_urbs(struct ati_remote2 *ar2) in ati_remote2_kill_urbs() argument
254 usb_kill_urb(ar2->urb[1]); in ati_remote2_kill_urbs()
255 usb_kill_urb(ar2->urb[0]); in ati_remote2_kill_urbs()
260 struct ati_remote2 *ar2 = input_get_drvdata(idev); in ati_remote2_open() local
263 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_open()
265 r = usb_autopm_get_interface(ar2->intf[0]); in ati_remote2_open()
267 dev_err(&ar2->intf[0]->dev, in ati_remote2_open()
274 if (!(ar2->flags & ATI_REMOTE2_SUSPENDED)) { in ati_remote2_open()
275 r = ati_remote2_submit_urbs(ar2); in ati_remote2_open()
280 ar2->flags |= ATI_REMOTE2_OPENED; in ati_remote2_open()
284 usb_autopm_put_interface(ar2->intf[0]); in ati_remote2_open()
290 usb_autopm_put_interface(ar2->intf[0]); in ati_remote2_open()
297 struct ati_remote2 *ar2 = input_get_drvdata(idev); in ati_remote2_close() local
299 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_close()
303 if (!(ar2->flags & ATI_REMOTE2_SUSPENDED)) in ati_remote2_close()
304 ati_remote2_kill_urbs(ar2); in ati_remote2_close()
306 ar2->flags &= ~ATI_REMOTE2_OPENED; in ati_remote2_close()
311 static void ati_remote2_input_mouse(struct ati_remote2 *ar2) in ati_remote2_input_mouse() argument
313 struct input_dev *idev = ar2->idev; in ati_remote2_input_mouse()
314 u8 *data = ar2->buf[0]; in ati_remote2_input_mouse()
319 if (!((1 << channel) & ar2->channel_mask)) in ati_remote2_input_mouse()
325 dev_err(&ar2->intf[0]->dev, in ati_remote2_input_mouse()
331 if (!((1 << mode) & ar2->mode_mask)) in ati_remote2_input_mouse()
350 static void ati_remote2_input_key(struct ati_remote2 *ar2) in ati_remote2_input_key() argument
352 struct input_dev *idev = ar2->idev; in ati_remote2_input_key()
353 u8 *data = ar2->buf[1]; in ati_remote2_input_key()
358 if (!((1 << channel) & ar2->channel_mask)) in ati_remote2_input_key()
364 dev_err(&ar2->intf[1]->dev, in ati_remote2_input_key()
379 if (ar2->mode == mode) in ati_remote2_input_key()
383 ar2->mode = mode; in ati_remote2_input_key()
386 if (!((1 << mode) & ar2->mode_mask)) in ati_remote2_input_key()
391 dev_err(&ar2->intf[1]->dev, in ati_remote2_input_key()
401 ar2->jiffies = jiffies + msecs_to_jiffies(idev->rep[REP_DELAY]); in ati_remote2_input_key()
406 if (ar2->keycode[mode][index] == BTN_LEFT || in ati_remote2_input_key()
407 ar2->keycode[mode][index] == BTN_RIGHT) in ati_remote2_input_key()
410 if (!time_after_eq(jiffies, ar2->jiffies)) in ati_remote2_input_key()
413 ar2->jiffies = jiffies + msecs_to_jiffies(idev->rep[REP_PERIOD]); in ati_remote2_input_key()
416 dev_err(&ar2->intf[1]->dev, in ati_remote2_input_key()
422 input_event(idev, EV_KEY, ar2->keycode[mode][index], data[1]); in ati_remote2_input_key()
428 struct ati_remote2 *ar2 = urb->context; in ati_remote2_complete_mouse() local
433 usb_mark_last_busy(ar2->udev); in ati_remote2_complete_mouse()
434 ati_remote2_input_mouse(ar2); in ati_remote2_complete_mouse()
440 dev_dbg(&ar2->intf[0]->dev, in ati_remote2_complete_mouse()
444 usb_mark_last_busy(ar2->udev); in ati_remote2_complete_mouse()
445 dev_err(&ar2->intf[0]->dev, in ati_remote2_complete_mouse()
451 dev_err(&ar2->intf[0]->dev, in ati_remote2_complete_mouse()
457 struct ati_remote2 *ar2 = urb->context; in ati_remote2_complete_key() local
462 usb_mark_last_busy(ar2->udev); in ati_remote2_complete_key()
463 ati_remote2_input_key(ar2); in ati_remote2_complete_key()
469 dev_dbg(&ar2->intf[1]->dev, in ati_remote2_complete_key()
473 usb_mark_last_busy(ar2->udev); in ati_remote2_complete_key()
474 dev_err(&ar2->intf[1]->dev, in ati_remote2_complete_key()
480 dev_err(&ar2->intf[1]->dev, in ati_remote2_complete_key()
487 struct ati_remote2 *ar2 = input_get_drvdata(idev); in ati_remote2_getkeycode() local
517 ke->keycode = ar2->keycode[mode][offset]; in ati_remote2_getkeycode()
529 struct ati_remote2 *ar2 = input_get_drvdata(idev); in ati_remote2_setkeycode() local
555 *old_keycode = ar2->keycode[mode][offset]; in ati_remote2_setkeycode()
556 ar2->keycode[mode][offset] = ke->keycode; in ati_remote2_setkeycode()
561 if (ar2->keycode[mode][index] == *old_keycode) in ati_remote2_setkeycode()
571 static int ati_remote2_input_init(struct ati_remote2 *ar2) in ati_remote2_input_init() argument
580 ar2->idev = idev; in ati_remote2_input_init()
581 input_set_drvdata(idev, ar2); in ati_remote2_input_init()
590 ar2->keycode[mode][index] = ati_remote2_key_table[index].keycode; in ati_remote2_input_init()
591 __set_bit(ar2->keycode[mode][index], idev->keybit); in ati_remote2_input_init()
597 ar2->keycode[ATI_REMOTE2_AUX1][index] = KEY_PROG1; in ati_remote2_input_init()
598 ar2->keycode[ATI_REMOTE2_AUX2][index] = KEY_PROG2; in ati_remote2_input_init()
599 ar2->keycode[ATI_REMOTE2_AUX3][index] = KEY_PROG3; in ati_remote2_input_init()
600 ar2->keycode[ATI_REMOTE2_AUX4][index] = KEY_PROG4; in ati_remote2_input_init()
601 ar2->keycode[ATI_REMOTE2_PC][index] = KEY_PC; in ati_remote2_input_init()
617 idev->name = ar2->name; in ati_remote2_input_init()
618 idev->phys = ar2->phys; in ati_remote2_input_init()
620 usb_to_input_id(ar2->udev, &idev->id); in ati_remote2_input_init()
621 idev->dev.parent = &ar2->udev->dev; in ati_remote2_input_init()
630 static int ati_remote2_urb_init(struct ati_remote2 *ar2) in ati_remote2_urb_init() argument
632 struct usb_device *udev = ar2->udev; in ati_remote2_urb_init()
636 ar2->buf[i] = usb_alloc_coherent(udev, 4, GFP_KERNEL, &ar2->buf_dma[i]); in ati_remote2_urb_init()
637 if (!ar2->buf[i]) in ati_remote2_urb_init()
640 ar2->urb[i] = usb_alloc_urb(0, GFP_KERNEL); in ati_remote2_urb_init()
641 if (!ar2->urb[i]) in ati_remote2_urb_init()
644 pipe = usb_rcvintpipe(udev, ar2->ep[i]->bEndpointAddress); in ati_remote2_urb_init()
648 usb_fill_int_urb(ar2->urb[i], udev, pipe, ar2->buf[i], maxp, in ati_remote2_urb_init()
650 ar2, ar2->ep[i]->bInterval); in ati_remote2_urb_init()
651 ar2->urb[i]->transfer_dma = ar2->buf_dma[i]; in ati_remote2_urb_init()
652 ar2->urb[i]->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in ati_remote2_urb_init()
658 static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2) in ati_remote2_urb_cleanup() argument
663 usb_free_urb(ar2->urb[i]); in ati_remote2_urb_cleanup()
664 usb_free_coherent(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]); in ati_remote2_urb_cleanup()
668 static int ati_remote2_setup(struct ati_remote2 *ar2, unsigned int ch_mask) in ati_remote2_setup() argument
690 r = usb_control_msg(ar2->udev, usb_sndctrlpipe(ar2->udev, 0), in ati_remote2_setup()
695 dev_err(&ar2->udev->dev, "%s - failed to set channel due to error: %d\n", in ati_remote2_setup()
709 struct ati_remote2 *ar2 = usb_get_intfdata(intf); in ati_remote2_show_channel_mask() local
711 return sprintf(buf, "0x%04x\n", ar2->channel_mask); in ati_remote2_show_channel_mask()
720 struct ati_remote2 *ar2 = usb_get_intfdata(intf); in ati_remote2_store_channel_mask() local
731 r = usb_autopm_get_interface(ar2->intf[0]); in ati_remote2_store_channel_mask()
733 dev_err(&ar2->intf[0]->dev, in ati_remote2_store_channel_mask()
740 if (mask != ar2->channel_mask) { in ati_remote2_store_channel_mask()
741 r = ati_remote2_setup(ar2, mask); in ati_remote2_store_channel_mask()
743 ar2->channel_mask = mask; in ati_remote2_store_channel_mask()
748 usb_autopm_put_interface(ar2->intf[0]); in ati_remote2_store_channel_mask()
759 struct ati_remote2 *ar2 = usb_get_intfdata(intf); in ati_remote2_show_mode_mask() local
761 return sprintf(buf, "0x%02x\n", ar2->mode_mask); in ati_remote2_show_mode_mask()
770 struct ati_remote2 *ar2 = usb_get_intfdata(intf); in ati_remote2_store_mode_mask() local
781 ar2->mode_mask = mask; in ati_remote2_store_mode_mask()
806 struct ati_remote2 *ar2; in ati_remote2_probe() local
812 ar2 = kzalloc(sizeof (struct ati_remote2), GFP_KERNEL); in ati_remote2_probe()
813 if (!ar2) in ati_remote2_probe()
816 ar2->udev = udev; in ati_remote2_probe()
825 ar2->intf[0] = interface; in ati_remote2_probe()
826 ar2->ep[0] = &alt->endpoint[0].desc; in ati_remote2_probe()
829 ar2->intf[1] = usb_ifnum_to_if(udev, 1); in ati_remote2_probe()
830 if ((udev->actconfig->desc.bNumInterfaces < 2) || !ar2->intf[1]) { in ati_remote2_probe()
837 r = usb_driver_claim_interface(&ati_remote2_driver, ar2->intf[1], ar2); in ati_remote2_probe()
842 alt = ar2->intf[1]->cur_altsetting; in ati_remote2_probe()
849 ar2->ep[1] = &alt->endpoint[0].desc; in ati_remote2_probe()
851 r = ati_remote2_urb_init(ar2); in ati_remote2_probe()
855 ar2->channel_mask = channel_mask; in ati_remote2_probe()
856 ar2->mode_mask = mode_mask; in ati_remote2_probe()
858 r = ati_remote2_setup(ar2, ar2->channel_mask); in ati_remote2_probe()
862 usb_make_path(udev, ar2->phys, sizeof(ar2->phys)); in ati_remote2_probe()
863 strlcat(ar2->phys, "/input0", sizeof(ar2->phys)); in ati_remote2_probe()
865 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name)); in ati_remote2_probe()
871 r = ati_remote2_input_init(ar2); in ati_remote2_probe()
875 usb_set_intfdata(interface, ar2); in ati_remote2_probe()
884 ati_remote2_urb_cleanup(ar2); in ati_remote2_probe()
886 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); in ati_remote2_probe()
888 kfree(ar2); in ati_remote2_probe()
895 struct ati_remote2 *ar2; in ati_remote2_disconnect() local
901 ar2 = usb_get_intfdata(interface); in ati_remote2_disconnect()
904 input_unregister_device(ar2->idev); in ati_remote2_disconnect()
906 sysfs_remove_group(&ar2->udev->dev.kobj, &ati_remote2_attr_group); in ati_remote2_disconnect()
908 ati_remote2_urb_cleanup(ar2); in ati_remote2_disconnect()
910 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); in ati_remote2_disconnect()
912 kfree(ar2); in ati_remote2_disconnect()
918 struct ati_remote2 *ar2; in ati_remote2_suspend() local
924 ar2 = usb_get_intfdata(interface); in ati_remote2_suspend()
926 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_suspend()
930 if (ar2->flags & ATI_REMOTE2_OPENED) in ati_remote2_suspend()
931 ati_remote2_kill_urbs(ar2); in ati_remote2_suspend()
933 ar2->flags |= ATI_REMOTE2_SUSPENDED; in ati_remote2_suspend()
942 struct ati_remote2 *ar2; in ati_remote2_resume() local
949 ar2 = usb_get_intfdata(interface); in ati_remote2_resume()
951 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_resume()
955 if (ar2->flags & ATI_REMOTE2_OPENED) in ati_remote2_resume()
956 r = ati_remote2_submit_urbs(ar2); in ati_remote2_resume()
959 ar2->flags &= ~ATI_REMOTE2_SUSPENDED; in ati_remote2_resume()
968 struct ati_remote2 *ar2; in ati_remote2_reset_resume() local
975 ar2 = usb_get_intfdata(interface); in ati_remote2_reset_resume()
977 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_reset_resume()
981 r = ati_remote2_setup(ar2, ar2->channel_mask); in ati_remote2_reset_resume()
985 if (ar2->flags & ATI_REMOTE2_OPENED) in ati_remote2_reset_resume()
986 r = ati_remote2_submit_urbs(ar2); in ati_remote2_reset_resume()
989 ar2->flags &= ~ATI_REMOTE2_SUSPENDED; in ati_remote2_reset_resume()
999 struct ati_remote2 *ar2; in ati_remote2_pre_reset() local
1005 ar2 = usb_get_intfdata(interface); in ati_remote2_pre_reset()
1007 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_pre_reset()
1011 if (ar2->flags == ATI_REMOTE2_OPENED) in ati_remote2_pre_reset()
1012 ati_remote2_kill_urbs(ar2); in ati_remote2_pre_reset()
1019 struct ati_remote2 *ar2; in ati_remote2_post_reset() local
1026 ar2 = usb_get_intfdata(interface); in ati_remote2_post_reset()
1028 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__); in ati_remote2_post_reset()
1030 if (ar2->flags == ATI_REMOTE2_OPENED) in ati_remote2_post_reset()
1031 r = ati_remote2_submit_urbs(ar2); in ati_remote2_post_reset()