• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/misc/

Lines Matching refs:yld

59 #define DRIVER_VERSION "yld-20051230"
144 static int setChar(struct yealink_dev *yld, int el, int chr)
154 yld->lcdMap[el] = chr;
160 yld->master.b[a] |= m;
162 yld->master.b[a] &= ~m;
175 yld->master.b[a] |= m;
177 yld->master.b[a] &= ~m;
237 static void report_key(struct yealink_dev *yld, int key)
239 struct input_dev *idev = yld->idev;
241 if (yld->key_code >= 0) {
243 input_report_key(idev, yld->key_code & 0xff, 0);
244 if (yld->key_code >> 8)
245 input_report_key(idev, yld->key_code >> 8, 0);
248 yld->key_code = key;
262 static int yealink_cmd(struct yealink_dev *yld, struct yld_ctl_packet *p)
271 return usb_control_msg(yld->udev,
272 usb_sndctrlpipe(yld->udev, 0),
294 static int yealink_set_ringtone(struct yealink_dev *yld, u8 *buf, size_t size)
296 struct yld_ctl_packet *p = yld->ctl_data;
303 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
304 yld->ctl_data->cmd = CMD_RING_VOLUME;
305 yld->ctl_data->size = 1;
306 yld->ctl_data->data[0] = buf[0];
307 yealink_cmd(yld, p);
321 yealink_cmd(yld, p);
329 static int yealink_do_idle_tasks(struct yealink_dev *yld)
334 ix = yld->stat_ix;
336 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
337 yld->ctl_data->cmd = CMD_KEYPRESS;
338 yld->ctl_data->size = 1;
339 yld->ctl_data->sum = 0xff - CMD_KEYPRESS;
342 if (ix >= sizeof(yld->master)) {
343 yld->stat_ix = 0;
349 val = yld->master.b[ix];
350 if (val != yld->copy.b[ix])
352 } while (++ix < sizeof(yld->master));
355 yld->stat_ix = 0;
364 yld->copy.b[ix] = val;
365 yld->ctl_data->data[0] = val;
369 yld->ctl_data->cmd = CMD_LED;
370 yld->ctl_data->sum = -1 - CMD_LED - val;
373 yld->ctl_data->cmd = CMD_DIALTONE;
374 yld->ctl_data->sum = -1 - CMD_DIALTONE - val;
377 yld->ctl_data->cmd = CMD_RINGTONE;
378 yld->ctl_data->sum = -1 - CMD_RINGTONE - val;
383 yld->ctl_data->cmd = CMD_SCANCODE;
384 yld->ctl_data->offset = cpu_to_be16(val);
385 yld->ctl_data->data[0] = 0;
386 yld->ctl_data->sum = -1 - CMD_SCANCODE - val;
389 len = sizeof(yld->master.s.lcd) - ix;
390 if (len > sizeof(yld->ctl_data->data))
391 len = sizeof(yld->ctl_data->data);
395 yld->ctl_data->cmd = CMD_LCD;
396 yld->ctl_data->offset = cpu_to_be16(ix);
397 yld->ctl_data->size = len;
398 yld->ctl_data->sum = -CMD_LCD - ix - val - len;
401 val = yld->master.b[ix];
402 yld->copy.b[ix] = val;
403 yld->ctl_data->data[i] = val;
404 yld->ctl_data->sum -= val;
407 yld->stat_ix = ix + 1;
427 struct yealink_dev *yld = urb->context;
433 switch (yld->irq_data->cmd) {
436 yld->master.s.keynum = yld->irq_data->data[0];
440 dbg("get scancode %x", yld->irq_data->data[0]);
442 report_key(yld, map_p1k_to_key(yld->irq_data->data[0]));
446 err("unexpected response %x", yld->irq_data->cmd);
449 yealink_do_idle_tasks(yld);
451 if (!yld->shutdown) {
452 ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC);
460 struct yealink_dev *yld = urb->context;
466 switch (yld->ctl_data->cmd) {
470 if (!yld->shutdown)
471 ret = usb_submit_urb(yld->urb_irq, GFP_ATOMIC);
475 yealink_do_idle_tasks(yld);
476 if (!yld->shutdown)
477 ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC);
511 struct yealink_dev *yld = input_get_drvdata(dev);
517 for (i = 0; i<sizeof(yld->master); i++)
518 yld->copy.b[i] = ~yld->master.b[i];
519 yld->key_code = -1; /* no keys pressed */
521 yealink_set_ringtone(yld, default_ringtone, sizeof(default_ringtone));
524 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
525 yld->ctl_data->cmd = CMD_INIT;
526 yld->ctl_data->size = 10;
527 yld->ctl_data->sum = 0x100-CMD_INIT-10;
528 if ((ret = usb_submit_urb(yld->urb_ctl, GFP_KERNEL)) != 0) {
538 struct yealink_dev *yld = input_get_drvdata(dev);
540 yld->shutdown = 1;
547 usb_kill_urb(yld->urb_ctl);
548 usb_kill_urb(yld->urb_irq);
550 yld->shutdown = 0;
590 struct yealink_dev *yld;
594 yld = dev_get_drvdata(dev);
595 if (yld == NULL) {
604 *buf++ = yld->lcdMap[i];
640 struct yealink_dev *yld;
644 yld = dev_get_drvdata(dev);
645 if (yld == NULL) {
653 setChar(yld, el++, buf[i]);
685 struct yealink_dev *yld;
689 yld = dev_get_drvdata(dev);
690 if (yld == NULL) {
699 yld->lcdMap[i] == ' ' ? " " : "on",
710 struct yealink_dev *yld;
714 yld = dev_get_drvdata(dev);
715 if (yld == NULL) {
724 setChar(yld, i, chr);
753 struct yealink_dev *yld;
756 yld = dev_get_drvdata(dev);
757 if (yld == NULL) {
763 yealink_set_ringtone(yld, (char *)buf, count);
823 static int usb_cleanup(struct yealink_dev *yld, int err)
825 if (yld == NULL)
828 if (yld->idev) {
830 input_free_device(yld->idev);
832 input_unregister_device(yld->idev);
835 usb_free_urb(yld->urb_irq);
836 usb_free_urb(yld->urb_ctl);
838 kfree(yld->ctl_req);
839 usb_free_coherent(yld->udev, USB_PKT_LEN, yld->ctl_data, yld->ctl_dma);
840 usb_free_coherent(yld->udev, USB_PKT_LEN, yld->irq_data, yld->irq_dma);
842 kfree(yld);
848 struct yealink_dev *yld;
851 yld = usb_get_intfdata(intf);
856 usb_cleanup(yld, 0);
865 struct yealink_dev *yld;
874 yld = kzalloc(sizeof(struct yealink_dev), GFP_KERNEL);
875 if (!yld)
878 yld->udev = udev;
880 yld->idev = input_dev = input_allocate_device();
882 return usb_cleanup(yld, -ENOMEM);
885 yld->irq_data = usb_alloc_coherent(udev, USB_PKT_LEN,
886 GFP_ATOMIC, &yld->irq_dma);
887 if (yld->irq_data == NULL)
888 return usb_cleanup(yld, -ENOMEM);
890 yld->ctl_data = usb_alloc_coherent(udev, USB_PKT_LEN,
891 GFP_ATOMIC, &yld->ctl_dma);
892 if (!yld->ctl_data)
893 return usb_cleanup(yld, -ENOMEM);
895 yld->ctl_req = kmalloc(sizeof(*(yld->ctl_req)), GFP_KERNEL);
896 if (yld->ctl_req == NULL)
897 return usb_cleanup(yld, -ENOMEM);
900 yld->urb_irq = usb_alloc_urb(0, GFP_KERNEL);
901 if (yld->urb_irq == NULL)
902 return usb_cleanup(yld, -ENOMEM);
904 yld->urb_ctl = usb_alloc_urb(0, GFP_KERNEL);
905 if (yld->urb_ctl == NULL)
906 return usb_cleanup(yld, -ENOMEM);
915 usb_fill_int_urb(yld->urb_irq, udev, pipe, yld->irq_data,
918 yld, endpoint->bInterval);
919 yld->urb_irq->transfer_dma = yld->irq_dma;
920 yld->urb_irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
921 yld->urb_irq->dev = udev;
924 yld->ctl_req->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE |
926 yld->ctl_req->bRequest = USB_REQ_SET_CONFIGURATION;
927 yld->ctl_req->wValue = cpu_to_le16(0x200);
928 yld->ctl_req->wIndex = cpu_to_le16(interface->desc.bInterfaceNumber);
929 yld->ctl_req->wLength = cpu_to_le16(USB_PKT_LEN);
931 usb_fill_control_urb(yld->urb_ctl, udev, usb_sndctrlpipe(udev, 0),
932 (void *)yld->ctl_req, yld->ctl_data, USB_PKT_LEN,
933 urb_ctl_callback, yld);
934 yld->urb_ctl->transfer_dma = yld->ctl_dma;
935 yld->urb_ctl->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
936 yld->urb_ctl->dev = udev;
939 usb_make_path(udev, yld->phys, sizeof(yld->phys));
940 strlcat(yld->phys, "/input0", sizeof(yld->phys));
944 input_dev->phys = yld->phys;
948 input_set_drvdata(input_dev, yld);
965 ret = input_register_device(yld->idev);
967 return usb_cleanup(yld, ret);
969 usb_set_intfdata(intf, yld);
973 setChar(yld, i, ' ');