Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1b82970 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

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

parent cf694b14
Loading
Loading
Loading
Loading
+81 −84
Original line number Diff line number Diff line
@@ -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);