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

Commit c5eb643f authored by Abylay Ospan's avatar Abylay Ospan Committed by Mauro Carvalho Chehab
Browse files

[media] Fix DVB-S/S2 tune for sony ascot3a tuner



* fix buffer length check
* do not rely on ROLLOFF

Signed-off-by: default avatarAbylay Ospan <aospan@netup.ru>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 83808c23
Loading
Loading
Loading
Loading
+3 −23
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ static int horus3a_write_regs(struct horus3a_priv *priv,
		}
	};

	if (len + 1 >= sizeof(buf)) {
	if (len + 1 > sizeof(buf)) {
		dev_warn(&priv->i2c->dev,"wr reg=%04x: len=%d is too big!\n",
			 reg, len + 1);
		return -E2BIG;
@@ -272,24 +272,6 @@ static int horus3a_set_params(struct dvb_frontend *fe)
		if (fc_lpf > 36)
			fc_lpf = 36;
	} else if (p->delivery_system == SYS_DVBS2) {
		int rolloff;

		switch (p->rolloff) {
		case ROLLOFF_35:
			rolloff = 35;
			break;
		case ROLLOFF_25:
			rolloff = 25;
			break;
		case ROLLOFF_20:
			rolloff = 20;
			break;
		case ROLLOFF_AUTO:
		default:
			dev_err(&priv->i2c->dev,
				"horus3a: auto roll-off is not supported\n");
			return -EINVAL;
		}
		/*
		 * SR <= 4.5:
		 * fc_lpf = 5
@@ -302,11 +284,9 @@ static int horus3a_set_params(struct dvb_frontend *fe)
		if (symbol_rate <= 4500)
			fc_lpf = 5;
		else if (symbol_rate <= 10000)
			fc_lpf = (u8)DIV_ROUND_UP(
				symbol_rate * (200 + rolloff), 200000);
			fc_lpf = (u8)((symbol_rate * 11 + (10000-1)) / 10000);
		else
			fc_lpf = (u8)DIV_ROUND_UP(
				symbol_rate * (100 + rolloff), 200000) + 5;
			fc_lpf = (u8)((symbol_rate * 3 + (5000-1)) / 5000 + 5);
		/* 5 <= fc_lpf <= 36 is valid */
		if (fc_lpf > 36)
			fc_lpf = 36;