Browse Source

staging/easycap: replace NOREADBACK with moduel parameter

NOREADBACK doesn't justify Kconfig option so we use module
paramter for it.

Cc: Mike Thomas <rmthomas@sciolus.org>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Tomas Winkler 14 years ago
parent
commit
2ef0c05e80

+ 1 - 0
drivers/staging/easycap/easycap.h

@@ -657,6 +657,7 @@ extern int easycap_debug;
  */
 /*---------------------------------------------------------------------------*/
 
+extern bool easycap_readback;
 extern const struct easycap_standard easycap_standard[];
 extern struct easycap_format easycap_format[];
 extern struct v4l2_queryctrl easycap_control[];

+ 33 - 34
drivers/staging/easycap/easycap_low.c

@@ -275,54 +275,53 @@ static int regget(struct usb_device *pusb_device,
 
 static int regset(struct usb_device *pusb_device, u16 index, u16 value)
 {
-	int rc0, rc1;
-	u16 igot;
+	int rc;
 
 	if (!pusb_device)
 		return -ENODEV;
 
-	rc1 = 0;  igot = 0;
-	rc0 = usb_control_msg(pusb_device, usb_sndctrlpipe(pusb_device, 0),
+	rc = usb_control_msg(pusb_device, usb_sndctrlpipe(pusb_device, 0),
 			0x01,
 			(USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE),
 			value, index, NULL, 0, 500);
 
-#ifdef NOREADBACK
-#
-#else
-	rc1 = regget(pusb_device, index, &igot, sizeof(igot));
-	igot = 0xFF & igot;
-	switch (index) {
-	case 0x000:
-	case 0x500:
-	case 0x502:
-	case 0x503:
-	case 0x504:
-	case 0x506:
-	case 0x507:
-		break;
+	if (rc < 0)
+		return rc;
+
+	if (easycap_readback) {
+		u16 igot = 0;
+		rc = regget(pusb_device, index, &igot, sizeof(igot));
+		igot = 0xFF & igot;
+		switch (index) {
+		case 0x000:
+		case 0x500:
+		case 0x502:
+		case 0x503:
+		case 0x504:
+		case 0x506:
+		case 0x507:
+			break;
 
-	case 0x204:
-	case 0x205:
-	case 0x350:
-	case 0x351:
-		if (0 != (0xFF & igot)) {
-			JOT(8, "unexpected 0x%02X for STK register 0x%03X\n",
-								igot, index);
-		}
-		break;
+		case 0x204:
+		case 0x205:
+		case 0x350:
+		case 0x351:
+			if (igot)
+				JOT(8, "unexpected 0x%02X "
+					"for STK register 0x%03X\n",
+					igot, index);
+			break;
 
-	default:
-		if ((0xFF & value) != (0xFF & igot)) {
-			JOT(8, "unexpected 0x%02X != 0x%02X "
-						"for STK register 0x%03X\n",
+		default:
+			if ((0xFF & value) != igot)
+				JOT(8, "unexpected 0x%02X != 0x%02X "
+					"for STK register 0x%03X\n",
 						igot, value, index);
+			break;
 		}
-		break;
 	}
-#endif /* ! NOREADBACK*/
 
-	return (0 > rc0) ? rc0 : rc1;
+	return rc;
 }
 /*****************************************************************************/
 

+ 4 - 0
drivers/staging/easycap/easycap_main.c

@@ -42,6 +42,10 @@ module_param_named(debug, easycap_debug, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(debug, "Debug level: 0(default),1,2,...,9");
 #endif /* CONFIG_EASYCAP_DEBUG */
 
+bool easycap_readback;
+module_param_named(readback, easycap_readback, bool, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(readback, "read back written registers: (default false)");
+
 static int easycap_bars = 1;
 module_param_named(bars, easycap_bars, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(bars,