Browse Source

V4L/DVB (4529): Keep the PID parse bit when resetting the output mode

Matthieu Castet found that with the rewritten dib3000mc-driver the PID-parsing
was handled correctly. This changeset fixes it.
Thanks Matthieu

Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Patrick Boettcher 19 years ago
parent
commit
559463bba8
1 changed files with 4 additions and 3 deletions
  1. 4 3
      drivers/media/dvb/frontends/dib3000mc.c

+ 4 - 3
drivers/media/dvb/frontends/dib3000mc.c

@@ -169,7 +169,8 @@ static int dib3000mc_set_output_mode(struct dib3000mc_state *state, int mode)
 	u16 outreg = 0;
 	u16 outmode = 0;
 	u16 elecout = 1;
-	u16 smo_reg = (0 << 6) | (0 << 5) | (0 << 4) | (0 << 3) | (1 << 1) | 0 ; //smo_mode = 1
+	u16 smo_reg = (0 << 6) | (0 << 5) | (0 << 3) | (1 << 1) | 0 |
+		(dib3000mc_read_word(state, 206) & 0x0010); /* keep the pid_parse bit */
 
 	dprintk("-I-  Setting output mode for demod %p to %d\n",
 			&state->demod, mode);
@@ -197,7 +198,7 @@ static int dib3000mc_set_output_mode(struct dib3000mc_state *state, int mode)
 			P_smo_mode           [2;2:1] = 11
 			P_smo_ovf_prot       [1;0:0] = 0
 			*/
-			smo_reg = (0 << 6) | (0 << 5) | (0 << 4) | (0 << 3) |(3 << 1) | 0;
+			smo_reg = (0 << 6) | (0 << 5) | (0 << 3) |(3 << 1) | 0;
 			fifo_threshold = 512;
 			outmode = 5;
 			break;
@@ -212,7 +213,7 @@ static int dib3000mc_set_output_mode(struct dib3000mc_state *state, int mode)
 	}
 
 	if ((state->cfg->output_mpeg2_in_188_bytes))
-		smo_reg |= (1 << 5) ; //P_smo_rs_discard     [1;5:5] = 1
+		smo_reg |= (1 << 5); // P_smo_rs_discard     [1;5:5] = 1
 
 	outreg = dib3000mc_read_word(state, 244) & 0x07FF;
 	outreg |= (outmode << 11);