Lines Matching refs:ati_remote
64 * For instance, set channel_mask = 2^4 = 16 (binary 10000) to make ati_remote
176 "Unknown Medion X10 receiver, using default ati_remote Medion keymap\n");
232 struct ati_remote {
324 static int ati_remote_open(struct ati_remote *ati_remote)
328 mutex_lock(&ati_remote->open_mutex);
330 if (ati_remote->users++ != 0)
334 ati_remote->irq_urb->dev = ati_remote->udev;
335 if (usb_submit_urb(ati_remote->irq_urb, GFP_KERNEL)) {
336 dev_err(&ati_remote->interface->dev,
341 out: mutex_unlock(&ati_remote->open_mutex);
348 static void ati_remote_close(struct ati_remote *ati_remote)
350 mutex_lock(&ati_remote->open_mutex);
351 if (--ati_remote->users == 0)
352 usb_kill_urb(ati_remote->irq_urb);
353 mutex_unlock(&ati_remote->open_mutex);
358 struct ati_remote *ati_remote = input_get_drvdata(inputdev);
359 return ati_remote_open(ati_remote);
364 struct ati_remote *ati_remote = input_get_drvdata(inputdev);
365 ati_remote_close(ati_remote);
370 struct ati_remote *ati_remote = rdev->priv;
371 return ati_remote_open(ati_remote);
376 struct ati_remote *ati_remote = rdev->priv;
377 ati_remote_close(ati_remote);
385 struct ati_remote *ati_remote = urb->context;
388 dev_dbg(&ati_remote->interface->dev, "%s: status %d\n",
393 ati_remote->send_flags |= SEND_FLAG_COMPLETE;
395 wake_up(&ati_remote->wait);
403 static int ati_remote_sendpacket(struct ati_remote *ati_remote, u16 cmd,
409 memcpy(ati_remote->out_urb->transfer_buffer + 1, data, LO(cmd));
410 ((char *) ati_remote->out_urb->transfer_buffer)[0] = HI(cmd);
412 ati_remote->out_urb->transfer_buffer_length = LO(cmd) + 1;
413 ati_remote->out_urb->dev = ati_remote->udev;
414 ati_remote->send_flags = SEND_FLAG_IN_PROGRESS;
416 retval = usb_submit_urb(ati_remote->out_urb, GFP_ATOMIC);
418 dev_dbg(&ati_remote->interface->dev,
423 wait_event_timeout(ati_remote->wait,
424 ((ati_remote->out_urb->status != -EINPROGRESS) ||
425 (ati_remote->send_flags & SEND_FLAG_COMPLETE)),
427 usb_kill_urb(ati_remote->out_urb);
456 static int ati_remote_compute_accel(struct ati_remote *ati_remote)
463 if (time_after(now, ati_remote->old_jiffies + reset_time)) {
464 ati_remote->acc_jiffies = now;
470 if (time_before(now, ati_remote->acc_jiffies + timeout))
481 struct ati_remote *ati_remote = urb->context;
482 unsigned char *data= ati_remote->inbuf;
483 struct input_dev *dev = ati_remote->idev;
506 dbginfo(&ati_remote->interface->dev,
515 dbginfo(&ati_remote->interface->dev,
527 dbginfo(&ati_remote->interface->dev,
538 wheel_keycode = rc_g_keycode_from_table(ati_remote->rdev,
564 ati_remote->old_jiffies = jiffies;
570 if (ati_remote->old_data == data[2] &&
571 time_before(now, ati_remote->old_jiffies +
573 ati_remote->repeat_count++;
575 ati_remote->repeat_count = 0;
576 ati_remote->first_jiffies = now;
579 ati_remote->old_jiffies = now;
585 if (ati_remote->repeat_count > 0 &&
586 (ati_remote->repeat_count < 5 ||
587 time_before(now, ati_remote->first_jiffies +
615 rc_keydown_notimeout(ati_remote->rdev,
618 rc_keyup(ati_remote->rdev);
632 int acc = ati_remote_compute_accel(ati_remote);
637 ati_remote->old_jiffies = jiffies;
640 dev_dbg(&ati_remote->interface->dev, "ati_remote kind=%d\n",
646 ati_remote->old_data = data[2];
654 struct ati_remote *ati_remote = urb->context;
664 dev_dbg(&ati_remote->interface->dev,
669 dev_dbg(&ati_remote->interface->dev,
676 dev_err(&ati_remote->interface->dev,
685 struct ati_remote *ati_remote)
687 ati_remote->inbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
688 &ati_remote->inbuf_dma);
689 if (!ati_remote->inbuf)
692 ati_remote->outbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
693 &ati_remote->outbuf_dma);
694 if (!ati_remote->outbuf)
697 ati_remote->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
698 if (!ati_remote->irq_urb)
701 ati_remote->out_urb = usb_alloc_urb(0, GFP_KERNEL);
702 if (!ati_remote->out_urb)
711 static void ati_remote_free_buffers(struct ati_remote *ati_remote)
713 usb_free_urb(ati_remote->irq_urb);
714 usb_free_urb(ati_remote->out_urb);
716 usb_free_coherent(ati_remote->udev, DATA_BUFSIZE,
717 ati_remote->inbuf, ati_remote->inbuf_dma);
719 usb_free_coherent(ati_remote->udev, DATA_BUFSIZE,
720 ati_remote->outbuf, ati_remote->outbuf_dma);
723 static void ati_remote_input_init(struct ati_remote *ati_remote)
725 struct input_dev *idev = ati_remote->idev;
737 input_set_drvdata(idev, ati_remote);
742 idev->name = ati_remote->mouse_name;
743 idev->phys = ati_remote->mouse_phys;
745 usb_to_input_id(ati_remote->udev, &idev->id);
746 idev->dev.parent = &ati_remote->interface->dev;
749 static void ati_remote_rc_init(struct ati_remote *ati_remote)
751 struct rc_dev *rdev = ati_remote->rdev;
753 rdev->priv = ati_remote;
755 rdev->driver_name = "ati_remote";
760 rdev->device_name = ati_remote->rc_name;
761 rdev->input_phys = ati_remote->rc_phys;
763 usb_to_input_id(ati_remote->udev, &rdev->input_id);
764 rdev->dev.parent = &ati_remote->interface->dev;
767 static int ati_remote_initialize(struct ati_remote *ati_remote)
769 struct usb_device *udev = ati_remote->udev;
772 init_waitqueue_head(&ati_remote->wait);
775 pipe = usb_rcvintpipe(udev, ati_remote->endpoint_in->bEndpointAddress);
779 usb_fill_int_urb(ati_remote->irq_urb, udev, pipe, ati_remote->inbuf,
780 maxp, ati_remote_irq_in, ati_remote,
781 ati_remote->endpoint_in->bInterval);
782 ati_remote->irq_urb->transfer_dma = ati_remote->inbuf_dma;
783 ati_remote->irq_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
786 pipe = usb_sndintpipe(udev, ati_remote->endpoint_out->bEndpointAddress);
790 usb_fill_int_urb(ati_remote->out_urb, udev, pipe, ati_remote->outbuf,
791 maxp, ati_remote_irq_out, ati_remote,
792 ati_remote->endpoint_out->bInterval);
793 ati_remote->out_urb->transfer_dma = ati_remote->outbuf_dma;
794 ati_remote->out_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
797 if ((ati_remote_sendpacket(ati_remote, 0x8004, init1)) ||
798 (ati_remote_sendpacket(ati_remote, 0x8007, init2))) {
799 dev_err(&ati_remote->interface->dev,
800 "Initializing ati_remote hardware failed.\n");
817 struct ati_remote *ati_remote;
843 ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL);
845 if (!ati_remote || !rc_dev)
849 if (ati_remote_alloc_buffers(udev, ati_remote))
852 ati_remote->endpoint_in = endpoint_in;
853 ati_remote->endpoint_out = endpoint_out;
854 ati_remote->udev = udev;
855 ati_remote->rdev = rc_dev;
856 ati_remote->interface = interface;
858 usb_make_path(udev, ati_remote->rc_phys, sizeof(ati_remote->rc_phys));
859 strscpy(ati_remote->mouse_phys, ati_remote->rc_phys,
860 sizeof(ati_remote->mouse_phys));
862 strlcat(ati_remote->rc_phys, "/input0", sizeof(ati_remote->rc_phys));
863 strlcat(ati_remote->mouse_phys, "/input1", sizeof(ati_remote->mouse_phys));
865 snprintf(ati_remote->rc_name, sizeof(ati_remote->rc_name), "%s%s%s",
870 if (!strlen(ati_remote->rc_name))
871 snprintf(ati_remote->rc_name, sizeof(ati_remote->rc_name),
873 le16_to_cpu(ati_remote->udev->descriptor.idVendor),
874 le16_to_cpu(ati_remote->udev->descriptor.idProduct));
876 snprintf(ati_remote->mouse_name, sizeof(ati_remote->mouse_name),
877 "%s mouse", ati_remote->rc_name);
889 ati_remote_rc_init(ati_remote);
890 mutex_init(&ati_remote->open_mutex);
892 /* Device Hardware Initialization - fills in ati_remote->idev from udev. */
893 err = ati_remote_initialize(ati_remote);
898 err = rc_register_device(ati_remote->rdev);
910 ati_remote->idev = input_dev;
911 ati_remote_input_init(ati_remote);
918 usb_set_intfdata(interface, ati_remote);
927 usb_kill_urb(ati_remote->irq_urb);
928 usb_kill_urb(ati_remote->out_urb);
930 ati_remote_free_buffers(ati_remote);
933 kfree(ati_remote);
942 struct ati_remote *ati_remote;
944 ati_remote = usb_get_intfdata(interface);
946 if (!ati_remote) {
951 usb_kill_urb(ati_remote->irq_urb);
952 usb_kill_urb(ati_remote->out_urb);
953 if (ati_remote->idev)
954 input_unregister_device(ati_remote->idev);
955 rc_unregister_device(ati_remote->rdev);
956 ati_remote_free_buffers(ati_remote);
957 kfree(ati_remote);
962 .name = "ati_remote",