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);
                        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;
        }
 
        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);