[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>
This commit is contained in:
parent
0433cd28f3
commit
48763e2c6e
3 changed files with 16 additions and 5 deletions
|
@ -1847,6 +1847,7 @@ static int SetOperationMode(struct drxk_state *state,
|
||||||
*/
|
*/
|
||||||
switch (oMode) {
|
switch (oMode) {
|
||||||
case OM_DVBT:
|
case OM_DVBT:
|
||||||
|
dprintk(1, ": DVB-T\n");
|
||||||
state->m_OperationMode = oMode;
|
state->m_OperationMode = oMode;
|
||||||
status = SetDVBTStandard(state, oMode);
|
status = SetDVBTStandard(state, oMode);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
|
@ -1854,6 +1855,8 @@ static int SetOperationMode(struct drxk_state *state,
|
||||||
break;
|
break;
|
||||||
case OM_QAM_ITU_A: /* fallthrough */
|
case OM_QAM_ITU_A: /* fallthrough */
|
||||||
case OM_QAM_ITU_C:
|
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;
|
state->m_OperationMode = oMode;
|
||||||
status = SetQAMStandard(state, oMode);
|
status = SetQAMStandard(state, oMode);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
|
@ -6183,7 +6186,10 @@ static int drxk_c_init(struct dvb_frontend *fe)
|
||||||
dprintk(1, "\n");
|
dprintk(1, "\n");
|
||||||
if (mutex_trylock(&state->ctlock) == 0)
|
if (mutex_trylock(&state->ctlock) == 0)
|
||||||
return -EBUSY;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6219,12 +6225,11 @@ static int drxk_set_parameters(struct dvb_frontend *fe,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->m_OperationMode == OM_QAM_ITU_A ||
|
if (fe->ops.info.type == FE_QAM) {
|
||||||
state->m_OperationMode == OM_QAM_ITU_C) {
|
|
||||||
if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
|
if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
|
||||||
state->m_OperationMode = OM_QAM_ITU_C;
|
state->m_itut_annex_c = true;
|
||||||
else
|
else
|
||||||
state->m_OperationMode = OM_QAM_ITU_A;
|
state->m_itut_annex_c = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fe->ops.i2c_gate_ctrl)
|
if (fe->ops.i2c_gate_ctrl)
|
||||||
|
|
|
@ -263,6 +263,8 @@ struct drxk_state {
|
||||||
u8 m_TSDataStrength;
|
u8 m_TSDataStrength;
|
||||||
u8 m_TSClockkStrength;
|
u8 m_TSClockkStrength;
|
||||||
|
|
||||||
|
bool m_itut_annex_c; /* If true, uses ITU-T DVB-C Annex C, instead of Annex A */
|
||||||
|
|
||||||
enum DRXMPEGStrWidth_t m_widthSTR; /**< MPEG start width */
|
enum DRXMPEGStrWidth_t m_widthSTR; /**< MPEG start width */
|
||||||
u32 m_mpegTsStaticBitrate; /**< Maximum bitrate in b/s in case
|
u32 m_mpegTsStaticBitrate; /**< Maximum bitrate in b/s in case
|
||||||
static clockrate is selected */
|
static clockrate is selected */
|
||||||
|
|
|
@ -899,6 +899,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||||
&dvb->fe[0]->ops.tuner_ops,
|
&dvb->fe[0]->ops.tuner_ops,
|
||||||
sizeof(dvb->fe[0]->ops.tuner_ops));
|
sizeof(dvb->fe[0]->ops.tuner_ops));
|
||||||
|
|
||||||
|
mfe_shared = 1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EM2884_BOARD_TERRATEC_H5:
|
case EM2884_BOARD_TERRATEC_H5:
|
||||||
|
@ -935,6 +937,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||||
&dvb->fe[0]->ops.tuner_ops,
|
&dvb->fe[0]->ops.tuner_ops,
|
||||||
sizeof(dvb->fe[0]->ops.tuner_ops));
|
sizeof(dvb->fe[0]->ops.tuner_ops));
|
||||||
|
|
||||||
|
mfe_shared = 1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case EM28174_BOARD_PCTV_460E:
|
case EM28174_BOARD_PCTV_460E:
|
||||||
/* attach demod */
|
/* attach demod */
|
||||||
|
|
Loading…
Reference in a new issue