Commit 25e73753 authored by Matthias Schwarzott's avatar Matthias Schwarzott Committed by Mauro Carvalho Chehab
Browse files

[media] si2165: set list of DVB-T registers together



Use si2165_write_reg_list() to do the DVB-T mode initialization altogether.

Signed-off-by: default avatarMatthias Schwarzott <zzam@gentoo.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 542fb3c5
Loading
Loading
Loading
Loading
+26 −47
Original line number Diff line number Diff line
@@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = {
	{ 0x0123, 0x70 }
};

static const struct si2165_reg_value_pair dvbt_regs[] = {
	/* standard = DVB-T */
	{ 0x00ec, 0x01 },
	{ 0x08f8, 0x00 },
	/* impulsive_noise_remover */
	{ 0x031c, 0x01 },
	{ 0x00cb, 0x00 },
	/* agc2 */
	{ 0x016e, 0x41 },
	{ 0x016c, 0x0e },
	{ 0x016d, 0x10 },
	/* agc */
	{ 0x015b, 0x03 },
	{ 0x0150, 0x78 },
	/* agc */
	{ 0x01a0, 0x78 },
	{ 0x01c8, 0x68 },
	/* freq_sync_range */
	REG16(0x030c, 0x0064),
	/* gp_reg0 */
	{ 0x0387, 0x00 }
};

static int si2165_set_frontend(struct dvb_frontend *fe)
{
	int ret;
@@ -825,18 +848,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
		bw10k = 800;
	}

	/* standard = DVB-T */
	ret = si2165_writereg8(state, 0x00ec, 0x01);
	if (ret < 0)
		return ret;
	ret = si2165_adjust_pll_divl(state, 12);
	if (ret < 0)
		return ret;

	ret = si2165_set_if_freq_shift(state);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x08f8, 0x00);
	if (ret < 0)
		return ret;
	/* bandwidth in 10KHz steps */
@@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
	ret = si2165_set_oversamp(state, dvb_rate);
	if (ret < 0)
		return ret;
	/* impulsive_noise_remover */
	ret = si2165_writereg8(state, 0x031c, 0x01);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x00cb, 0x00);
	if (ret < 0)
		return ret;
	/* agc2 */
	ret = si2165_writereg8(state, 0x016e, 0x41);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x016c, 0x0e);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x016d, 0x10);
	if (ret < 0)
		return ret;
	/* agc */
	ret = si2165_writereg8(state, 0x015b, 0x03);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x0150, 0x78);
	if (ret < 0)
		return ret;
	/* agc */
	ret = si2165_writereg8(state, 0x01a0, 0x78);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x01c8, 0x68);
	if (ret < 0)
		return ret;
	/* freq_sync_range */
	ret = si2165_writereg16(state, 0x030c, 0x0064);
	if (ret < 0)
		return ret;
	/* gp_reg0 */
	ret = si2165_readreg8(state, 0x0387, val);
	if (ret < 0)
		return ret;
	ret = si2165_writereg8(state, 0x0387, 0x00);

	ret = si2165_write_reg_list(state, dvbt_regs, ARRAY_SIZE(dvbt_regs));
	if (ret < 0)
		return ret;

	/* dsp_addr_jump */
	ret = si2165_writereg32(state, 0x0348, 0xf4000000);
	if (ret < 0)