aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/rc
diff options
context:
space:
mode:
authorSean Young <sean@mess.org>2014-01-20 17:10:44 -0500
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-02-04 14:35:35 -0500
commit6b4a16c36400143efe4b693bbdf65c0367b7e1ac (patch)
treeb167f35360420c6c7ff7efe865af68c0ffe215aa /drivers/media/rc
parent776eced0e336f88fdbe4374306de1f8acaeffcc4 (diff)
[media] mceusb: improve error logging
A number of recent bug reports involve usb_submit_urb() failing which was only reported with debug parameter on. In addition, remove custom debug function. [m.chehab@samsung.com: patch rebased, as one of the patches on this series need changes] Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/rc')
-rw-r--r--drivers/media/rc/mceusb.c182
1 files changed, 85 insertions, 97 deletions
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
index a25bb1581e46..c01b4c1f64ca 100644
--- a/drivers/media/rc/mceusb.c
+++ b/drivers/media/rc/mceusb.c
@@ -84,7 +84,7 @@
84#define MCE_PORT_IR 0x4 /* (0x4 << 5) | MCE_CMD = 0x9f */ 84#define MCE_PORT_IR 0x4 /* (0x4 << 5) | MCE_CMD = 0x9f */
85#define MCE_PORT_SYS 0x7 /* (0x7 << 5) | MCE_CMD = 0xff */ 85#define MCE_PORT_SYS 0x7 /* (0x7 << 5) | MCE_CMD = 0xff */
86#define MCE_PORT_SER 0x6 /* 0xc0 thru 0xdf flush & 0x1f bytes */ 86#define MCE_PORT_SER 0x6 /* 0xc0 thru 0xdf flush & 0x1f bytes */
87#define MCE_PORT_MASK 0xe0 /* Mask out command bits */ 87#define MCE_PORT_MASK 0xe0 /* Mask out command bits */
88 88
89/* Command port headers */ 89/* Command port headers */
90#define MCE_CMD_PORT_IR 0x9f /* IR-related cmd/rsp */ 90#define MCE_CMD_PORT_IR 0x9f /* IR-related cmd/rsp */
@@ -153,19 +153,6 @@
153#define MCE_COMMAND_IRDATA 0x80 153#define MCE_COMMAND_IRDATA 0x80
154#define MCE_PACKET_LENGTH_MASK 0x1f /* Packet length mask */ 154#define MCE_PACKET_LENGTH_MASK 0x1f /* Packet length mask */
155 155
156/* module parameters */
157#ifdef CONFIG_USB_DEBUG
158static bool debug = 1;
159#else
160static bool debug;
161#endif
162
163#define mce_dbg(dev, fmt, ...) \
164 do { \
165 if (debug) \
166 dev_info(dev, fmt, ## __VA_ARGS__); \
167 } while (0)
168
169/* general constants */ 156/* general constants */
170#define SEND_FLAG_IN_PROGRESS 1 157#define SEND_FLAG_IN_PROGRESS 1
171#define SEND_FLAG_COMPLETE 2 158#define SEND_FLAG_COMPLETE 2
@@ -541,16 +528,13 @@ static int mceusb_cmd_datasize(u8 cmd, u8 subcmd)
541static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf, 528static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
542 int offset, int len, bool out) 529 int offset, int len, bool out)
543{ 530{
544 char codes[USB_BUFLEN * 3 + 1]; 531#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
545 char inout[9]; 532 char *inout;
546 u8 cmd, subcmd, data1, data2, data3, data4; 533 u8 cmd, subcmd, data1, data2, data3, data4;
547 struct device *dev = ir->dev; 534 struct device *dev = ir->dev;
548 int i, start, skip = 0; 535 int start, skip = 0;
549 u32 carrier, period; 536 u32 carrier, period;
550 537
551 if (!debug)
552 return;
553
554 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */ 538 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */
555 if (ir->flags.microsoft_gen1 && !out && !offset) 539 if (ir->flags.microsoft_gen1 && !out && !offset)
556 skip = 2; 540 skip = 2;
@@ -558,16 +542,10 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
558 if (len <= skip) 542 if (len <= skip)
559 return; 543 return;
560 544
561 for (i = 0; i < len && i < USB_BUFLEN; i++) 545 dev_dbg(dev, "%cx data: %*ph (length=%d)",
562 snprintf(codes + i * 3, 4, "%02x ", buf[i + offset] & 0xff); 546 (out ? 't' : 'r'), min(len, USB_BUFLEN), buf, len);
563
564 dev_info(dev, "%sx data: %s(length=%d)\n",
565 (out ? "t" : "r"), codes, len);
566 547
567 if (out) 548 inout = out ? "Request" : "Got";
568 strcpy(inout, "Request\0");
569 else
570 strcpy(inout, "Got\0");
571 549
572 start = offset + skip; 550 start = offset + skip;
573 cmd = buf[start] & 0xff; 551 cmd = buf[start] & 0xff;
@@ -583,50 +561,50 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
583 break; 561 break;
584 if ((subcmd == MCE_CMD_PORT_SYS) && 562 if ((subcmd == MCE_CMD_PORT_SYS) &&
585 (data1 == MCE_CMD_RESUME)) 563 (data1 == MCE_CMD_RESUME))
586 dev_info(dev, "Device resume requested\n"); 564 dev_dbg(dev, "Device resume requested");
587 else 565 else
588 dev_info(dev, "Unknown command 0x%02x 0x%02x\n", 566 dev_dbg(dev, "Unknown command 0x%02x 0x%02x",
589 cmd, subcmd); 567 cmd, subcmd);
590 break; 568 break;
591 case MCE_CMD_PORT_SYS: 569 case MCE_CMD_PORT_SYS:
592 switch (subcmd) { 570 switch (subcmd) {
593 case MCE_RSP_EQEMVER: 571 case MCE_RSP_EQEMVER:
594 if (!out) 572 if (!out)
595 dev_info(dev, "Emulator interface version %x\n", 573 dev_dbg(dev, "Emulator interface version %x",
596 data1); 574 data1);
597 break; 575 break;
598 case MCE_CMD_G_REVISION: 576 case MCE_CMD_G_REVISION:
599 if (len == 2) 577 if (len == 2)
600 dev_info(dev, "Get hw/sw rev?\n"); 578 dev_dbg(dev, "Get hw/sw rev?");
601 else 579 else
602 dev_info(dev, "hw/sw rev 0x%02x 0x%02x " 580 dev_dbg(dev, "hw/sw rev 0x%02x 0x%02x 0x%02x 0x%02x",
603 "0x%02x 0x%02x\n", data1, data2, 581 data1, data2,
604 buf[start + 4], buf[start + 5]); 582 buf[start + 4], buf[start + 5]);
605 break; 583 break;
606 case MCE_CMD_RESUME: 584 case MCE_CMD_RESUME:
607 dev_info(dev, "Device resume requested\n"); 585 dev_dbg(dev, "Device resume requested");
608 break; 586 break;
609 case MCE_RSP_CMD_ILLEGAL: 587 case MCE_RSP_CMD_ILLEGAL:
610 dev_info(dev, "Illegal PORT_SYS command\n"); 588 dev_dbg(dev, "Illegal PORT_SYS command");
611 break; 589 break;
612 case MCE_RSP_EQWAKEVERSION: 590 case MCE_RSP_EQWAKEVERSION:
613 if (!out) 591 if (!out)
614 dev_info(dev, "Wake version, proto: 0x%02x, " 592 dev_dbg(dev, "Wake version, proto: 0x%02x, "
615 "payload: 0x%02x, address: 0x%02x, " 593 "payload: 0x%02x, address: 0x%02x, "
616 "version: 0x%02x\n", 594 "version: 0x%02x",
617 data1, data2, data3, data4); 595 data1, data2, data3, data4);
618 break; 596 break;
619 case MCE_RSP_GETPORTSTATUS: 597 case MCE_RSP_GETPORTSTATUS:
620 if (!out) 598 if (!out)
621 /* We use data1 + 1 here, to match hw labels */ 599 /* We use data1 + 1 here, to match hw labels */
622 dev_info(dev, "TX port %d: blaster is%s connected\n", 600 dev_dbg(dev, "TX port %d: blaster is%s connected",
623 data1 + 1, data4 ? " not" : ""); 601 data1 + 1, data4 ? " not" : "");
624 break; 602 break;
625 case MCE_CMD_FLASHLED: 603 case MCE_CMD_FLASHLED:
626 dev_info(dev, "Attempting to flash LED\n"); 604 dev_dbg(dev, "Attempting to flash LED");
627 break; 605 break;
628 default: 606 default:
629 dev_info(dev, "Unknown command 0x%02x 0x%02x\n", 607 dev_dbg(dev, "Unknown command 0x%02x 0x%02x",
630 cmd, subcmd); 608 cmd, subcmd);
631 break; 609 break;
632 } 610 }
@@ -634,13 +612,13 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
634 case MCE_CMD_PORT_IR: 612 case MCE_CMD_PORT_IR:
635 switch (subcmd) { 613 switch (subcmd) {
636 case MCE_CMD_SIG_END: 614 case MCE_CMD_SIG_END:
637 dev_info(dev, "End of signal\n"); 615 dev_dbg(dev, "End of signal");
638 break; 616 break;
639 case MCE_CMD_PING: 617 case MCE_CMD_PING:
640 dev_info(dev, "Ping\n"); 618 dev_dbg(dev, "Ping");
641 break; 619 break;
642 case MCE_CMD_UNKNOWN: 620 case MCE_CMD_UNKNOWN:
643 dev_info(dev, "Resp to 9f 05 of 0x%02x 0x%02x\n", 621 dev_dbg(dev, "Resp to 9f 05 of 0x%02x 0x%02x",
644 data1, data2); 622 data1, data2);
645 break; 623 break;
646 case MCE_RSP_EQIRCFS: 624 case MCE_RSP_EQIRCFS:
@@ -649,51 +627,51 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
649 if (!period) 627 if (!period)
650 break; 628 break;
651 carrier = (1000 * 1000) / period; 629 carrier = (1000 * 1000) / period;
652 dev_info(dev, "%s carrier of %u Hz (period %uus)\n", 630 dev_dbg(dev, "%s carrier of %u Hz (period %uus)",
653 inout, carrier, period); 631 inout, carrier, period);
654 break; 632 break;
655 case MCE_CMD_GETIRCFS: 633 case MCE_CMD_GETIRCFS:
656 dev_info(dev, "Get carrier mode and freq\n"); 634 dev_dbg(dev, "Get carrier mode and freq");
657 break; 635 break;
658 case MCE_RSP_EQIRTXPORTS: 636 case MCE_RSP_EQIRTXPORTS:
659 dev_info(dev, "%s transmit blaster mask of 0x%02x\n", 637 dev_dbg(dev, "%s transmit blaster mask of 0x%02x",
660 inout, data1); 638 inout, data1);
661 break; 639 break;
662 case MCE_RSP_EQIRTIMEOUT: 640 case MCE_RSP_EQIRTIMEOUT:
663 /* value is in units of 50us, so x*50/1000 ms */ 641 /* value is in units of 50us, so x*50/1000 ms */
664 period = ((data1 << 8) | data2) * MCE_TIME_UNIT / 1000; 642 period = ((data1 << 8) | data2) * MCE_TIME_UNIT / 1000;
665 dev_info(dev, "%s receive timeout of %d ms\n", 643 dev_dbg(dev, "%s receive timeout of %d ms",
666 inout, period); 644 inout, period);
667 break; 645 break;
668 case MCE_CMD_GETIRTIMEOUT: 646 case MCE_CMD_GETIRTIMEOUT:
669 dev_info(dev, "Get receive timeout\n"); 647 dev_dbg(dev, "Get receive timeout");
670 break; 648 break;
671 case MCE_CMD_GETIRTXPORTS: 649 case MCE_CMD_GETIRTXPORTS:
672 dev_info(dev, "Get transmit blaster mask\n"); 650 dev_dbg(dev, "Get transmit blaster mask");
673 break; 651 break;
674 case MCE_RSP_EQIRRXPORTEN: 652 case MCE_RSP_EQIRRXPORTEN:
675 dev_info(dev, "%s %s-range receive sensor in use\n", 653 dev_dbg(dev, "%s %s-range receive sensor in use",
676 inout, data1 == 0x02 ? "short" : "long"); 654 inout, data1 == 0x02 ? "short" : "long");
677 break; 655 break;
678 case MCE_CMD_GETIRRXPORTEN: 656 case MCE_CMD_GETIRRXPORTEN:
679 /* aka MCE_RSP_EQIRRXCFCNT */ 657 /* aka MCE_RSP_EQIRRXCFCNT */
680 if (out) 658 if (out)
681 dev_info(dev, "Get receive sensor\n"); 659 dev_dbg(dev, "Get receive sensor");
682 else if (ir->learning_enabled) 660 else if (ir->learning_enabled)
683 dev_info(dev, "RX pulse count: %d\n", 661 dev_dbg(dev, "RX pulse count: %d",
684 ((data1 << 8) | data2)); 662 ((data1 << 8) | data2));
685 break; 663 break;
686 case MCE_RSP_EQIRNUMPORTS: 664 case MCE_RSP_EQIRNUMPORTS:
687 if (out) 665 if (out)
688 break; 666 break;
689 dev_info(dev, "Num TX ports: %x, num RX ports: %x\n", 667 dev_dbg(dev, "Num TX ports: %x, num RX ports: %x",
690 data1, data2); 668 data1, data2);
691 break; 669 break;
692 case MCE_RSP_CMD_ILLEGAL: 670 case MCE_RSP_CMD_ILLEGAL:
693 dev_info(dev, "Illegal PORT_IR command\n"); 671 dev_dbg(dev, "Illegal PORT_IR command");
694 break; 672 break;
695 default: 673 default:
696 dev_info(dev, "Unknown command 0x%02x 0x%02x\n", 674 dev_dbg(dev, "Unknown command 0x%02x 0x%02x",
697 cmd, subcmd); 675 cmd, subcmd);
698 break; 676 break;
699 } 677 }
@@ -703,10 +681,11 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
703 } 681 }
704 682
705 if (cmd == MCE_IRDATA_TRAILER) 683 if (cmd == MCE_IRDATA_TRAILER)
706 dev_info(dev, "End of raw IR data\n"); 684 dev_dbg(dev, "End of raw IR data");
707 else if ((cmd != MCE_CMD_PORT_IR) && 685 else if ((cmd != MCE_CMD_PORT_IR) &&
708 ((cmd & MCE_PORT_MASK) == MCE_COMMAND_IRDATA)) 686 ((cmd & MCE_PORT_MASK) == MCE_COMMAND_IRDATA))
709 dev_info(dev, "Raw IR data, %d pulse/space samples\n", ir->rem); 687 dev_dbg(dev, "Raw IR data, %d pulse/space samples", ir->rem);
688#endif
710} 689}
711 690
712static void mce_async_callback(struct urb *urb) 691static void mce_async_callback(struct urb *urb)
@@ -718,10 +697,25 @@ static void mce_async_callback(struct urb *urb)
718 return; 697 return;
719 698
720 ir = urb->context; 699 ir = urb->context;
721 if (ir) { 700
701 switch (urb->status) {
702 /* success */
703 case 0:
722 len = urb->actual_length; 704 len = urb->actual_length;
723 705
724 mceusb_dev_printdata(ir, urb->transfer_buffer, 0, len, true); 706 mceusb_dev_printdata(ir, urb->transfer_buffer, 0, len, true);
707 break;
708
709 case -ECONNRESET:
710 case -ENOENT:
711 case -EILSEQ:
712 case -ESHUTDOWN:
713 break;
714
715 case -EPIPE:
716 default:
717 dev_err(ir->dev, "Error: request urb status = %d", urb->status);
718 break;
725 } 719 }
726 720
727 /* the transfer buffer and urb were allocated in mce_request_packet */ 721 /* the transfer buffer and urb were allocated in mce_request_packet */
@@ -770,17 +764,17 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data,
770 return; 764 return;
771 } 765 }
772 766
773 mce_dbg(dev, "receive request called (size=%#x)\n", size); 767 dev_dbg(dev, "receive request called (size=%#x)", size);
774 768
775 async_urb->transfer_buffer_length = size; 769 async_urb->transfer_buffer_length = size;
776 async_urb->dev = ir->usbdev; 770 async_urb->dev = ir->usbdev;
777 771
778 res = usb_submit_urb(async_urb, GFP_ATOMIC); 772 res = usb_submit_urb(async_urb, GFP_ATOMIC);
779 if (res) { 773 if (res) {
780 mce_dbg(dev, "receive request FAILED! (res=%d)\n", res); 774 dev_err(dev, "receive request FAILED! (res=%d)", res);
781 return; 775 return;
782 } 776 }
783 mce_dbg(dev, "receive request complete (res=%d)\n", res); 777 dev_dbg(dev, "receive request complete (res=%d)", res);
784} 778}
785 779
786static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size) 780static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size)
@@ -895,8 +889,7 @@ static int mceusb_set_tx_carrier(struct rc_dev *dev, u32 carrier)
895 ir->carrier = carrier; 889 ir->carrier = carrier;
896 cmdbuf[2] = MCE_CMD_SIG_END; 890 cmdbuf[2] = MCE_CMD_SIG_END;
897 cmdbuf[3] = MCE_IRDATA_TRAILER; 891 cmdbuf[3] = MCE_IRDATA_TRAILER;
898 mce_dbg(ir->dev, "%s: disabling carrier " 892 dev_dbg(ir->dev, "disabling carrier modulation");
899 "modulation\n", __func__);
900 mce_async_out(ir, cmdbuf, sizeof(cmdbuf)); 893 mce_async_out(ir, cmdbuf, sizeof(cmdbuf));
901 return carrier; 894 return carrier;
902 } 895 }
@@ -907,8 +900,8 @@ static int mceusb_set_tx_carrier(struct rc_dev *dev, u32 carrier)
907 ir->carrier = carrier; 900 ir->carrier = carrier;
908 cmdbuf[2] = prescaler; 901 cmdbuf[2] = prescaler;
909 cmdbuf[3] = divisor; 902 cmdbuf[3] = divisor;
910 mce_dbg(ir->dev, "%s: requesting %u HZ " 903 dev_dbg(ir->dev, "requesting %u HZ carrier",
911 "carrier\n", __func__, carrier); 904 carrier);
912 905
913 /* Transmit new carrier to mce device */ 906 /* Transmit new carrier to mce device */
914 mce_async_out(ir, cmdbuf, sizeof(cmdbuf)); 907 mce_async_out(ir, cmdbuf, sizeof(cmdbuf));
@@ -998,7 +991,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
998 rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK) 991 rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK)
999 * US_TO_NS(MCE_TIME_UNIT); 992 * US_TO_NS(MCE_TIME_UNIT);
1000 993
1001 mce_dbg(ir->dev, "Storing %s with duration %d\n", 994 dev_dbg(ir->dev, "Storing %s with duration %d",
1002 rawir.pulse ? "pulse" : "space", 995 rawir.pulse ? "pulse" : "space",
1003 rawir.duration); 996 rawir.duration);
1004 997
@@ -1032,7 +1025,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
1032 ir->parser_state = CMD_HEADER; 1025 ir->parser_state = CMD_HEADER;
1033 } 1026 }
1034 if (event) { 1027 if (event) {
1035 mce_dbg(ir->dev, "processed IR data, calling ir_raw_event_handle\n"); 1028 dev_dbg(ir->dev, "processed IR data");
1036 ir_raw_event_handle(ir->rc); 1029 ir_raw_event_handle(ir->rc);
1037 } 1030 }
1038} 1031}
@@ -1055,7 +1048,7 @@ static void mceusb_dev_recv(struct urb *urb)
1055 1048
1056 if (ir->send_flags == RECV_FLAG_IN_PROGRESS) { 1049 if (ir->send_flags == RECV_FLAG_IN_PROGRESS) {
1057 ir->send_flags = SEND_FLAG_COMPLETE; 1050 ir->send_flags = SEND_FLAG_COMPLETE;
1058 mce_dbg(ir->dev, "setup answer received %d bytes\n", 1051 dev_dbg(ir->dev, "setup answer received %d bytes\n",
1059 buf_len); 1052 buf_len);
1060 } 1053 }
1061 1054
@@ -1067,13 +1060,14 @@ static void mceusb_dev_recv(struct urb *urb)
1067 1060
1068 case -ECONNRESET: 1061 case -ECONNRESET:
1069 case -ENOENT: 1062 case -ENOENT:
1063 case -EILSEQ:
1070 case -ESHUTDOWN: 1064 case -ESHUTDOWN:
1071 usb_unlink_urb(urb); 1065 usb_unlink_urb(urb);
1072 return; 1066 return;
1073 1067
1074 case -EPIPE: 1068 case -EPIPE:
1075 default: 1069 default:
1076 mce_dbg(ir->dev, "Error: urb status = %d\n", urb->status); 1070 dev_err(ir->dev, "Error: urb status = %d", urb->status);
1077 break; 1071 break;
1078 } 1072 }
1079 1073
@@ -1095,7 +1089,7 @@ static void mceusb_gen1_init(struct mceusb_dev *ir)
1095 1089
1096 data = kzalloc(USB_CTRL_MSG_SZ, GFP_KERNEL); 1090 data = kzalloc(USB_CTRL_MSG_SZ, GFP_KERNEL);
1097 if (!data) { 1091 if (!data) {
1098 dev_err(dev, "%s: memory allocation failed!\n", __func__); 1092 dev_err(dev, "%s: memory allocation failed!", __func__);
1099 return; 1093 return;
1100 } 1094 }
1101 1095
@@ -1106,28 +1100,28 @@ static void mceusb_gen1_init(struct mceusb_dev *ir)
1106 ret = usb_control_msg(ir->usbdev, usb_rcvctrlpipe(ir->usbdev, 0), 1100 ret = usb_control_msg(ir->usbdev, usb_rcvctrlpipe(ir->usbdev, 0),
1107 USB_REQ_SET_ADDRESS, USB_TYPE_VENDOR, 0, 0, 1101 USB_REQ_SET_ADDRESS, USB_TYPE_VENDOR, 0, 0,
1108 data, USB_CTRL_MSG_SZ, HZ * 3); 1102 data, USB_CTRL_MSG_SZ, HZ * 3);
1109 mce_dbg(dev, "%s - ret = %d\n", __func__, ret); 1103 dev_dbg(dev, "set address - ret = %d", ret);
1110 mce_dbg(dev, "%s - data[0] = %d, data[1] = %d\n", 1104 dev_dbg(dev, "set address - data[0] = %d, data[1] = %d",
1111 __func__, data[0], data[1]); 1105 data[0], data[1]);
1112 1106
1113 /* set feature: bit rate 38400 bps */ 1107 /* set feature: bit rate 38400 bps */
1114 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0), 1108 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
1115 USB_REQ_SET_FEATURE, USB_TYPE_VENDOR, 1109 USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
1116 0xc04e, 0x0000, NULL, 0, HZ * 3); 1110 0xc04e, 0x0000, NULL, 0, HZ * 3);
1117 1111
1118 mce_dbg(dev, "%s - ret = %d\n", __func__, ret); 1112 dev_dbg(dev, "set feature - ret = %d", ret);
1119 1113
1120 /* bRequest 4: set char length to 8 bits */ 1114 /* bRequest 4: set char length to 8 bits */
1121 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0), 1115 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
1122 4, USB_TYPE_VENDOR, 1116 4, USB_TYPE_VENDOR,
1123 0x0808, 0x0000, NULL, 0, HZ * 3); 1117 0x0808, 0x0000, NULL, 0, HZ * 3);
1124 mce_dbg(dev, "%s - retB = %d\n", __func__, ret); 1118 dev_dbg(dev, "set char length - retB = %d", ret);
1125 1119
1126 /* bRequest 2: set handshaking to use DTR/DSR */ 1120 /* bRequest 2: set handshaking to use DTR/DSR */
1127 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0), 1121 ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
1128 2, USB_TYPE_VENDOR, 1122 2, USB_TYPE_VENDOR,
1129 0x0000, 0x0100, NULL, 0, HZ * 3); 1123 0x0000, 0x0100, NULL, 0, HZ * 3);
1130 mce_dbg(dev, "%s - retC = %d\n", __func__, ret); 1124 dev_dbg(dev, "set handshake - retC = %d", ret);
1131 1125
1132 /* device resume */ 1126 /* device resume */
1133 mce_async_out(ir, DEVICE_RESUME, sizeof(DEVICE_RESUME)); 1127 mce_async_out(ir, DEVICE_RESUME, sizeof(DEVICE_RESUME));
@@ -1198,7 +1192,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
1198 1192
1199 rc = rc_allocate_device(); 1193 rc = rc_allocate_device();
1200 if (!rc) { 1194 if (!rc) {
1201 dev_err(dev, "remote dev allocation failed\n"); 1195 dev_err(dev, "remote dev allocation failed");
1202 goto out; 1196 goto out;
1203 } 1197 }
1204 1198
@@ -1230,7 +1224,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
1230 1224
1231 ret = rc_register_device(rc); 1225 ret = rc_register_device(rc);
1232 if (ret < 0) { 1226 if (ret < 0) {
1233 dev_err(dev, "remote dev registration failed\n"); 1227 dev_err(dev, "remote dev registration failed");
1234 goto out; 1228 goto out;
1235 } 1229 }
1236 1230
@@ -1258,7 +1252,7 @@ static int mceusb_dev_probe(struct usb_interface *intf,
1258 bool tx_mask_normal; 1252 bool tx_mask_normal;
1259 int ir_intfnum; 1253 int ir_intfnum;
1260 1254
1261 mce_dbg(&intf->dev, "%s called\n", __func__); 1255 dev_dbg(&intf->dev, "%s called", __func__);
1262 1256
1263 idesc = intf->cur_altsetting; 1257 idesc = intf->cur_altsetting;
1264 1258
@@ -1286,8 +1280,7 @@ static int mceusb_dev_probe(struct usb_interface *intf,
1286 ep_in = ep; 1280 ep_in = ep;
1287 ep_in->bmAttributes = USB_ENDPOINT_XFER_INT; 1281 ep_in->bmAttributes = USB_ENDPOINT_XFER_INT;
1288 ep_in->bInterval = 1; 1282 ep_in->bInterval = 1;
1289 mce_dbg(&intf->dev, "acceptable inbound endpoint " 1283 dev_dbg(&intf->dev, "acceptable inbound endpoint found");
1290 "found\n");
1291 } 1284 }
1292 1285
1293 if ((ep_out == NULL) 1286 if ((ep_out == NULL)
@@ -1301,12 +1294,11 @@ static int mceusb_dev_probe(struct usb_interface *intf,
1301 ep_out = ep; 1294 ep_out = ep;
1302 ep_out->bmAttributes = USB_ENDPOINT_XFER_INT; 1295 ep_out->bmAttributes = USB_ENDPOINT_XFER_INT;
1303 ep_out->bInterval = 1; 1296 ep_out->bInterval = 1;
1304 mce_dbg(&intf->dev, "acceptable outbound endpoint " 1297 dev_dbg(&intf->dev, "acceptable outbound endpoint found");
1305 "found\n");
1306 } 1298 }
1307 } 1299 }
1308 if (ep_in == NULL) { 1300 if (ep_in == NULL) {
1309 mce_dbg(&intf->dev, "inbound and/or endpoint not found\n"); 1301 dev_dbg(&intf->dev, "inbound and/or endpoint not found");
1310 return -ENODEV; 1302 return -ENODEV;
1311 } 1303 }
1312 1304
@@ -1357,7 +1349,7 @@ static int mceusb_dev_probe(struct usb_interface *intf,
1357 ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 1349 ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
1358 1350
1359 /* flush buffers on the device */ 1351 /* flush buffers on the device */
1360 mce_dbg(&intf->dev, "Flushing receive buffers\n"); 1352 dev_dbg(&intf->dev, "Flushing receive buffers\n");
1361 mce_flush_rx_buffer(ir, maxp); 1353 mce_flush_rx_buffer(ir, maxp);
1362 1354
1363 /* figure out which firmware/emulator version this hardware has */ 1355 /* figure out which firmware/emulator version this hardware has */
@@ -1382,10 +1374,9 @@ static int mceusb_dev_probe(struct usb_interface *intf,
1382 device_set_wakeup_capable(ir->dev, true); 1374 device_set_wakeup_capable(ir->dev, true);
1383 device_set_wakeup_enable(ir->dev, true); 1375 device_set_wakeup_enable(ir->dev, true);
1384 1376
1385 dev_info(&intf->dev, "Registered %s with mce emulator interface " 1377 dev_info(&intf->dev, "Registered %s with mce emulator interface version %x",
1386 "version %x\n", name, ir->emver); 1378 name, ir->emver);
1387 dev_info(&intf->dev, "%x tx ports (0x%x cabled) and " 1379 dev_info(&intf->dev, "%x tx ports (0x%x cabled) and %x rx sensors (0x%x active)",
1388 "%x rx sensors (0x%x active)\n",
1389 ir->num_txports, ir->txports_cabled, 1380 ir->num_txports, ir->txports_cabled,
1390 ir->num_rxports, ir->rxports_active); 1381 ir->num_rxports, ir->rxports_active);
1391 1382
@@ -1399,7 +1390,7 @@ urb_in_alloc_fail:
1399buf_in_alloc_fail: 1390buf_in_alloc_fail:
1400 kfree(ir); 1391 kfree(ir);
1401mem_alloc_fail: 1392mem_alloc_fail:
1402 dev_err(&intf->dev, "%s: device setup failed!\n", __func__); 1393 dev_err(&intf->dev, "%s: device setup failed!", __func__);
1403 1394
1404 return -ENOMEM; 1395 return -ENOMEM;
1405} 1396}
@@ -1427,7 +1418,7 @@ static void mceusb_dev_disconnect(struct usb_interface *intf)
1427static int mceusb_dev_suspend(struct usb_interface *intf, pm_message_t message) 1418static int mceusb_dev_suspend(struct usb_interface *intf, pm_message_t message)
1428{ 1419{
1429 struct mceusb_dev *ir = usb_get_intfdata(intf); 1420 struct mceusb_dev *ir = usb_get_intfdata(intf);
1430 dev_info(ir->dev, "suspend\n"); 1421 dev_info(ir->dev, "suspend");
1431 usb_kill_urb(ir->urb_in); 1422 usb_kill_urb(ir->urb_in);
1432 return 0; 1423 return 0;
1433} 1424}
@@ -1435,7 +1426,7 @@ static int mceusb_dev_suspend(struct usb_interface *intf, pm_message_t message)
1435static int mceusb_dev_resume(struct usb_interface *intf) 1426static int mceusb_dev_resume(struct usb_interface *intf)
1436{ 1427{
1437 struct mceusb_dev *ir = usb_get_intfdata(intf); 1428 struct mceusb_dev *ir = usb_get_intfdata(intf);
1438 dev_info(ir->dev, "resume\n"); 1429 dev_info(ir->dev, "resume");
1439 if (usb_submit_urb(ir->urb_in, GFP_ATOMIC)) 1430 if (usb_submit_urb(ir->urb_in, GFP_ATOMIC))
1440 return -EIO; 1431 return -EIO;
1441 return 0; 1432 return 0;
@@ -1457,6 +1448,3 @@ MODULE_DESCRIPTION(DRIVER_DESC);
1457MODULE_AUTHOR(DRIVER_AUTHOR); 1448MODULE_AUTHOR(DRIVER_AUTHOR);
1458MODULE_LICENSE("GPL"); 1449MODULE_LICENSE("GPL");
1459MODULE_DEVICE_TABLE(usb, mceusb_dev_table); 1450MODULE_DEVICE_TABLE(usb, mceusb_dev_table);
1460
1461module_param(debug, bool, S_IRUGO | S_IWUSR);
1462MODULE_PARM_DESC(debug, "Debug enabled or not");