Browse Source

V4L/DVB (13974): [STV090x] Fix locking reliabilty issues in automatic mode.

In automatic S/S2 detection mode, locking of a DVB-S transponder could
fail when coming from a DVB-S2 transponder. This change fixes the issue
by first disabling DVB-S and DVB-S2 mode before enabling it again.

Signed-off-by: Andreas Regel <andreas.regel@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Andreas Regel 15 years ago
parent
commit
b79c6df705
1 changed files with 4 additions and 0 deletions
  1. 4 0
      drivers/media/dvb/frontends/stv090x.c

+ 4 - 0
drivers/media/dvb/frontends/stv090x.c

@@ -1246,6 +1246,10 @@ static int stv090x_delivery_search(struct stv090x_state *state)
 	default:
 	default:
 		/* enable DVB-S2 and DVB-S2 in Auto MODE */
 		/* enable DVB-S2 and DVB-S2 in Auto MODE */
 		reg = STV090x_READ_DEMOD(state, DMDCFGMD);
 		reg = STV090x_READ_DEMOD(state, DMDCFGMD);
+		STV090x_SETFIELD_Px(reg, DVBS1_ENABLE_FIELD, 0);
+		STV090x_SETFIELD_Px(reg, DVBS2_ENABLE_FIELD, 0);
+		if (STV090x_WRITE_DEMOD(state, DMDCFGMD, reg) < 0)
+			goto err;
 		STV090x_SETFIELD_Px(reg, DVBS1_ENABLE_FIELD, 1);
 		STV090x_SETFIELD_Px(reg, DVBS1_ENABLE_FIELD, 1);
 		STV090x_SETFIELD_Px(reg, DVBS2_ENABLE_FIELD, 1);
 		STV090x_SETFIELD_Px(reg, DVBS2_ENABLE_FIELD, 1);
 		if (STV090x_WRITE_DEMOD(state, DMDCFGMD, reg) < 0)
 		if (STV090x_WRITE_DEMOD(state, DMDCFGMD, reg) < 0)