aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2012-05-15 07:39:25 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-15 07:39:25 -0400
commit69ecdbac144147a80747914d9b6ea3472e2d93e7 (patch)
treee1bb68c3568f370cd6a7d2ae29a051bee244ce0f /drivers/media/dvb
parentb7dc4cd17506284a47eeb9160207e43c7d5486fe (diff)
parentb6255ee3d82798eb1eee9fb1cca713317b5afae8 (diff)
Merge remote-tracking branch 'linus/master' into staging/for_v3.5
* linus/master: (805 commits) tty: Fix LED error return openvswitch: checking wrong variable in queue_userspace_packet() bonding: Fix LACPDU rx_dropped commit. Linux 3.4-rc7 ARM: EXYNOS: fix ctrlbit for exynos5_clk_pdma1 ARM: EXYNOS: use s5p-timer for UniversalC210 board ARM / mach-shmobile: Invalidate caches when booting secondary cores ARM / mach-shmobile: sh73a0 SMP TWD boot regression fix ARM / mach-shmobile: r8a7779 SMP TWD boot regression fix ARM: mach-shmobile: convert ag5evm to use the generic MMC GPIO hotplug helper ARM: mach-shmobile: convert mackerel to use the generic MMC GPIO hotplug helper MAINTAINERS: Add myself as the cpufreq maintainer dm mpath: check if scsi_dh module already loaded before trying to load dm thin: correct module description dm thin: fix unprotected use of prepared_discards list dm thin: reinstate missing mempool_free in cell_release_singleton gpio/exynos: Fix compiler warnings when non-exynos machines are selected gpio: pch9: Use proper flow type handlers powerpc/irq: Fix another case of lazy IRQ state getting out of sync ks8851: Update link status during link change interrupt ... Conflicts: drivers/media/common/tuners/xc5000.c drivers/media/common/tuners/xc5000.h drivers/usb/gadget/uvc_queue.c
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c29
-rw-r--r--drivers/media/dvb/frontends/drxk_hard.c6
2 files changed, 32 insertions, 3 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 39696c6a4ed7..cb888d835a89 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -1446,6 +1446,28 @@ static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system)
1446 __func__); 1446 __func__);
1447 return -EINVAL; 1447 return -EINVAL;
1448 } 1448 }
1449 /*
1450 * Get a delivery system that is compatible with DVBv3
1451 * NOTE: in order for this to work with softwares like Kaffeine that
1452 * uses a DVBv5 call for DVB-S2 and a DVBv3 call to go back to
1453 * DVB-S, drivers that support both should put the SYS_DVBS entry
1454 * before the SYS_DVBS2, otherwise it won't switch back to DVB-S.
1455 * The real fix is that userspace applications should not use DVBv3
1456 * and not trust on calling FE_SET_FRONTEND to switch the delivery
1457 * system.
1458 */
1459 ncaps = 0;
1460 while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) {
1461 if (fe->ops.delsys[ncaps] == desired_system) {
1462 delsys = desired_system;
1463 break;
1464 }
1465 ncaps++;
1466 }
1467 if (delsys == SYS_UNDEFINED) {
1468 dprintk("%s() Couldn't find a delivery system that matches %d\n",
1469 __func__, desired_system);
1470 }
1449 } else { 1471 } else {
1450 /* 1472 /*
1451 * This is a DVBv5 call. So, it likely knows the supported 1473 * This is a DVBv5 call. So, it likely knows the supported
@@ -1494,9 +1516,10 @@ static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system)
1494 __func__); 1516 __func__);
1495 return -EINVAL; 1517 return -EINVAL;
1496 } 1518 }
1497 c->delivery_system = delsys;
1498 } 1519 }
1499 1520
1521 c->delivery_system = delsys;
1522
1500 /* 1523 /*
1501 * The DVBv3 or DVBv5 call is requesting a different system. So, 1524 * The DVBv3 or DVBv5 call is requesting a different system. So,
1502 * emulation is needed. 1525 * emulation is needed.
@@ -1898,6 +1921,10 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
1898 } else { 1921 } else {
1899 /* default values */ 1922 /* default values */
1900 switch (c->delivery_system) { 1923 switch (c->delivery_system) {
1924 case SYS_DVBS:
1925 case SYS_DVBS2:
1926 case SYS_ISDBS:
1927 case SYS_TURBO:
1901 case SYS_DVBC_ANNEX_A: 1928 case SYS_DVBC_ANNEX_A:
1902 case SYS_DVBC_ANNEX_C: 1929 case SYS_DVBC_ANNEX_C:
1903 fepriv->min_delay = HZ / 20; 1930 fepriv->min_delay = HZ / 20;
diff --git a/drivers/media/dvb/frontends/drxk_hard.c b/drivers/media/dvb/frontends/drxk_hard.c
index 88bd1c888ca8..8d99ac1598ae 100644
--- a/drivers/media/dvb/frontends/drxk_hard.c
+++ b/drivers/media/dvb/frontends/drxk_hard.c
@@ -1526,8 +1526,10 @@ static int scu_command(struct drxk_state *state,
1526 dprintk(1, "\n"); 1526 dprintk(1, "\n");
1527 1527
1528 if ((cmd == 0) || ((parameterLen > 0) && (parameter == NULL)) || 1528 if ((cmd == 0) || ((parameterLen > 0) && (parameter == NULL)) ||
1529 ((resultLen > 0) && (result == NULL))) 1529 ((resultLen > 0) && (result == NULL))) {
1530 goto error; 1530 printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__);
1531 return status;
1532 }
1531 1533
1532 mutex_lock(&state->mutex); 1534 mutex_lock(&state->mutex);
1533 1535