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

Lines Matching refs:ir

13  * Initial port from lirc driver to ir-core drivery by Jarod, based
40 #include <media/ir-core.h>
41 #include <media/ir-common.h>
234 /* ir-core bits */
304 static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
311 struct device *dev = ir->dev;
315 if (ir->flags.microsoft_gen1 && !out)
430 struct mceusb_dev *ir;
436 ir = urb->context;
437 if (ir) {
440 dev_dbg(ir->dev, "callback called (status=%d len=%d)\n",
444 mceusb_dev_printdata(ir, urb->transfer_buffer,
451 static void mce_request_packet(struct mceusb_dev *ir,
457 struct device *dev = ir->dev;
475 usb_fill_int_urb(async_urb, ir->usbdev,
476 usb_sndintpipe(ir->usbdev, ep->bEndpointAddress),
478 ir, ep->bInterval);
483 async_urb = ir->urb_in;
484 ir->send_flags = RECV_FLAG_IN_PROGRESS;
494 async_urb->dev = ir->usbdev;
504 static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size)
506 mce_request_packet(ir, ir->usb_ep_out, data, size, MCEUSB_TX);
509 static void mce_sync_in(struct mceusb_dev *ir, unsigned char *data, int size)
511 mce_request_packet(ir, ir->usb_ep_in, data, size, MCEUSB_RX);
517 struct mceusb_dev *ir = priv;
535 cmdbuf[cmdcount++] = ir->tx_mask;
579 mce_async_out(ir, cmdbuf, cmdcount);
602 struct mceusb_dev *ir = priv;
604 if (ir->flags.tx_mask_inverted)
605 ir->tx_mask = (mask != 0x03 ? mask ^ 0x03 : mask) << 1;
607 ir->tx_mask = mask;
615 struct mceusb_dev *ir = priv;
621 if (ir->carrier != carrier) {
624 ir->carrier = carrier;
627 dev_dbg(ir->dev, "%s: disabling carrier "
629 mce_async_out(ir, cmdbuf, sizeof(cmdbuf));
636 ir->carrier = carrier;
639 dev_dbg(ir->dev, "%s: requesting %u HZ "
643 mce_async_out(ir, cmdbuf, sizeof(cmdbuf));
655 static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
662 if (ir->flags.microsoft_gen1)
666 if (ir->rem == 0) {
669 hdr = ir->buf_in[i];
670 ir->rem = (hdr & MCE_PACKET_LENGTH_MASK);
671 ir->cmd = (hdr & ~MCE_PACKET_LENGTH_MASK);
672 dev_dbg(ir->dev, "New data. rem: 0x%02x, cmd: 0x%02x\n",
673 ir->rem, ir->cmd);
679 ir->rem = 0;
683 for (; (ir->rem > 0) && (i < buf_len); i++) {
684 ir->rem--;
686 rawir.pulse = ((ir->buf_in[i] & MCE_PULSE_BIT) != 0);
687 rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK)
690 if ((ir->buf_in[i] & MCE_PULSE_MASK) == 0x7f) {
691 if (ir->rawir.pulse == rawir.pulse)
692 ir->rawir.duration += rawir.duration;
694 ir->rawir.duration = rawir.duration;
695 ir->rawir.pulse = rawir.pulse;
699 rawir.duration += ir->rawir.duration;
700 ir->rawir.duration = 0;
701 ir->rawir.pulse = rawir.pulse;
703 dev_dbg(ir->dev, "Storing %s with duration %d\n",
707 ir_raw_event_store(ir->idev, &rawir);
710 if (ir->buf_in[i] == 0x80 || ir->buf_in[i] == 0x9f)
711 ir->rem = 0;
713 dev_dbg(ir->dev, "calling ir_raw_event_handle\n");
714 ir_raw_event_handle(ir->idev);
720 struct mceusb_dev *ir;
726 ir = urb->context;
727 if (!ir) {
735 mceusb_dev_printdata(ir, urb->transfer_buffer, buf_len, false);
737 if (ir->send_flags == RECV_FLAG_IN_PROGRESS) {
738 ir->send_flags = SEND_FLAG_COMPLETE;
739 dev_dbg(ir->dev, "setup answer received %d bytes\n",
746 mceusb_process_ir_data(ir, buf_len);
763 static void mceusb_gen1_init(struct mceusb_dev *ir)
766 int maxp = ir->len_in;
767 struct device *dev = ir->dev;
780 ret = usb_control_msg(ir->usbdev, usb_rcvctrlpipe(ir->usbdev, 0),
788 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
795 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
801 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
807 mce_async_out(ir, DEVICE_RESET, sizeof(DEVICE_RESET));
808 mce_sync_in(ir, NULL, maxp);
811 mce_async_out(ir, GET_REVISION, sizeof(GET_REVISION));
812 mce_sync_in(ir, NULL, maxp);
817 static void mceusb_gen2_init(struct mceusb_dev *ir)
819 int maxp = ir->len_in;
822 mce_async_out(ir, DEVICE_RESET, sizeof(DEVICE_RESET));
823 mce_sync_in(ir, NULL, maxp);
826 mce_async_out(ir, GET_REVISION, sizeof(GET_REVISION));
827 mce_sync_in(ir, NULL, maxp);
830 mce_async_out(ir, GET_UNKNOWN, sizeof(GET_UNKNOWN));
831 mce_sync_in(ir, NULL, maxp);
832 mce_async_out(ir, GET_UNKNOWN2, sizeof(GET_UNKNOWN2));
833 mce_sync_in(ir, NULL, maxp);
836 static void mceusb_get_parameters(struct mceusb_dev *ir)
838 int maxp = ir->len_in;
841 mce_async_out(ir, GET_CARRIER_FREQ, sizeof(GET_CARRIER_FREQ));
842 mce_sync_in(ir, NULL, maxp);
845 mce_async_out(ir, GET_TX_BITMASK, sizeof(GET_TX_BITMASK));
846 mce_sync_in(ir, NULL, maxp);
849 mce_async_out(ir, GET_RX_TIMEOUT, sizeof(GET_RX_TIMEOUT));
850 mce_sync_in(ir, NULL, maxp);
853 mce_async_out(ir, GET_RX_SENSOR, sizeof(GET_RX_SENSOR));
854 mce_sync_in(ir, NULL, maxp);
857 static struct input_dev *mceusb_init_input_dev(struct mceusb_dev *ir)
861 struct device *dev = ir->dev;
873 dev_err(dev, "remote ir dev props allocation failed\n");
877 snprintf(ir->name, sizeof(ir->name), "Media Center Ed. eHome "
879 le16_to_cpu(ir->usbdev->descriptor.idVendor),
880 le16_to_cpu(ir->usbdev->descriptor.idProduct));
882 idev->name = ir->name;
883 usb_make_path(ir->usbdev, ir->phys, sizeof(ir->phys));
884 strlcat(ir->phys, "/input0", sizeof(ir->phys));
885 idev->phys = ir->phys;
887 props->priv = ir;
894 ir->props = props;
920 struct mceusb_dev *ir = NULL;
977 ir = kzalloc(sizeof(struct mceusb_dev), GFP_KERNEL);
978 if (!ir)
981 ir->buf_in = usb_alloc_coherent(dev, maxp, GFP_ATOMIC, &ir->dma_in);
982 if (!ir->buf_in)
985 ir->urb_in = usb_alloc_urb(0, GFP_KERNEL);
986 if (!ir->urb_in)
989 ir->usbdev = dev;
990 ir->dev = &intf->dev;
991 ir->len_in = maxp;
992 ir->flags.microsoft_gen1 = is_microsoft_gen1;
993 ir->flags.tx_mask_inverted = tx_mask_inverted;
996 ir->usb_ep_in = ep_in;
997 ir->usb_ep_out = ep_out;
1009 ir->idev = mceusb_init_input_dev(ir);
1010 if (!ir->idev)
1014 mce_sync_in(ir, NULL, maxp);
1015 mce_sync_in(ir, NULL, maxp);
1018 usb_fill_int_urb(ir->urb_in, dev, pipe, ir->buf_in,
1019 maxp, (usb_complete_t) mceusb_dev_recv, ir, ep_in->bInterval);
1020 ir->urb_in->transfer_dma = ir->dma_in;
1021 ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
1024 if (ir->flags.microsoft_gen1)
1025 mceusb_gen1_init(ir);
1027 mceusb_gen2_init(ir);
1029 mceusb_get_parameters(ir);
1031 mceusb_set_tx_mask(ir, MCE_DEFAULT_TX_MASK);
1033 usb_set_intfdata(intf, ir);
1042 usb_free_urb(ir->urb_in);
1044 usb_free_coherent(dev, maxp, ir->buf_in, ir->dma_in);
1046 kfree(ir);
1057 struct mceusb_dev *ir = usb_get_intfdata(intf);
1061 if (!ir)
1064 ir->usbdev = NULL;
1065 ir_input_unregister(ir->idev);
1066 usb_kill_urb(ir->urb_in);
1067 usb_free_urb(ir->urb_in);
1068 usb_free_coherent(dev, ir->len_in, ir->buf_in, ir->dma_in);
1070 kfree(ir);
1075 struct mceusb_dev *ir = usb_get_intfdata(intf);
1076 dev_info(ir->dev, "suspend\n");
1077 usb_kill_urb(ir->urb_in);
1083 struct mceusb_dev *ir = usb_get_intfdata(intf);
1084 dev_info(ir->dev, "resume\n");
1085 if (usb_submit_urb(ir->urb_in, GFP_ATOMIC))