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