Commit 119faf90 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] drxk: Fix the logic that selects between DVB-C annex A and C

Fix the DRX-K logic that selects between DVB-C annex A and C

Fix a typo where DVB-C annex type is set via setEnvParameters, but
the driver, uses, instead, setParamParameters[2].

While here, cleans up the code, fixing a bad identation at the fallback
code for other types of firmware, and put the multiple-line comments
into the Linux CodingStyle.
Acked-by: default avatarOliver Endriss <o.endriss@gmx.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent f07a0bc1
...@@ -5382,18 +5382,16 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz, ...@@ -5382,18 +5382,16 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz,
s32 tunerFreqOffset) s32 tunerFreqOffset)
{ {
int status; int status;
u8 parameterLen;
u16 setEnvParameters[5] = { 0, 0, 0, 0, 0 };
u16 setParamParameters[4] = { 0, 0, 0, 0 }; u16 setParamParameters[4] = { 0, 0, 0, 0 };
u16 cmdResult; u16 cmdResult;
dprintk(1, "\n"); dprintk(1, "\n");
/* /*
STEP 1: reset demodulator * STEP 1: reset demodulator
resets FEC DI and FEC RS * resets FEC DI and FEC RS
resets QAM block * resets QAM block
resets SCU variables * resets SCU variables
*/ */
status = write16(state, FEC_DI_COMM_EXEC__A, FEC_DI_COMM_EXEC_STOP); status = write16(state, FEC_DI_COMM_EXEC__A, FEC_DI_COMM_EXEC_STOP);
if (status < 0) if (status < 0)
goto error; goto error;
...@@ -5405,23 +5403,14 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz, ...@@ -5405,23 +5403,14 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz,
goto error; goto error;
/* /*
STEP 2: configure demodulator * STEP 2: configure demodulator
-set env * -set params; resets IQM,QAM,FEC HW; initializes some
-set params; resets IQM,QAM,FEC HW; initializes some SCU variables * SCU variables
*/ */
status = QAMSetSymbolrate(state); status = QAMSetSymbolrate(state);
if (status < 0) if (status < 0)
goto error; goto error;
/* Env parameters */
setEnvParameters[2] = QAM_TOP_ANNEX_A; /* Annex */
if (state->m_OperationMode == OM_QAM_ITU_C)
setEnvParameters[2] = QAM_TOP_ANNEX_C; /* Annex */
setParamParameters[3] |= (QAM_MIRROR_AUTO_ON);
/* check for LOCKRANGE Extented */
/* setParamParameters[3] |= QAM_LOCKRANGE_NORMAL; */
parameterLen = 4;
/* Set params */ /* Set params */
switch (state->param.u.qam.modulation) { switch (state->param.u.qam.modulation) {
case QAM_256: case QAM_256:
...@@ -5448,30 +5437,37 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz, ...@@ -5448,30 +5437,37 @@ static int SetQAM(struct drxk_state *state, u16 IntermediateFreqkHz,
goto error; goto error;
setParamParameters[0] = state->m_Constellation; /* constellation */ setParamParameters[0] = state->m_Constellation; /* constellation */
setParamParameters[1] = DRXK_QAM_I12_J17; /* interleave mode */ setParamParameters[1] = DRXK_QAM_I12_J17; /* interleave mode */
if (state->m_OperationMode == OM_QAM_ITU_C)
setParamParameters[2] = QAM_TOP_ANNEX_C;
else
setParamParameters[2] = QAM_TOP_ANNEX_A;
setParamParameters[3] |= (QAM_MIRROR_AUTO_ON);
/* Env parameters */
/* check for LOCKRANGE Extented */
/* setParamParameters[3] |= QAM_LOCKRANGE_NORMAL; */
status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM, 4, setParamParameters, 1, &cmdResult); status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM, 4, setParamParameters, 1, &cmdResult);
if (status < 0) { if (status < 0) {
/* Fall-back to the simpler call */ /* Fall-back to the simpler call */
setParamParameters[0] = QAM_TOP_ANNEX_A;
if (state->m_OperationMode == OM_QAM_ITU_C) if (state->m_OperationMode == OM_QAM_ITU_C)
setEnvParameters[0] = QAM_TOP_ANNEX_C; /* Annex */ setParamParameters[0] = QAM_TOP_ANNEX_C;
else else
setEnvParameters[0] = 0; setParamParameters[0] = QAM_TOP_ANNEX_A;
status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV, 1, setParamParameters, 1, &cmdResult);
status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV, 1, setEnvParameters, 1, &cmdResult); if (status < 0)
if (status < 0) goto error;
goto error;
setParamParameters[0] = state->m_Constellation; /* constellation */ setParamParameters[0] = state->m_Constellation; /* constellation */
setParamParameters[1] = DRXK_QAM_I12_J17; /* interleave mode */ setParamParameters[1] = DRXK_QAM_I12_J17; /* interleave mode */
status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM, 2, setParamParameters, 1, &cmdResult); status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM, 2, setParamParameters, 1, &cmdResult);
} }
if (status < 0) if (status < 0)
goto error; goto error;
/* STEP 3: enable the system in a mode where the ADC provides valid signal /*
setup constellation independent registers */ * STEP 3: enable the system in a mode where the ADC provides valid
* signal setup constellation independent registers
*/
#if 0 #if 0
status = SetFrequency(channel, tunerFreqOffset)); status = SetFrequency(channel, tunerFreqOffset));
if (status < 0) if (status < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment