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

Commit 9045e729 authored by Andreas Regel's avatar Andreas Regel Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (13982): [STV090x] setup master clock in stv090x_init instead of stv090x_setup.



This is needed when clock input is driven from tuner and an output
divider different from 1 is used.

Signed-off-by: default avatarAndreas Regel <andreas.regel@gmx.de>
Signed-off-by: default avatarManu Abraham <manu@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent ec2d3a62
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -4292,6 +4292,15 @@ static int stv090x_init(struct dvb_frontend *fe)
	const struct stv090x_config *config = state->config;
	u32 reg;

	if (state->internal->mclk == 0) {
		stv090x_set_mclk(state, 135000000, config->xtal); /* 135 Mhz */
		msleep(5);
		if (stv090x_write_reg(state, STV090x_SYNTCTRL,
				      0x20 | config->clk_mode) < 0)
			goto err;
		stv090x_get_mclk(state);
	}

	if (stv090x_wakeup(fe) < 0) {
		dprintk(FE_ERROR, 1, "Error waking device");
		goto err;
@@ -4426,12 +4435,6 @@ static int stv090x_setup(struct dvb_frontend *fe)
	if (stv090x_write_reg(state, STV090x_TSTRES0, 0x00) < 0)
		goto err;

	stv090x_set_mclk(state, 135000000, config->xtal); /* 135 Mhz */
	msleep(5);
	if (stv090x_write_reg(state, STV090x_SYNTCTRL, 0x20 | config->clk_mode) < 0)
		goto err;
	stv090x_get_mclk(state);

	return 0;
err:
	dprintk(FE_ERROR, 1, "I/O error");