Lines Matching refs:ar2
228 static int ati_remote2_submit_urbs(struct ati_remote2 *ar2)
232 r = usb_submit_urb(ar2->urb[0], GFP_KERNEL);
234 dev_err(&ar2->intf[0]->dev,
238 r = usb_submit_urb(ar2->urb[1], GFP_KERNEL);
240 usb_kill_urb(ar2->urb[0]);
241 dev_err(&ar2->intf[1]->dev,
249 static void ati_remote2_kill_urbs(struct ati_remote2 *ar2)
251 usb_kill_urb(ar2->urb[1]);
252 usb_kill_urb(ar2->urb[0]);
257 struct ati_remote2 *ar2 = input_get_drvdata(idev);
260 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
262 r = usb_autopm_get_interface(ar2->intf[0]);
264 dev_err(&ar2->intf[0]->dev,
271 if (!(ar2->flags & ATI_REMOTE2_SUSPENDED)) {
272 r = ati_remote2_submit_urbs(ar2);
277 ar2->flags |= ATI_REMOTE2_OPENED;
281 usb_autopm_put_interface(ar2->intf[0]);
287 usb_autopm_put_interface(ar2->intf[0]);
294 struct ati_remote2 *ar2 = input_get_drvdata(idev);
296 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
300 if (!(ar2->flags & ATI_REMOTE2_SUSPENDED))
301 ati_remote2_kill_urbs(ar2);
303 ar2->flags &= ~ATI_REMOTE2_OPENED;
308 static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
310 struct input_dev *idev = ar2->idev;
311 u8 *data = ar2->buf[0];
316 if (!((1 << channel) & ar2->channel_mask))
322 dev_err(&ar2->intf[0]->dev,
328 if (!((1 << mode) & ar2->mode_mask))
347 static void ati_remote2_input_key(struct ati_remote2 *ar2)
349 struct input_dev *idev = ar2->idev;
350 u8 *data = ar2->buf[1];
355 if (!((1 << channel) & ar2->channel_mask))
361 dev_err(&ar2->intf[1]->dev,
376 if (ar2->mode == mode)
380 ar2->mode = mode;
383 if (!((1 << mode) & ar2->mode_mask))
388 dev_err(&ar2->intf[1]->dev,
398 ar2->jiffies = jiffies + msecs_to_jiffies(idev->rep[REP_DELAY]);
403 if (ar2->keycode[mode][index] == BTN_LEFT ||
404 ar2->keycode[mode][index] == BTN_RIGHT)
407 if (!time_after_eq(jiffies, ar2->jiffies))
410 ar2->jiffies = jiffies + msecs_to_jiffies(idev->rep[REP_PERIOD]);
413 dev_err(&ar2->intf[1]->dev,
419 input_event(idev, EV_KEY, ar2->keycode[mode][index], data[1]);
425 struct ati_remote2 *ar2 = urb->context;
430 usb_mark_last_busy(ar2->udev);
431 ati_remote2_input_mouse(ar2);
437 dev_dbg(&ar2->intf[0]->dev,
441 usb_mark_last_busy(ar2->udev);
442 dev_err(&ar2->intf[0]->dev,
448 dev_err(&ar2->intf[0]->dev,
454 struct ati_remote2 *ar2 = urb->context;
459 usb_mark_last_busy(ar2->udev);
460 ati_remote2_input_key(ar2);
466 dev_dbg(&ar2->intf[1]->dev,
470 usb_mark_last_busy(ar2->udev);
471 dev_err(&ar2->intf[1]->dev,
477 dev_err(&ar2->intf[1]->dev,
484 struct ati_remote2 *ar2 = input_get_drvdata(idev);
514 ke->keycode = ar2->keycode[mode][offset];
526 struct ati_remote2 *ar2 = input_get_drvdata(idev);
552 *old_keycode = ar2->keycode[mode][offset];
553 ar2->keycode[mode][offset] = ke->keycode;
558 if (ar2->keycode[mode][index] == *old_keycode)
568 static int ati_remote2_input_init(struct ati_remote2 *ar2)
577 ar2->idev = idev;
578 input_set_drvdata(idev, ar2);
587 ar2->keycode[mode][index] = ati_remote2_key_table[index].keycode;
588 __set_bit(ar2->keycode[mode][index], idev->keybit);
594 ar2->keycode[ATI_REMOTE2_AUX1][index] = KEY_PROG1;
595 ar2->keycode[ATI_REMOTE2_AUX2][index] = KEY_PROG2;
596 ar2->keycode[ATI_REMOTE2_AUX3][index] = KEY_PROG3;
597 ar2->keycode[ATI_REMOTE2_AUX4][index] = KEY_PROG4;
598 ar2->keycode[ATI_REMOTE2_PC][index] = KEY_PC;
614 idev->name = ar2->name;
615 idev->phys = ar2->phys;
617 usb_to_input_id(ar2->udev, &idev->id);
618 idev->dev.parent = &ar2->udev->dev;
627 static int ati_remote2_urb_init(struct ati_remote2 *ar2)
629 struct usb_device *udev = ar2->udev;
633 ar2->buf[i] = usb_alloc_coherent(udev, 4, GFP_KERNEL, &ar2->buf_dma[i]);
634 if (!ar2->buf[i])
637 ar2->urb[i] = usb_alloc_urb(0, GFP_KERNEL);
638 if (!ar2->urb[i])
641 pipe = usb_rcvintpipe(udev, ar2->ep[i]->bEndpointAddress);
645 usb_fill_int_urb(ar2->urb[i], udev, pipe, ar2->buf[i], maxp,
647 ar2, ar2->ep[i]->bInterval);
648 ar2->urb[i]->transfer_dma = ar2->buf_dma[i];
649 ar2->urb[i]->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
655 static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
660 usb_free_urb(ar2->urb[i]);
661 usb_free_coherent(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]);
665 static int ati_remote2_setup(struct ati_remote2 *ar2, unsigned int ch_mask)
687 r = usb_control_msg(ar2->udev, usb_sndctrlpipe(ar2->udev, 0),
692 dev_err(&ar2->udev->dev, "%s - failed to set channel due to error: %d\n",
706 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
708 return sprintf(buf, "0x%04x\n", ar2->channel_mask);
717 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
728 r = usb_autopm_get_interface(ar2->intf[0]);
730 dev_err(&ar2->intf[0]->dev,
737 if (mask != ar2->channel_mask) {
738 r = ati_remote2_setup(ar2, mask);
740 ar2->channel_mask = mask;
745 usb_autopm_put_interface(ar2->intf[0]);
756 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
758 return sprintf(buf, "0x%02x\n", ar2->mode_mask);
767 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
778 ar2->mode_mask = mask;
803 struct ati_remote2 *ar2;
809 ar2 = kzalloc(sizeof (struct ati_remote2), GFP_KERNEL);
810 if (!ar2)
813 ar2->udev = udev;
822 ar2->intf[0] = interface;
823 ar2->ep[0] = &alt->endpoint[0].desc;
826 ar2->intf[1] = usb_ifnum_to_if(udev, 1);
827 if ((udev->actconfig->desc.bNumInterfaces < 2) || !ar2->intf[1]) {
834 r = usb_driver_claim_interface(&ati_remote2_driver, ar2->intf[1], ar2);
839 alt = ar2->intf[1]->cur_altsetting;
846 ar2->ep[1] = &alt->endpoint[0].desc;
848 r = ati_remote2_urb_init(ar2);
852 ar2->channel_mask = channel_mask;
853 ar2->mode_mask = mode_mask;
855 r = ati_remote2_setup(ar2, ar2->channel_mask);
859 usb_make_path(udev, ar2->phys, sizeof(ar2->phys));
860 strlcat(ar2->phys, "/input0", sizeof(ar2->phys));
862 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name));
868 r = ati_remote2_input_init(ar2);
872 usb_set_intfdata(interface, ar2);
881 ati_remote2_urb_cleanup(ar2);
883 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
885 kfree(ar2);
892 struct ati_remote2 *ar2;
898 ar2 = usb_get_intfdata(interface);
901 input_unregister_device(ar2->idev);
903 sysfs_remove_group(&ar2->udev->dev.kobj, &ati_remote2_attr_group);
905 ati_remote2_urb_cleanup(ar2);
907 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
909 kfree(ar2);
915 struct ati_remote2 *ar2;
921 ar2 = usb_get_intfdata(interface);
923 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
927 if (ar2->flags & ATI_REMOTE2_OPENED)
928 ati_remote2_kill_urbs(ar2);
930 ar2->flags |= ATI_REMOTE2_SUSPENDED;
939 struct ati_remote2 *ar2;
946 ar2 = usb_get_intfdata(interface);
948 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
952 if (ar2->flags & ATI_REMOTE2_OPENED)
953 r = ati_remote2_submit_urbs(ar2);
956 ar2->flags &= ~ATI_REMOTE2_SUSPENDED;
965 struct ati_remote2 *ar2;
972 ar2 = usb_get_intfdata(interface);
974 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
978 r = ati_remote2_setup(ar2, ar2->channel_mask);
982 if (ar2->flags & ATI_REMOTE2_OPENED)
983 r = ati_remote2_submit_urbs(ar2);
986 ar2->flags &= ~ATI_REMOTE2_SUSPENDED;
996 struct ati_remote2 *ar2;
1002 ar2 = usb_get_intfdata(interface);
1004 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
1008 if (ar2->flags == ATI_REMOTE2_OPENED)
1009 ati_remote2_kill_urbs(ar2);
1016 struct ati_remote2 *ar2;
1023 ar2 = usb_get_intfdata(interface);
1025 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
1027 if (ar2->flags == ATI_REMOTE2_OPENED)
1028 r = ati_remote2_submit_urbs(ar2);