Hartmut Hackmann wrote: > Here is the experimental patch i promised: > The struct tda1004x_config has a new entry: .ts_mode > Possible values are TDA10046_TS_PARALLEL or TDA10046_TS_SERIAL > There always is only one interface active, default is parallel. > Can you please give it a try? > > Hartmut Hartmut, Would you mind if I send this one in through the m920x tree? Both Pierre and Nick's patches depend on this one, and it makes sense to push these changes together. Can you either push it to your tree, so that I can merge it into the m920x tree before applying Pierre's patch, or send me your s-o-b and I'll take care of it? Thanks, Mike > diff -uNr v4l-dvb/linux/drivers/media/dvb/frontends/tda1004x.c v4l-dvb.new/linux/drivers/media/dvb/frontends/tda1004x.c > --- v4l-dvb/linux/drivers/media/dvb/frontends/tda1004x.c 2007-03-17 02:07:11.000000000 +0100 > +++ v4l-dvb.new/linux/drivers/media/dvb/frontends/tda1004x.c 2007-03-17 01:45:35.000000000 +0100 > @@ -657,8 +657,16 @@ > tda1004x_write_mask(state, TDA10046H_CONF_POLARITY, 0xf0, 0x60); // set AGC polarities > break; > } > + if (state->config->ts_mode == 0) { > + tda1004x_write_mask(state, TDA10046H_CONF_TRISTATE1, 0xc0, 0x40); > + tda1004x_write_mask(state, 0x3a, 0x80, state->config->invert_oclk << 7); > + } else { > + tda1004x_write_mask(state, TDA10046H_CONF_TRISTATE1, 0xc0, 0x80); > + tda1004x_write_mask(state, TDA10046H_CONF_POLARITY, 0x10, > + state->config->invert_oclk << 4); > + } > tda1004x_write_byteI(state, TDA1004X_CONFADC2, 0x38); > - tda1004x_write_byteI(state, TDA10046H_CONF_TRISTATE1, 0x79); // Turn IF AGC output on > + tda1004x_write_mask (state, TDA10046H_CONF_TRISTATE1, 0x3e, 0x38); // Turn IF AGC output on > tda1004x_write_byteI(state, TDA10046H_AGC_TUN_MIN, 0); // } > tda1004x_write_byteI(state, TDA10046H_AGC_TUN_MAX, 0xff); // } AGC min/max values > tda1004x_write_byteI(state, TDA10046H_AGC_IF_MIN, 0); // } > @@ -668,7 +676,6 @@ > tda1004x_write_byteI(state, TDA1004X_CONF_TS1, 7); // MPEG2 interface config > tda1004x_write_byteI(state, TDA1004X_CONF_TS2, 0xc0); // MPEG2 interface config > // tda1004x_write_mask(state, 0x50, 0x80, 0x80); // handle out of guard echoes > - tda1004x_write_mask(state, 0x3a, 0x80, state->config->invert_oclk << 7); > > return 0; > } > diff -uNr v4l-dvb/linux/drivers/media/dvb/frontends/tda1004x.h v4l-dvb.new/linux/drivers/media/dvb/frontends/tda1004x.h > --- v4l-dvb/linux/drivers/media/dvb/frontends/tda1004x.h 2007-03-17 02:07:11.000000000 +0100 > +++ v4l-dvb.new/linux/drivers/media/dvb/frontends/tda1004x.h 2007-03-17 02:00:52.000000000 +0100 > @@ -61,6 +61,11 @@ > TDA10046_FREQ_052, /* low IF, 5.1667 MHZ for tda9889 */ > }; > > +enum tda10046_tsout { > + TDA10046_TS_PARALLEL = 0x00, /* parallel transport stream, default */ > + TDA10046_TS_SERIAL = 0x01, /* serial transport stream */ > +}; > + > struct tda1004x_config > { > /* the demodulator's i2c address */ > @@ -72,6 +77,9 @@ > /* Does the OCLK signal need inverted? */ > u8 invert_oclk; > > + /* parallel or serial transport stream */ > + enum tda10046_tsout ts_mode; > + > /* Xtal frequency, 4 or 16MHz*/ > enum tda10046_xtal xtal_freq; _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb