summaryrefslogtreecommitdiff
path: root/drivers/staging/easycap
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2011-02-09 01:12:51 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-09 11:59:07 -0800
commit2ef0c05e80cf59315f6f0a4e5a950899f169f2d0 (patch)
tree1b12cb8b38036873fc0838d25d3cd6fe6389f85d /drivers/staging/easycap
parent32851b325e32bf9de72500d77488ffd9f7120395 (diff)
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>
Diffstat (limited to 'drivers/staging/easycap')
-rw-r--r--drivers/staging/easycap/easycap.h1
-rw-r--r--drivers/staging/easycap/easycap_low.c67
-rw-r--r--drivers/staging/easycap/easycap_main.c4
3 files changed, 38 insertions, 34 deletions
diff --git a/drivers/staging/easycap/easycap.h b/drivers/staging/easycap/easycap.h
index 0ee60af6ccd9..55b1a14fa518 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 b44c3841ee86..a345a1bc69d0 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 997e75574f5f..340d4cff7f8e 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,