diff options
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/tda10086.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget.c | 9 | ||||
-rw-r--r-- | drivers/media/video/et61x251/et61x251_core.c | 3 | ||||
-rw-r--r-- | drivers/media/video/saa6588.c | 4 | ||||
-rw-r--r-- | drivers/media/video/saa7115.c | 9 | ||||
-rw-r--r-- | drivers/media/video/sn9c102/sn9c102_core.c | 3 |
7 files changed, 26 insertions, 8 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index 53304e6991ac..a2ab2eebfc68 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c | |||
@@ -348,7 +348,7 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra | |||
348 | 348 | ||
349 | static void dvb_frontend_swzigzag(struct dvb_frontend *fe) | 349 | static void dvb_frontend_swzigzag(struct dvb_frontend *fe) |
350 | { | 350 | { |
351 | fe_status_t s; | 351 | fe_status_t s = 0; |
352 | struct dvb_frontend_private *fepriv = fe->frontend_priv; | 352 | struct dvb_frontend_private *fepriv = fe->frontend_priv; |
353 | 353 | ||
354 | /* if we've got no parameters, just keep idling */ | 354 | /* if we've got no parameters, just keep idling */ |
diff --git a/drivers/media/dvb/frontends/tda10086.c b/drivers/media/dvb/frontends/tda10086.c index 7456b0b9976b..4c27a2d90a38 100644 --- a/drivers/media/dvb/frontends/tda10086.c +++ b/drivers/media/dvb/frontends/tda10086.c | |||
@@ -441,6 +441,10 @@ static int tda10086_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_pa | |||
441 | 441 | ||
442 | dprintk ("%s\n", __FUNCTION__); | 442 | dprintk ("%s\n", __FUNCTION__); |
443 | 443 | ||
444 | // check for invalid symbol rate | ||
445 | if (fe_params->u.qpsk.symbol_rate < 500000) | ||
446 | return -EINVAL; | ||
447 | |||
444 | // calculate the updated frequency (note: we convert from Hz->kHz) | 448 | // calculate the updated frequency (note: we convert from Hz->kHz) |
445 | tmp64 = tda10086_read_byte(state, 0x52); | 449 | tmp64 = tda10086_read_byte(state, 0x52); |
446 | tmp64 |= (tda10086_read_byte(state, 0x51) << 8); | 450 | tmp64 |= (tda10086_read_byte(state, 0x51) << 8); |
diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c index e58f0391e9d1..56f1c80defc6 100644 --- a/drivers/media/dvb/ttpci/budget.c +++ b/drivers/media/dvb/ttpci/budget.c | |||
@@ -46,6 +46,10 @@ | |||
46 | #include "lnbp21.h" | 46 | #include "lnbp21.h" |
47 | #include "bsru6.h" | 47 | #include "bsru6.h" |
48 | 48 | ||
49 | static int diseqc_method; | ||
50 | module_param(diseqc_method, int, 0444); | ||
51 | MODULE_PARM_DESC(diseqc_method, "Select DiSEqC method for subsystem id 13c2:1003, 0: default, 1: more reliable (for newer revisions only)"); | ||
52 | |||
49 | static void Set22K (struct budget *budget, int state) | 53 | static void Set22K (struct budget *budget, int state) |
50 | { | 54 | { |
51 | struct saa7146_dev *dev=budget->dev; | 55 | struct saa7146_dev *dev=budget->dev; |
@@ -382,6 +386,11 @@ static void frontend_init(struct budget *budget) | |||
382 | if (budget->dvb_frontend) { | 386 | if (budget->dvb_frontend) { |
383 | budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params; | 387 | budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params; |
384 | budget->dvb_frontend->tuner_priv = &budget->i2c_adap; | 388 | budget->dvb_frontend->tuner_priv = &budget->i2c_adap; |
389 | if (budget->dev->pci->subsystem_device == 0x1003 && diseqc_method == 0) { | ||
390 | budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd; | ||
391 | budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst; | ||
392 | budget->dvb_frontend->ops.set_tone = budget_set_tone; | ||
393 | } | ||
385 | break; | 394 | break; |
386 | } | 395 | } |
387 | break; | 396 | break; |
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c index f786ab11d2cd..86e353b26b53 100644 --- a/drivers/media/video/et61x251/et61x251_core.c +++ b/drivers/media/video/et61x251/et61x251_core.c | |||
@@ -1182,8 +1182,6 @@ static void et61x251_release_resources(struct et61x251_device* cam) | |||
1182 | video_set_drvdata(cam->v4ldev, NULL); | 1182 | video_set_drvdata(cam->v4ldev, NULL); |
1183 | video_unregister_device(cam->v4ldev); | 1183 | video_unregister_device(cam->v4ldev); |
1184 | 1184 | ||
1185 | usb_put_dev(cam->usbdev); | ||
1186 | |||
1187 | mutex_unlock(&et61x251_sysfs_lock); | 1185 | mutex_unlock(&et61x251_sysfs_lock); |
1188 | 1186 | ||
1189 | kfree(cam->control_buffer); | 1187 | kfree(cam->control_buffer); |
@@ -1275,6 +1273,7 @@ static int et61x251_release(struct inode* inode, struct file* filp) | |||
1275 | 1273 | ||
1276 | if (cam->state & DEV_DISCONNECTED) { | 1274 | if (cam->state & DEV_DISCONNECTED) { |
1277 | et61x251_release_resources(cam); | 1275 | et61x251_release_resources(cam); |
1276 | usb_put_dev(cam->usbdev); | ||
1278 | mutex_unlock(&cam->dev_mutex); | 1277 | mutex_unlock(&cam->dev_mutex); |
1279 | kfree(cam); | 1278 | kfree(cam); |
1280 | return 0; | 1279 | return 0; |
diff --git a/drivers/media/video/saa6588.c b/drivers/media/video/saa6588.c index a81285ca7d5b..7b9859c33018 100644 --- a/drivers/media/video/saa6588.c +++ b/drivers/media/video/saa6588.c | |||
@@ -212,8 +212,10 @@ static void read_from_buf(struct saa6588 *s, struct rds_command *a) | |||
212 | if (rd_blocks > s->block_count) | 212 | if (rd_blocks > s->block_count) |
213 | rd_blocks = s->block_count; | 213 | rd_blocks = s->block_count; |
214 | 214 | ||
215 | if (!rd_blocks) | 215 | if (!rd_blocks) { |
216 | spin_unlock_irqrestore(&s->lock, flags); | ||
216 | return; | 217 | return; |
218 | } | ||
217 | 219 | ||
218 | for (i = 0; i < rd_blocks; i++) { | 220 | for (i = 0; i < rd_blocks; i++) { |
219 | if (block_to_user_buf(s, buf_ptr)) { | 221 | if (block_to_user_buf(s, buf_ptr)) { |
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c index c5719f7bd1ac..f28398dd9d93 100644 --- a/drivers/media/video/saa7115.c +++ b/drivers/media/video/saa7115.c | |||
@@ -1464,8 +1464,6 @@ static int saa711x_attach(struct i2c_adapter *adapter, int address, int kind) | |||
1464 | client->driver = &i2c_driver_saa711x; | 1464 | client->driver = &i2c_driver_saa711x; |
1465 | snprintf(client->name, sizeof(client->name) - 1, "saa7115"); | 1465 | snprintf(client->name, sizeof(client->name) - 1, "saa7115"); |
1466 | 1466 | ||
1467 | v4l_dbg(1, debug, client, "detecting saa7115 client on address 0x%x\n", address << 1); | ||
1468 | |||
1469 | for (i=0;i<0x0f;i++) { | 1467 | for (i=0;i<0x0f;i++) { |
1470 | saa711x_write(client, 0, i); | 1468 | saa711x_write(client, 0, i); |
1471 | name[i] = (saa711x_read(client, 0) &0x0f) +'0'; | 1469 | name[i] = (saa711x_read(client, 0) &0x0f) +'0'; |
@@ -1477,6 +1475,13 @@ static int saa711x_attach(struct i2c_adapter *adapter, int address, int kind) | |||
1477 | saa711x_write(client, 0, 5); | 1475 | saa711x_write(client, 0, 5); |
1478 | chip_id = saa711x_read(client, 0) & 0x0f; | 1476 | chip_id = saa711x_read(client, 0) & 0x0f; |
1479 | 1477 | ||
1478 | /* Check whether this chip is part of the saa711x series */ | ||
1479 | if (memcmp(name, "1f711", 5)) { | ||
1480 | v4l_dbg(1, debug, client, "chip found @ 0x%x (ID %s) does not match a known saa711x chip.\n", | ||
1481 | address << 1, name); | ||
1482 | return 0; | ||
1483 | } | ||
1484 | |||
1480 | snprintf(client->name, sizeof(client->name) - 1, "saa711%d",chip_id); | 1485 | snprintf(client->name, sizeof(client->name) - 1, "saa711%d",chip_id); |
1481 | v4l_info(client, "saa711%d found (%s) @ 0x%x (%s)\n", chip_id, name, address << 1, adapter->name); | 1486 | v4l_info(client, "saa711%d found (%s) @ 0x%x (%s)\n", chip_id, name, address << 1, adapter->name); |
1482 | 1487 | ||
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c index a4702d3c2aca..42fb60d985b9 100644 --- a/drivers/media/video/sn9c102/sn9c102_core.c +++ b/drivers/media/video/sn9c102/sn9c102_core.c | |||
@@ -1462,8 +1462,6 @@ static void sn9c102_release_resources(struct sn9c102_device* cam) | |||
1462 | video_set_drvdata(cam->v4ldev, NULL); | 1462 | video_set_drvdata(cam->v4ldev, NULL); |
1463 | video_unregister_device(cam->v4ldev); | 1463 | video_unregister_device(cam->v4ldev); |
1464 | 1464 | ||
1465 | usb_put_dev(cam->usbdev); | ||
1466 | |||
1467 | mutex_unlock(&sn9c102_sysfs_lock); | 1465 | mutex_unlock(&sn9c102_sysfs_lock); |
1468 | 1466 | ||
1469 | kfree(cam->control_buffer); | 1467 | kfree(cam->control_buffer); |
@@ -1555,6 +1553,7 @@ static int sn9c102_release(struct inode* inode, struct file* filp) | |||
1555 | 1553 | ||
1556 | if (cam->state & DEV_DISCONNECTED) { | 1554 | if (cam->state & DEV_DISCONNECTED) { |
1557 | sn9c102_release_resources(cam); | 1555 | sn9c102_release_resources(cam); |
1556 | usb_put_dev(cam->usbdev); | ||
1558 | mutex_unlock(&cam->dev_mutex); | 1557 | mutex_unlock(&cam->dev_mutex); |
1559 | kfree(cam); | 1558 | kfree(cam); |
1560 | return 0; | 1559 | return 0; |