[media] drxk: Simplify the DVB-C set mode logic

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Mauro Carvalho Chehab 2011-07-10 13:08:44 -03:00
parent cf694b141e
commit f1b829704c

View file

@ -1806,7 +1806,10 @@ static int SetOperationMode(struct drxk_state *state,
if (status < 0)
goto error;
if (state->m_OperationMode != oMode) {
/* Device is already at the required mode */
if (state->m_OperationMode == oMode)
return 0;
switch (state->m_OperationMode) {
/* OM_NONE was added for start up */
case OM_NONE:
@ -1857,7 +1860,6 @@ static int SetOperationMode(struct drxk_state *state,
default:
status = -EINVAL;
}
}
error:
if (status < 0)
printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__);
@ -3086,7 +3088,14 @@ static int InitAGC(struct drxk_state *state, bool isDTV)
clpCyclen = 500;
clpSumMax = 1023;
if (IsQAM(state)) {
/* AGCInit() not available for DVBT; init done in microcode */
if (!IsQAM(state)) {
printk(KERN_ERR "drxk: %s: mode %d is not DVB-C\n", __func__, state->m_OperationMode);
return -EINVAL;
}
/* FIXME: Analog TV AGC require different settings */
/* Standard specific settings */
clpSumMin = 8;
clpDirTo = (u16) -9;
@ -3094,27 +3103,13 @@ static int InitAGC(struct drxk_state *state, bool isDTV)
snsSumMin = 8;
snsDirTo = (u16) -9;
kiInnergainMin = (u16) -1030;
} else {
status = -EINVAL;
goto error;
}
if (IsQAM(state)) {
ifIaccuHiTgtMax = 0x2380;
ifIaccuHiTgt = 0x2380;
ingainTgtMin = 0x0511;
ingainTgt = 0x0511;
ingainTgtMax = 5119;
fastClpCtrlDelay =
state->m_qamIfAgcCfg.FastClipCtrlDelay;
} else {
ifIaccuHiTgtMax = 0x1200;
ifIaccuHiTgt = 0x1200;
ingainTgtMin = 13424;
ingainTgt = 13424;
ingainTgtMax = 30000;
fastClpCtrlDelay =
state->m_dvbtIfAgcCfg.FastClipCtrlDelay;
}
fastClpCtrlDelay = state->m_qamIfAgcCfg.FastClipCtrlDelay;
status = write16(state, SCU_RAM_AGC_FAST_CLP_CTRL_DELAY__A, fastClpCtrlDelay);
if (status < 0)
goto error;
@ -3238,13 +3233,13 @@ static int InitAGC(struct drxk_state *state, bool isDTV)
status = read16(state, SCU_RAM_AGC_KI__A, &data);
if (status < 0)
goto error;
if (IsQAM(state)) {
data = 0x0657;
data &= ~SCU_RAM_AGC_KI_RF__M;
data |= (DRXK_KI_RAGC_QAM << SCU_RAM_AGC_KI_RF__B);
data &= ~SCU_RAM_AGC_KI_IF__M;
data |= (DRXK_KI_IAGC_QAM << SCU_RAM_AGC_KI_IF__B);
}
status = write16(state, SCU_RAM_AGC_KI__A, data);
error:
if (status < 0)
@ -5627,6 +5622,8 @@ static int SetQAMStandard(struct drxk_state *state,
#undef DRXK_QAMA_TAPS_SELECT
#endif
dprintk(1, "\n");
/* added antenna switch */
SwitchAntennaToQAM(state);