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