Lines Matching refs:ati_remote
64 * For instance, set channel_mask = 2^4 = 16 (binary 10000) to make ati_remote
174 "Unknown Medion X10 receiver, using default ati_remote Medion keymap\n");
230 struct ati_remote {
322 static int ati_remote_open(struct ati_remote *ati_remote)
326 mutex_lock(&ati_remote->open_mutex);
328 if (ati_remote->users++ != 0)
332 ati_remote->irq_urb->dev = ati_remote->udev;
333 if (usb_submit_urb(ati_remote->irq_urb, GFP_KERNEL)) {
334 dev_err(&ati_remote->interface->dev,
339 out: mutex_unlock(&ati_remote->open_mutex);
346 static void ati_remote_close(struct ati_remote *ati_remote)
348 mutex_lock(&ati_remote->open_mutex);
349 if (--ati_remote->users == 0)
350 usb_kill_urb(ati_remote->irq_urb);
351 mutex_unlock(&ati_remote->open_mutex);
356 struct ati_remote *ati_remote = input_get_drvdata(inputdev);
357 return ati_remote_open(ati_remote);
362 struct ati_remote *ati_remote = input_get_drvdata(inputdev);
363 ati_remote_close(ati_remote);
368 struct ati_remote *ati_remote = rdev->priv;
369 return ati_remote_open(ati_remote);
374 struct ati_remote *ati_remote = rdev->priv;
375 ati_remote_close(ati_remote);
383 struct ati_remote *ati_remote = urb->context;
386 dev_dbg(&ati_remote->interface->dev, "%s: status %d\n",
391 ati_remote->send_flags |= SEND_FLAG_COMPLETE;
393 wake_up(&ati_remote->wait);
401 static int ati_remote_sendpacket(struct ati_remote *ati_remote, u16 cmd,
407 memcpy(ati_remote->out_urb->transfer_buffer + 1, data, LO(cmd));
408 ((char *) ati_remote->out_urb->transfer_buffer)[0] = HI(cmd);
410 ati_remote->out_urb->transfer_buffer_length = LO(cmd) + 1;
411 ati_remote->out_urb->dev = ati_remote->udev;
412 ati_remote->send_flags = SEND_FLAG_IN_PROGRESS;
414 retval = usb_submit_urb(ati_remote->out_urb, GFP_ATOMIC);
416 dev_dbg(&ati_remote->interface->dev,
421 wait_event_timeout(ati_remote->wait,
422 ((ati_remote->out_urb->status != -EINPROGRESS) ||
423 (ati_remote->send_flags & SEND_FLAG_COMPLETE)),
425 usb_kill_urb(ati_remote->out_urb);
454 static int ati_remote_compute_accel(struct ati_remote *ati_remote)
461 if (time_after(now, ati_remote->old_jiffies + reset_time)) {
462 ati_remote->acc_jiffies = now;
468 if (time_before(now, ati_remote->acc_jiffies + timeout))
479 struct ati_remote *ati_remote = urb->context;
480 unsigned char *data= ati_remote->inbuf;
481 struct input_dev *dev = ati_remote->idev;
504 dbginfo(&ati_remote->interface->dev,
513 dbginfo(&ati_remote->interface->dev,
525 dbginfo(&ati_remote->interface->dev,
536 wheel_keycode = rc_g_keycode_from_table(ati_remote->rdev,
562 ati_remote->old_jiffies = jiffies;
568 if (ati_remote->old_data == data[2] &&
569 time_before(now, ati_remote->old_jiffies +
571 ati_remote->repeat_count++;
573 ati_remote->repeat_count = 0;
574 ati_remote->first_jiffies = now;
577 ati_remote->old_jiffies = now;
583 if (ati_remote->repeat_count > 0 &&
584 (ati_remote->repeat_count < 5 ||
585 time_before(now, ati_remote->first_jiffies +
613 rc_keydown_notimeout(ati_remote->rdev,
616 rc_keyup(ati_remote->rdev);
630 int acc = ati_remote_compute_accel(ati_remote);
635 ati_remote->old_jiffies = jiffies;
638 dev_dbg(&ati_remote->interface->dev, "ati_remote kind=%d\n",
644 ati_remote->old_data = data[2];
652 struct ati_remote *ati_remote = urb->context;
662 dev_dbg(&ati_remote->interface->dev,
667 dev_dbg(&ati_remote->interface->dev,
674 dev_err(&ati_remote->interface->dev,
683 struct ati_remote *ati_remote)
685 ati_remote->inbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
686 &ati_remote->inbuf_dma);
687 if (!ati_remote->inbuf)
690 ati_remote->outbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
691 &ati_remote->outbuf_dma);
692 if (!ati_remote->outbuf)
695 ati_remote->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
696 if (!ati_remote->irq_urb)
699 ati_remote->out_urb = usb_alloc_urb(0, GFP_KERNEL);
700 if (!ati_remote->out_urb)
709 static void ati_remote_free_buffers(struct ati_remote *ati_remote)
711 usb_free_urb(ati_remote->irq_urb);
712 usb_free_urb(ati_remote->out_urb);
714 usb_free_coherent(ati_remote->udev, DATA_BUFSIZE,
715 ati_remote->inbuf, ati_remote->inbuf_dma);
717 usb_free_coherent(ati_remote->udev, DATA_BUFSIZE,
718 ati_remote->outbuf, ati_remote->outbuf_dma);
721 static void ati_remote_input_init(struct ati_remote *ati_remote)
723 struct input_dev *idev = ati_remote->idev;
735 input_set_drvdata(idev, ati_remote);
740 idev->name = ati_remote->mouse_name;
741 idev->phys = ati_remote->mouse_phys;
743 usb_to_input_id(ati_remote->udev, &idev->id);
744 idev->dev.parent = &ati_remote->interface->dev;
747 static void ati_remote_rc_init(struct ati_remote *ati_remote)
749 struct rc_dev *rdev = ati_remote->rdev;
751 rdev->priv = ati_remote;
753 rdev->driver_name = "ati_remote";
758 rdev->device_name = ati_remote->rc_name;
759 rdev->input_phys = ati_remote->rc_phys;
761 usb_to_input_id(ati_remote->udev, &rdev->input_id);
762 rdev->dev.parent = &ati_remote->interface->dev;
765 static int ati_remote_initialize(struct ati_remote *ati_remote)
767 struct usb_device *udev = ati_remote->udev;
770 init_waitqueue_head(&ati_remote->wait);
773 pipe = usb_rcvintpipe(udev, ati_remote->endpoint_in->bEndpointAddress);
777 usb_fill_int_urb(ati_remote->irq_urb, udev, pipe, ati_remote->inbuf,
778 maxp, ati_remote_irq_in, ati_remote,
779 ati_remote->endpoint_in->bInterval);
780 ati_remote->irq_urb->transfer_dma = ati_remote->inbuf_dma;
781 ati_remote->irq_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
784 pipe = usb_sndintpipe(udev, ati_remote->endpoint_out->bEndpointAddress);
788 usb_fill_int_urb(ati_remote->out_urb, udev, pipe, ati_remote->outbuf,
789 maxp, ati_remote_irq_out, ati_remote,
790 ati_remote->endpoint_out->bInterval);
791 ati_remote->out_urb->transfer_dma = ati_remote->outbuf_dma;
792 ati_remote->out_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
795 if ((ati_remote_sendpacket(ati_remote, 0x8004, init1)) ||
796 (ati_remote_sendpacket(ati_remote, 0x8007, init2))) {
797 dev_err(&ati_remote->interface->dev,
798 "Initializing ati_remote hardware failed.\n");
815 struct ati_remote *ati_remote;
842 ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL);
844 if (!ati_remote || !rc_dev)
848 if (ati_remote_alloc_buffers(udev, ati_remote))
851 ati_remote->endpoint_in = endpoint_in;
852 ati_remote->endpoint_out = endpoint_out;
853 ati_remote->udev = udev;
854 ati_remote->rdev = rc_dev;
855 ati_remote->interface = interface;
857 usb_make_path(udev, ati_remote->rc_phys, sizeof(ati_remote->rc_phys));
858 strscpy(ati_remote->mouse_phys, ati_remote->rc_phys,
859 sizeof(ati_remote->mouse_phys));
861 strlcat(ati_remote->rc_phys, "/input0", sizeof(ati_remote->rc_phys));
862 strlcat(ati_remote->mouse_phys, "/input1", sizeof(ati_remote->mouse_phys));
864 snprintf(ati_remote->rc_name, sizeof(ati_remote->rc_name), "%s%s%s",
869 if (!strlen(ati_remote->rc_name))
870 snprintf(ati_remote->rc_name, sizeof(ati_remote->rc_name),
872 le16_to_cpu(ati_remote->udev->descriptor.idVendor),
873 le16_to_cpu(ati_remote->udev->descriptor.idProduct));
875 snprintf(ati_remote->mouse_name, sizeof(ati_remote->mouse_name),
876 "%s mouse", ati_remote->rc_name);
888 ati_remote_rc_init(ati_remote);
889 mutex_init(&ati_remote->open_mutex);
891 /* Device Hardware Initialization - fills in ati_remote->idev from udev. */
892 err = ati_remote_initialize(ati_remote);
897 err = rc_register_device(ati_remote->rdev);
909 ati_remote->idev = input_dev;
910 ati_remote_input_init(ati_remote);
917 usb_set_intfdata(interface, ati_remote);
926 usb_kill_urb(ati_remote->irq_urb);
927 usb_kill_urb(ati_remote->out_urb);
929 ati_remote_free_buffers(ati_remote);
932 kfree(ati_remote);
941 struct ati_remote *ati_remote;
943 ati_remote = usb_get_intfdata(interface);
945 if (!ati_remote) {
950 usb_kill_urb(ati_remote->irq_urb);
951 usb_kill_urb(ati_remote->out_urb);
952 if (ati_remote->idev)
953 input_unregister_device(ati_remote->idev);
954 rc_unregister_device(ati_remote->rdev);
955 ati_remote_free_buffers(ati_remote);
956 kfree(ati_remote);
961 .name = "ati_remote",