[PATCH 339/961] staging/easycap: replace NOREADBACK with moduel parameter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Tomas Winkler <tomas.winkler@xxxxxxxxx>

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

Cc: Mike Thomas <rmthomas@xxxxxxxxxxx>
Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
---
 drivers/staging/easycap/easycap.h      |    1 +
 drivers/staging/easycap/easycap_low.c  |   67 ++++++++++++++++----------------
 drivers/staging/easycap/easycap_main.c |    4 ++
 3 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/drivers/staging/easycap/easycap.h b/drivers/staging/easycap/easycap.h
index 0ee60af..55b1a14 100644
--- a/drivers/staging/easycap/easycap.h
+++ b/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[];
diff --git a/drivers/staging/easycap/easycap_low.c b/drivers/staging/easycap/easycap_low.c
index b44c384..a345a1b 100644
--- a/drivers/staging/easycap/easycap_low.c
+++ b/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;
 }
 /*****************************************************************************/
 
diff --git a/drivers/staging/easycap/easycap_main.c b/drivers/staging/easycap/easycap_main.c
index 997e755..340d4cf 100644
--- a/drivers/staging/easycap/easycap_main.c
+++ b/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,
-- 
1.7.4.1

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux