Lines Matching defs:yld

45 #define DRIVER_VERSION "yld-20051230"
129 static int setChar(struct yealink_dev *yld, int el, int chr)
139 yld->lcdMap[el] = chr;
145 yld->master.b[a] |= m;
147 yld->master.b[a] &= ~m;
160 yld->master.b[a] |= m;
162 yld->master.b[a] &= ~m;
222 static void report_key(struct yealink_dev *yld, int key)
224 struct input_dev *idev = yld->idev;
226 if (yld->key_code >= 0) {
228 input_report_key(idev, yld->key_code & 0xff, 0);
229 if (yld->key_code >> 8)
230 input_report_key(idev, yld->key_code >> 8, 0);
233 yld->key_code = key;
247 static int yealink_cmd(struct yealink_dev *yld, struct yld_ctl_packet *p)
256 return usb_control_msg(yld->udev,
257 usb_sndctrlpipe(yld->udev, 0),
279 static int yealink_set_ringtone(struct yealink_dev *yld, u8 *buf, size_t size)
281 struct yld_ctl_packet *p = yld->ctl_data;
288 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
289 yld->ctl_data->cmd = CMD_RING_VOLUME;
290 yld->ctl_data->size = 1;
291 yld->ctl_data->data[0] = buf[0];
292 yealink_cmd(yld, p);
306 yealink_cmd(yld, p);
314 static int yealink_do_idle_tasks(struct yealink_dev *yld)
319 ix = yld->stat_ix;
321 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
322 yld->ctl_data->cmd = CMD_KEYPRESS;
323 yld->ctl_data->size = 1;
324 yld->ctl_data->sum = 0xff - CMD_KEYPRESS;
327 if (ix >= sizeof(yld->master)) {
328 yld->stat_ix = 0;
334 val = yld->master.b[ix];
335 if (val != yld->copy.b[ix])
337 } while (++ix < sizeof(yld->master));
340 yld->stat_ix = 0;
349 yld->copy.b[ix] = val;
350 yld->ctl_data->data[0] = val;
354 yld->ctl_data->cmd = CMD_LED;
355 yld->ctl_data->sum = -1 - CMD_LED - val;
358 yld->ctl_data->cmd = CMD_DIALTONE;
359 yld->ctl_data->sum = -1 - CMD_DIALTONE - val;
362 yld->ctl_data->cmd = CMD_RINGTONE;
363 yld->ctl_data->sum = -1 - CMD_RINGTONE - val;
368 yld->ctl_data->cmd = CMD_SCANCODE;
369 yld->ctl_data->offset = cpu_to_be16(val);
370 yld->ctl_data->data[0] = 0;
371 yld->ctl_data->sum = -1 - CMD_SCANCODE - val;
374 len = sizeof(yld->master.s.lcd) - ix;
375 if (len > sizeof(yld->ctl_data->data))
376 len = sizeof(yld->ctl_data->data);
380 yld->ctl_data->cmd = CMD_LCD;
381 yld->ctl_data->offset = cpu_to_be16(ix);
382 yld->ctl_data->size = len;
383 yld->ctl_data->sum = -CMD_LCD - ix - val - len;
386 val = yld->master.b[ix];
387 yld->copy.b[ix] = val;
388 yld->ctl_data->data[i] = val;
389 yld->ctl_data->sum -= val;
392 yld->stat_ix = ix + 1;
412 struct yealink_dev *yld = urb->context;
416 dev_err(&yld->intf->dev, "%s - urb status %d\n",
419 switch (yld->irq_data->cmd) {
422 yld->master.s.keynum = yld->irq_data->data[0];
426 dev_dbg(&yld->intf->dev, "get scancode %x\n",
427 yld->irq_data->data[0]);
429 report_key(yld, map_p1k_to_key(yld->irq_data->data[0]));
433 dev_err(&yld->intf->dev, "unexpected response %x\n",
434 yld->irq_data->cmd);
437 yealink_do_idle_tasks(yld);
439 if (!yld->shutdown) {
440 ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC);
442 dev_err(&yld->intf->dev,
450 struct yealink_dev *yld = urb->context;
454 dev_err(&yld->intf->dev, "%s - urb status %d\n",
457 switch (yld->ctl_data->cmd) {
461 if (!yld->shutdown)
462 ret = usb_submit_urb(yld->urb_irq, GFP_ATOMIC);
466 yealink_do_idle_tasks(yld);
467 if (!yld->shutdown)
468 ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC);
473 dev_err(&yld->intf->dev, "%s - usb_submit_urb failed %d\n",
503 struct yealink_dev *yld = input_get_drvdata(dev);
506 dev_dbg(&yld->intf->dev, "%s\n", __func__);
509 for (i = 0; i<sizeof(yld->master); i++)
510 yld->copy.b[i] = ~yld->master.b[i];
511 yld->key_code = -1; /* no keys pressed */
513 yealink_set_ringtone(yld, default_ringtone, sizeof(default_ringtone));
516 memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
517 yld->ctl_data->cmd = CMD_INIT;
518 yld->ctl_data->size = 10;
519 yld->ctl_data->sum = 0x100-CMD_INIT-10;
520 if ((ret = usb_submit_urb(yld->urb_ctl, GFP_KERNEL)) != 0) {
521 dev_dbg(&yld->intf->dev,
531 struct yealink_dev *yld = input_get_drvdata(dev);
533 yld->shutdown = 1;
540 usb_kill_urb(yld->urb_ctl);
541 usb_kill_urb(yld->urb_irq);
543 yld->shutdown = 0;
583 struct yealink_dev *yld;
587 yld = dev_get_drvdata(dev);
588 if (yld == NULL) {
597 *buf++ = yld->lcdMap[i];
633 struct yealink_dev *yld;
637 yld = dev_get_drvdata(dev);
638 if (yld == NULL) {
646 setChar(yld, el++, buf[i]);
678 struct yealink_dev *yld;
682 yld = dev_get_drvdata(dev);
683 if (yld == NULL) {
692 yld->lcdMap[i] == ' ' ? " " : "on",
703 struct yealink_dev *yld;
707 yld = dev_get_drvdata(dev);
708 if (yld == NULL) {
717 setChar(yld, i, chr);
746 struct yealink_dev *yld;
749 yld = dev_get_drvdata(dev);
750 if (yld == NULL) {
756 yealink_set_ringtone(yld, (char *)buf, count);
816 static int usb_cleanup(struct yealink_dev *yld, int err)
818 if (yld == NULL)
821 if (yld->idev) {
823 input_free_device(yld->idev);
825 input_unregister_device(yld->idev);
828 usb_free_urb(yld->urb_irq);
829 usb_free_urb(yld->urb_ctl);
831 kfree(yld->ctl_req);
832 usb_free_coherent(yld->udev, USB_PKT_LEN, yld->ctl_data, yld->ctl_dma);
833 usb_free_coherent(yld->udev, USB_PKT_LEN, yld->irq_data, yld->irq_dma);
835 kfree(yld);
841 struct yealink_dev *yld;
844 yld = usb_get_intfdata(intf);
849 usb_cleanup(yld, 0);
858 struct yealink_dev *yld;
871 yld = kzalloc(sizeof(struct yealink_dev), GFP_KERNEL);
872 if (!yld)
875 yld->udev = udev;
876 yld->intf = intf;
878 yld->idev = input_dev = input_allocate_device();
880 return usb_cleanup(yld, -ENOMEM);
883 yld->irq_data = usb_alloc_coherent(udev, USB_PKT_LEN,
884 GFP_KERNEL, &yld->irq_dma);
885 if (yld->irq_data == NULL)
886 return usb_cleanup(yld, -ENOMEM);
888 yld->ctl_data = usb_alloc_coherent(udev, USB_PKT_LEN,
889 GFP_KERNEL, &yld->ctl_dma);
890 if (!yld->ctl_data)
891 return usb_cleanup(yld, -ENOMEM);
893 yld->ctl_req = kmalloc(sizeof(*(yld->ctl_req)), GFP_KERNEL);
894 if (yld->ctl_req == NULL)
895 return usb_cleanup(yld, -ENOMEM);
898 yld->urb_irq = usb_alloc_urb(0, GFP_KERNEL);
899 if (yld->urb_irq == NULL)
900 return usb_cleanup(yld, -ENOMEM);
902 yld->urb_ctl = usb_alloc_urb(0, GFP_KERNEL);
903 if (yld->urb_ctl == NULL)
904 return usb_cleanup(yld, -ENOMEM);
914 usb_fill_int_urb(yld->urb_irq, udev, pipe, yld->irq_data,
917 yld, endpoint->bInterval);
918 yld->urb_irq->transfer_dma = yld->irq_dma;
919 yld->urb_irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
920 yld->urb_irq->dev = udev;
923 yld->ctl_req->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE |
925 yld->ctl_req->bRequest = USB_REQ_SET_CONFIGURATION;
926 yld->ctl_req->wValue = cpu_to_le16(0x200);
927 yld->ctl_req->wIndex = cpu_to_le16(interface->desc.bInterfaceNumber);
928 yld->ctl_req->wLength = cpu_to_le16(USB_PKT_LEN);
930 usb_fill_control_urb(yld->urb_ctl, udev, usb_sndctrlpipe(udev, 0),
931 (void *)yld->ctl_req, yld->ctl_data, USB_PKT_LEN,
932 urb_ctl_callback, yld);
933 yld->urb_ctl->transfer_dma = yld->ctl_dma;
934 yld->urb_ctl->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
935 yld->urb_ctl->dev = udev;
938 usb_make_path(udev, yld->phys, sizeof(yld->phys));
939 strlcat(yld->phys, "/input0", sizeof(yld->phys));
943 input_dev->phys = yld->phys;
947 input_set_drvdata(input_dev, yld);
964 ret = input_register_device(yld->idev);
966 return usb_cleanup(yld, ret);
968 usb_set_intfdata(intf, yld);
972 setChar(yld, i, ' ');