V4L/DVB (4529): Keep the PID parse bit when resetting the output mode
authorPatrick Boettcher <pb@linuxtv.org>
Sat, 19 Aug 2006 19:13:53 +0000 (16:13 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 26 Sep 2006 15:30:34 +0000 (12:30 -0300)
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>
drivers/media/dvb/frontends/dib3000mc.c

index 0b4b8220b69da44d75dc6b94212d7ad3f2f8206b..6d61237a450d74ad431613e8ad9869b959ac9ab1 100644 (file)
@@ -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);