Commit 320ed23e authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] drxk: Fix a bug at some switches that broke DVB-T

The error propagation changeset c23bf4402 broke the DVB-T
code.

The legacy way for propagate errors was:

do {
	status = foo_func()
	if (status < 0)
		break;
} while (0);
return status;

However, on a few places, it was doing:
do {
	switch(foo) {
	case bar:
		status = foo_func()
		if (status < 0)
			break;
		break;
	}
	switch(foo2) {
	case bar:
		status = foo_func()
		if (status < 0)
			break;
		break;
	}
	...
} while (0);
return (status)

The inner error break were not working, as it were breaking only
the switch, instead of the do. The solution used were to do a
s/break/goto error/ at the inner breaks, but preserving the last
break. Onfortunately, on a few switches, the replacement were
applied also to the final break for the case statements.

Fix the broken logic, by reverting them to break, where pertinent,
in order to fix DVB-T support.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c4c3a3d3
...@@ -3451,13 +3451,13 @@ static int DVBTCtrlSetEchoThreshold(struct drxk_state *state, ...@@ -3451,13 +3451,13 @@ static int DVBTCtrlSetEchoThreshold(struct drxk_state *state,
data |= ((echoThres->threshold << data |= ((echoThres->threshold <<
OFDM_SC_RA_RAM_ECHO_THRES_2K__B) OFDM_SC_RA_RAM_ECHO_THRES_2K__B)
& (OFDM_SC_RA_RAM_ECHO_THRES_2K__M)); & (OFDM_SC_RA_RAM_ECHO_THRES_2K__M));
goto error; break;
case DRX_FFTMODE_8K: case DRX_FFTMODE_8K:
data &= ~OFDM_SC_RA_RAM_ECHO_THRES_8K__M; data &= ~OFDM_SC_RA_RAM_ECHO_THRES_8K__M;
data |= ((echoThres->threshold << data |= ((echoThres->threshold <<
OFDM_SC_RA_RAM_ECHO_THRES_8K__B) OFDM_SC_RA_RAM_ECHO_THRES_8K__B)
& (OFDM_SC_RA_RAM_ECHO_THRES_8K__M)); & (OFDM_SC_RA_RAM_ECHO_THRES_8K__M));
goto error; break;
default: default:
return -EINVAL; return -EINVAL;
goto error; goto error;
...@@ -3825,10 +3825,10 @@ static int SetDVBT(struct drxk_state *state, u16 IntermediateFreqkHz, ...@@ -3825,10 +3825,10 @@ static int SetDVBT(struct drxk_state *state, u16 IntermediateFreqkHz,
/* fall through , try first guess DRX_FFTMODE_8K */ /* fall through , try first guess DRX_FFTMODE_8K */
case TRANSMISSION_MODE_8K: case TRANSMISSION_MODE_8K:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K;
goto error; break;
case TRANSMISSION_MODE_2K: case TRANSMISSION_MODE_2K:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_MODE_2K; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_MODE_2K;
goto error; break;
} }
/* guard */ /* guard */
...@@ -3839,16 +3839,16 @@ static int SetDVBT(struct drxk_state *state, u16 IntermediateFreqkHz, ...@@ -3839,16 +3839,16 @@ static int SetDVBT(struct drxk_state *state, u16 IntermediateFreqkHz,
/* fall through , try first guess DRX_GUARD_1DIV4 */ /* fall through , try first guess DRX_GUARD_1DIV4 */
case GUARD_INTERVAL_1_4: case GUARD_INTERVAL_1_4:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4;
goto error; break;
case GUARD_INTERVAL_1_32: case GUARD_INTERVAL_1_32:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_32; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_32;
goto error; break;
case GUARD_INTERVAL_1_16: case GUARD_INTERVAL_1_16:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_16; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_16;
goto error; break;
case GUARD_INTERVAL_1_8: case GUARD_INTERVAL_1_8:
transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_8; transmissionParams |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_8;
goto error; break;
} }
/* hierarchy */ /* hierarchy */
......
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