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

Commit 5918288a authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

[media] tua6100: use DVBv5 parameters on set_params()



Instead of using DVBv3 parameters, rely on DVBv5 parameters to
set the tuner

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent b738ae16
Loading
Loading
Loading
Loading
+15 −13
Original line number Original line Diff line number Diff line
@@ -70,6 +70,7 @@ static int tua6100_sleep(struct dvb_frontend *fe)
static int tua6100_set_params(struct dvb_frontend *fe,
static int tua6100_set_params(struct dvb_frontend *fe,
			      struct dvb_frontend_parameters *params)
			      struct dvb_frontend_parameters *params)
{
{
	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
	struct tua6100_priv *priv = fe->tuner_priv;
	struct tua6100_priv *priv = fe->tuner_priv;
	u32 div;
	u32 div;
	u32 prediv;
	u32 prediv;
@@ -85,36 +86,37 @@ static int tua6100_set_params(struct dvb_frontend *fe,
#define _ri 4000000
#define _ri 4000000


	// setup register 0
	// setup register 0
	if (params->frequency < 2000000) {
	if (c->frequency < 2000000)
		reg0[1] = 0x03;
		reg0[1] = 0x03;
	} else {
	else
		reg0[1] = 0x07;
		reg0[1] = 0x07;
	}


	// setup register 1
	// setup register 1
	if (params->frequency < 1630000) {
	if (c->frequency < 1630000)
		reg1[1] = 0x2c;
		reg1[1] = 0x2c;
	} else {
	else
		reg1[1] = 0x0c;
		reg1[1] = 0x0c;
	}

	if (_P == 64)
	if (_P == 64)
		reg1[1] |= 0x40;
		reg1[1] |= 0x40;
	if (params->frequency >= 1525000)
	if (c->frequency >= 1525000)
		reg1[1] |= 0x80;
		reg1[1] |= 0x80;


	// register 2
	// register 2
	reg2[1] = (_R >> 8) & 0x03;
	reg2[1] = (_R >> 8) & 0x03;
	reg2[2] = _R;
	reg2[2] = _R;
	if (params->frequency < 1455000) {
	if (c->frequency < 1455000)
		reg2[1] |= 0x1c;
		reg2[1] |= 0x1c;
	} else if (params->frequency < 1630000) {
	else if (c->frequency < 1630000)
		reg2[1] |= 0x0c;
		reg2[1] |= 0x0c;
	} else {
	else
		reg2[1] |= 0x1c;
		reg2[1] |= 0x1c;
	}


	// The N divisor ratio (note: params->frequency is in kHz, but we need it in Hz)
	/*
	prediv = (params->frequency * _R) / (_ri / 1000);
	 * The N divisor ratio (note: c->frequency is in kHz, but we
	 * need it in Hz)
	 */
	prediv = (c->frequency * _R) / (_ri / 1000);
	div = prediv / _P;
	div = prediv / _P;
	reg1[1] |= (div >> 9) & 0x03;
	reg1[1] |= (div >> 9) & 0x03;
	reg1[2] = div >> 1;
	reg1[2] = div >> 1;