[staging-next 12/12] staging/easycap: replace NOREADBACK with moduel parameter

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

 



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>
---
 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

---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

_______________________________________________
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