Commit 5248ee65 authored by Antti Palosaari's avatar Antti Palosaari Committed by Ben Hutchings

tda10071: force modulation to QPSK on DVB-S

commit db4175ae upstream.

Only supported modulation for DVB-S is QPSK. Modulation parameter
contains invalid value for DVB-S on some cases, which leads driver
refusing tuning attempt. Due to that, hard code modulation to QPSK
in case of DVB-S.
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
[bwh: Backported to 3.2: adjust filename]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent e6fad979
...@@ -644,6 +644,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe, ...@@ -644,6 +644,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe,
struct dtv_frontend_properties *c = &fe->dtv_property_cache; struct dtv_frontend_properties *c = &fe->dtv_property_cache;
int ret, i; int ret, i;
u8 mode, rolloff, pilot, inversion, div; u8 mode, rolloff, pilot, inversion, div;
fe_modulation_t modulation;
dbg("%s: delivery_system=%d modulation=%d frequency=%d " \ dbg("%s: delivery_system=%d modulation=%d frequency=%d " \
"symbol_rate=%d inversion=%d pilot=%d rolloff=%d", __func__, "symbol_rate=%d inversion=%d pilot=%d rolloff=%d", __func__,
...@@ -677,10 +678,13 @@ static int tda10071_set_frontend(struct dvb_frontend *fe, ...@@ -677,10 +678,13 @@ static int tda10071_set_frontend(struct dvb_frontend *fe,
switch (c->delivery_system) { switch (c->delivery_system) {
case SYS_DVBS: case SYS_DVBS:
modulation = QPSK;
rolloff = 0; rolloff = 0;
pilot = 2; pilot = 2;
break; break;
case SYS_DVBS2: case SYS_DVBS2:
modulation = c->modulation;
switch (c->rolloff) { switch (c->rolloff) {
case ROLLOFF_20: case ROLLOFF_20:
rolloff = 2; rolloff = 2;
...@@ -722,7 +726,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe, ...@@ -722,7 +726,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe,
for (i = 0, mode = 0xff; i < ARRAY_SIZE(TDA10071_MODCOD); i++) { for (i = 0, mode = 0xff; i < ARRAY_SIZE(TDA10071_MODCOD); i++) {
if (c->delivery_system == TDA10071_MODCOD[i].delivery_system && if (c->delivery_system == TDA10071_MODCOD[i].delivery_system &&
c->modulation == TDA10071_MODCOD[i].modulation && modulation == TDA10071_MODCOD[i].modulation &&
c->fec_inner == TDA10071_MODCOD[i].fec) { c->fec_inner == TDA10071_MODCOD[i].fec) {
mode = TDA10071_MODCOD[i].val; mode = TDA10071_MODCOD[i].val;
dbg("%s: mode found=%02x", __func__, mode); dbg("%s: mode found=%02x", __func__, mode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment