aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Cardona <remi.cardona@smartjog.com>2012-09-28 07:59:27 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-11-22 16:19:00 -0500
commitb41a536cf9806c3478b2fa68d59edafd0787e8aa (patch)
treed16084be3536e3059ae30496df1486747e683b77
parentfeadd7d3eca4da531b35b2af3623dd992f2d988d (diff)
[media] ds3000: remove useless 'locking'
Since b9bf2eafaad9c1ef02fb3db38c74568be601a43a, the function ds3000_firmware_ondemand() is called only once during init. This locking scheme may have been useful when the firmware was loaded at each tune. Furthermore, it looks like this 'lock' was put in to prevent concurrent access (and not recursion as the comments suggest). However, this open- coded mechanism is anything but race-free and should have used a proper mutex. Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com> Reviewed-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb-frontends/ds3000.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
index c84cd98a9150..60a529e3833f 100644
--- a/drivers/media/dvb-frontends/ds3000.c
+++ b/drivers/media/dvb-frontends/ds3000.c
@@ -30,7 +30,6 @@
30#include "ds3000.h" 30#include "ds3000.h"
31 31
32static int debug; 32static int debug;
33static int force_fw_upload;
34 33
35#define dprintk(args...) \ 34#define dprintk(args...) \
36 do { \ 35 do { \
@@ -234,7 +233,6 @@ struct ds3000_state {
234 struct i2c_adapter *i2c; 233 struct i2c_adapter *i2c;
235 const struct ds3000_config *config; 234 const struct ds3000_config *config;
236 struct dvb_frontend frontend; 235 struct dvb_frontend frontend;
237 u8 skip_fw_load;
238 /* previous uncorrected block counter for DVB-S2 */ 236 /* previous uncorrected block counter for DVB-S2 */
239 u16 prevUCBS2; 237 u16 prevUCBS2;
240}; 238};
@@ -397,9 +395,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
397 if (ret < 0) 395 if (ret < 0)
398 return ret; 396 return ret;
399 397
400 if (state->skip_fw_load || !force_fw_upload)
401 return 0; /* Firmware already uploaded, skipping */
402
403 /* Load firmware */ 398 /* Load firmware */
404 /* request the firmware, this will block until someone uploads it */ 399 /* request the firmware, this will block until someone uploads it */
405 printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__, 400 printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
@@ -413,9 +408,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
413 return ret; 408 return ret;
414 } 409 }
415 410
416 /* Make sure we don't recurse back through here during loading */
417 state->skip_fw_load = 1;
418
419 ret = ds3000_load_firmware(fe, fw); 411 ret = ds3000_load_firmware(fe, fw);
420 if (ret) 412 if (ret)
421 printk("%s: Writing firmware to device failed\n", __func__); 413 printk("%s: Writing firmware to device failed\n", __func__);
@@ -425,9 +417,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
425 dprintk("%s: Firmware upload %s\n", __func__, 417 dprintk("%s: Firmware upload %s\n", __func__,
426 ret == 0 ? "complete" : "failed"); 418 ret == 0 ? "complete" : "failed");
427 419
428 /* Ensure firmware is always loaded if required */
429 state->skip_fw_load = 0;
430
431 return ret; 420 return ret;
432} 421}
433 422
@@ -1309,9 +1298,6 @@ static struct dvb_frontend_ops ds3000_ops = {
1309module_param(debug, int, 0644); 1298module_param(debug, int, 0644);
1310MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)"); 1299MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
1311 1300
1312module_param(force_fw_upload, int, 0644);
1313MODULE_PARM_DESC(force_fw_upload, "Force firmware upload (default:0)");
1314
1315MODULE_DESCRIPTION("DVB Frontend module for Montage Technology " 1301MODULE_DESCRIPTION("DVB Frontend module for Montage Technology "
1316 "DS3000/TS2020 hardware"); 1302 "DS3000/TS2020 hardware");
1317MODULE_AUTHOR("Konstantin Dimitrov"); 1303MODULE_AUTHOR("Konstantin Dimitrov");