From: Tomas Winkler <[email protected]>

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

Cc: Mike Thomas <[email protected]>
Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 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
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to