summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/drxk_hard.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab2011-12-09 11:53:36 +0100
committerMauro Carvalho Chehab2011-12-09 23:49:05 +0100
commit48763e2c6e76fbaa64229219593c1a456fd32c67 (patch)
tree8d2716b2ae7d8f62aa9fe953e11a6fa89c366fcf /drivers/media/dvb/frontends/drxk_hard.c
parent[media] xc5000: Add support for 7MHz bandwidth for DVB-C/DVB-T (diff)
downloadkernel-qcow2-linux-48763e2c6e76fbaa64229219593c1a456fd32c67.tar.gz
kernel-qcow2-linux-48763e2c6e76fbaa64229219593c1a456fd32c67.tar.xz
kernel-qcow2-linux-48763e2c6e76fbaa64229219593c1a456fd32c67.zip
[media] drxk: Switch the delivery system on FE_SET_PROPERTY
The DRX-K doesn't change the delivery system at set_properties, but do it at frontend init. This causes problems on programs like w_scan that, by default, opens both frontends. Instead, explicitly set the format when set_parameters callback is called. Tested-by: Eddi De Pieri <eddi@depieri.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/drxk_hard.c')
-rw-r--r--drivers/media/dvb/frontends/drxk_hard.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/media/dvb/frontends/drxk_hard.c b/drivers/media/dvb/frontends/drxk_hard.c
index 95cbc98176fa..038e470bf039 100644
--- a/drivers/media/dvb/frontends/drxk_hard.c
+++ b/drivers/media/dvb/frontends/drxk_hard.c
@@ -1847,6 +1847,7 @@ static int SetOperationMode(struct drxk_state *state,
*/
switch (oMode) {
case OM_DVBT:
+ dprintk(1, ": DVB-T\n");
state->m_OperationMode = oMode;
status = SetDVBTStandard(state, oMode);
if (status < 0)
@@ -1854,6 +1855,8 @@ static int SetOperationMode(struct drxk_state *state,
break;
case OM_QAM_ITU_A: /* fallthrough */
case OM_QAM_ITU_C:
+ dprintk(1, ": DVB-C Annex %c\n",
+ (state->m_OperationMode == OM_QAM_ITU_A) ? 'A' : 'C');
state->m_OperationMode = oMode;
status = SetQAMStandard(state, oMode);
if (status < 0)
@@ -6183,7 +6186,10 @@ static int drxk_c_init(struct dvb_frontend *fe)
dprintk(1, "\n");
if (mutex_trylock(&state->ctlock) == 0)
return -EBUSY;
- SetOperationMode(state, OM_QAM_ITU_A);
+ if (state->m_itut_annex_c)
+ SetOperationMode(state, OM_QAM_ITU_C);
+ else
+ SetOperationMode(state, OM_QAM_ITU_A);
return 0;
}
@@ -6219,12 +6225,11 @@ static int drxk_set_parameters(struct dvb_frontend *fe,
return -EINVAL;
}
- if (state->m_OperationMode == OM_QAM_ITU_A ||
- state->m_OperationMode == OM_QAM_ITU_C) {
+ if (fe->ops.info.type == FE_QAM) {
if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
- state->m_OperationMode = OM_QAM_ITU_C;
+ state->m_itut_annex_c = true;
else
- state->m_OperationMode = OM_QAM_ITU_A;
+ state->m_itut_annex_c = false;
}
if (fe->ops.i2c_gate_ctrl)