laasa schrieb: > Second try: Here again with patchfile and shifted from budget to > budget-ci (thanks to marco for some hints). > > Sources > - Manus snapshot at http://jusst.de/manu/stb0899-v4l-dvb.tar.bz > - the szap-sources from http://dev.kewl.org/tmp/hvr4000/szap2.tgz > > Envoirenment: > - TT3200 (SAA7146AH, STB0899 C2L, STB6100, LNBP21 PD, 27000 MHz, board > B2S3000 Rev 1.0 TT2006.1) > - Tested with Linux-Kernel 2.6.16-45 (from kernel.org) and > 2.6.17-chw-8 (MythTV R5D1): must be <= 2.6.17 > > Procedure for compiling and loading of drivers: > - unpack kernel-sources (to /usr/src/linux) if necessary > - unpack v4l-dvb-sources (to /usr/src/v4l-dvb) > - unpack szap2-sources (to /usr/src/szap) > - change to /usr/src/szap > - make > - make install => check if szap2 now is installed > - change to /usr/src/v4l-dvb > - patch the tree > - v4l-scripts-make_myconfig.pl > - rename .version in /usr/src/v4l-dvb/v4l > - make > - unload all dvb-driver (e.g. make rmmod) > - make install > - modprobe budget-ci > - szap -r ... > - xine ... > > Notes: > - the TT3200 is build into modules budget-ci > - to tune a channel you must (most times) tune to different channels > (for me ZDF and Kika are good candidates to get a LOCK) > > Problems: > - everytime with the locking of PLL (sometimes after some trys on > different DVB-S-channels, on some DVB-S-channels and all DVB-S2-channels > never) > - It seems to be a problem with higher frequences (higest successfuly > tuned frequency is 11836 MHz, e.g. ARD => ProSieben ... not work) > > > ------------------------------------------------------------------------ > > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.c v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.c > --- v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.c 2007-02-24 11:57:13.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.c 2007-05-06 20:03:50.000000000 +0200 > @@ -1563,6 +1563,11 @@ static int dvb_frontend_ioctl(struct ino > memset(&fetunesettings, 0, sizeof(struct dvb_frontend_tune_settings)); > memcpy(&fetunesettings.parameters, parg, sizeof (struct dvb_frontend_parameters)); > > + olddrv_to_newapi(fe,&fepriv->fe_params, &fepriv->parameters, FE_QPSK); > + > + /* Request the search algorithm to search */ > + fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; > + > /* force auto frequency inversion if requested */ > if (dvb_force_auto_inversion) { > fepriv->parameters.inversion = INVERSION_AUTO; > @@ -1893,13 +1898,15 @@ void dvb_frontend_detach(struct dvb_fron > { > void *ptr; > > - if (fe->ops.release_sec) { > + ptr = (void*)fe->ops.release_sec; > + if (ptr) { > fe->ops.release_sec(fe); > - symbol_put_addr(fe->ops.release_sec); > + symbol_put_addr(ptr); > } > - if (fe->ops.tuner_ops.release) { > + ptr = (void*)fe->ops.tuner_ops.release; > + if (ptr) { > fe->ops.tuner_ops.release(fe); > - symbol_put_addr(fe->ops.tuner_ops.release); > + symbol_put_addr(ptr); > } > ptr = (void*)fe->ops.release; > if (ptr) { > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.h v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.h > --- v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.h 2007-02-24 11:57:15.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.h 2007-05-06 19:33:25.000000000 +0200 > @@ -199,6 +199,8 @@ struct dvb_tuner_ops { > > int (*get_frequency)(struct dvb_frontend *fe, u32 *frequency); > int (*get_bandwidth)(struct dvb_frontend *fe, u32 *bandwidth); > + int (*set_frequency)(struct dvb_frontend *fe, u32 frequency); > + int (*set_bandwidth)(struct dvb_frontend *fe, u32 bandwidth); > > #define TUNER_STATUS_LOCKED 1 > int (*get_status)(struct dvb_frontend *fe, u32 *status); > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/frontends/stb0899_drv.c v4l-dvb/linux/drivers/media/dvb/frontends/stb0899_drv.c > --- v4l-dvb.org/linux/drivers/media/dvb/frontends/stb0899_drv.c 2007-02-19 00:26:05.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/frontends/stb0899_drv.c 2007-05-06 20:08:35.000000000 +0200 > @@ -31,7 +31,8 @@ > #include "stb0899_priv.h" > #include "stb0899_reg.h" > > -static unsigned int verbose = 5; > +//static unsigned int verbose = 5; > +static unsigned int verbose = 0; > module_param(verbose, int, 0644); > > /* C/N in dB/10, NIRM/NIRL */ > @@ -2013,6 +2014,7 @@ struct dvb_frontend *stb0899_attach(stru > state->i2c = i2c; > state->frontend.ops = stb0899_ops; > state->frontend.demodulator_priv = state; > + state->delsys = DVBFE_DELSYS_DVBS; > > stb0899_wakeup(&state->frontend); > if (stb0899_get_dev_id(state) == -ENODEV) { > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/frontends/stb6100.c v4l-dvb/linux/drivers/media/dvb/frontends/stb6100.c > --- v4l-dvb.org/linux/drivers/media/dvb/frontends/stb6100.c 2007-02-10 17:37:22.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/frontends/stb6100.c 2007-05-06 20:08:40.000000000 +0200 > @@ -27,7 +27,8 @@ > #include "dvb_frontend.h" > #include "stb6100.h" > > -static unsigned int verbose; > +//static unsigned int verbose; > +static unsigned int verbose = 0; > module_param(verbose, int, 0644); > > > @@ -423,6 +424,20 @@ static int stb6100_set_frequency(struct > if ((rc = stb6100_write_reg(state, STB6100_VCO, regs[STB6100_VCO])) < 0) > return rc; > > +///XXX > + { > + int rc; > + unsigned long start = jiffies; > + > + while ((rc = stb6100_read_reg(state, STB6100_LD)) >=0) { > + if (rc & STB6100_LD_LOCK) > + break; > + if (jiffies - start > 100) > + break; > + msleep(10); > + } > + } > + > msleep(5); /* wait for LO to lock */ > regs[STB6100_VCO] &= ~STB6100_VCO_OSCH; /* vco search disabled */ > regs[STB6100_VCO] |= STB6100_VCO_OCK; /* search clock off */ > @@ -525,6 +540,8 @@ static struct dvb_tuner_ops stb6100_ops > .set_state = stb6100_set_state, > .get_frequency = stb6100_get_frequency, > .get_bandwidth = stb6100_get_bandwidth, > + .set_frequency = stb6100_set_frequency, > + .set_bandwidth = stb6100_set_bandwidth, > .release = stb6100_release > }; > > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget-ci.c v4l-dvb/linux/drivers/media/dvb/ttpci/budget-ci.c > --- v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget-ci.c 2007-02-22 14:20:08.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/ttpci/budget-ci.c 2007-05-06 19:31:18.000000000 +0200 > @@ -47,6 +47,10 @@ > #include "bsbe1.h" > #include "bsru6.h" > > +#include "stb0899_drv.h" > +#include "stb0899_reg.h" > +#include "stb6100.h" > + > /* > * Regarding DEBIADDR_IR: > * Some CI modules hang if random addresses are read. > @@ -1086,6 +1090,528 @@ static struct stv0297_config dvbc_philip > > > > +/* TT S2-3200 DVB-S (STB0899) Inittab */ > +static const struct stb0899_s1_reg tt3200_stb0899_s1_init_1[] = { > + > +// 0x0000000b , /* SYSREG */ > + { STB0899_DEV_ID , 0x81 }, > + { STB0899_DISCNTRL1 , 0x32 }, > + { STB0899_DISCNTRL2 , 0x80 }, > + { STB0899_DISRX_ST0 , 0x04 }, > + { STB0899_DISRX_ST1 , 0x00 }, > + { STB0899_DISPARITY , 0x00 }, > + { STB0899_DISFIFO , 0x00 }, > + { STB0899_DISSTATUS , 0x20 }, > + { STB0899_DISF22 , 0x8c }, > + { STB0899_DISF22RX , 0x9a }, > + //SYSREG ? > + { STB0899_ACRPRESC , 0x11 }, > + { STB0899_ACRDIV1 , 0x0a }, > + { STB0899_ACRDIV2 , 0x05 }, > + { STB0899_DACR1 , 0x00 }, > + { STB0899_DACR2 , 0x00 }, > + { STB0899_OUTCFG , 0x00 }, > + { STB0899_MODECFG , 0x00 }, > + { STB0899_IRQSTATUS_3 , 0x30 }, > + { STB0899_IRQSTATUS_2 , 0x00 }, > + { STB0899_IRQSTATUS_1 , 0x00 }, > + { STB0899_IRQSTATUS_0 , 0x00 }, > + { STB0899_IRQMSK_3 , 0xf3 }, > + { STB0899_IRQMSK_2 , 0xfc }, > + { STB0899_IRQMSK_1 , 0xff }, > + { STB0899_IRQMSK_0 , 0xff }, > + { STB0899_IRQCFG , 0x00 }, > + { STB0899_I2CCFG , 0x88 }, > + { STB0899_I2CRPT , 0x5c }, > + { STB0899_IOPVALUE5 , 0x00 }, > + { STB0899_IOPVALUE4 , 0x20 }, > + { STB0899_IOPVALUE3 , 0xc9 }, > + { STB0899_IOPVALUE2 , 0x90 }, > + { STB0899_IOPVALUE1 , 0x40 }, > + { STB0899_IOPVALUE0 , 0x00 }, > + { STB0899_GPIO00CFG , 0x82 }, > + { STB0899_GPIO01CFG , 0x82 }, > + { STB0899_GPIO02CFG , 0x82 }, > + { STB0899_GPIO03CFG , 0x82 }, > + { STB0899_GPIO04CFG , 0x82 }, > + { STB0899_GPIO05CFG , 0x82 }, > + { STB0899_GPIO06CFG , 0x82 }, > + { STB0899_GPIO07CFG , 0x82 }, > + { STB0899_GPIO08CFG , 0x82 }, > + { STB0899_GPIO09CFG , 0x82 }, > + { STB0899_GPIO10CFG , 0x82 }, > + { STB0899_GPIO11CFG , 0x82 }, > + { STB0899_GPIO12CFG , 0x82 }, > + { STB0899_GPIO13CFG , 0x82 }, > + { STB0899_GPIO14CFG , 0x82 }, > + { STB0899_GPIO15CFG , 0x82 }, > + { STB0899_GPIO16CFG , 0x82 }, > + { STB0899_GPIO17CFG , 0x82 }, > + { STB0899_GPIO18CFG , 0x82 }, > + { STB0899_GPIO19CFG , 0x82 }, > + { STB0899_GPIO20CFG , 0x82 }, > + { STB0899_SDATCFG , 0xb8 }, > + { STB0899_SCLTCFG , 0xba }, > + { STB0899_AGCRFCFG , 0x1c }, // 0x11 > + { STB0899_GPIO22 , 0x82 }, // AGCBB2CFG > + { STB0899_GPIO21 , 0x91 }, // AGCBB1CFG > + { STB0899_DIRCLKCFG , 0x82 }, > + { STB0899_CLKOUT27CFG , 0x7e }, > + { STB0899_STDBYCFG , 0x82 }, > + { STB0899_CS0CFG , 0x82 }, > + { STB0899_CS1CFG , 0x82 }, > + { STB0899_DISEQCOCFG , 0x20 }, > + { STB0899_GPIO32CFG , 0x82 }, > + { STB0899_GPIO33CFG , 0x82 }, > + { STB0899_GPIO34CFG , 0x82 }, > + { STB0899_GPIO35CFG , 0x82 }, > + { STB0899_GPIO36CFG , 0x82 }, > + { STB0899_GPIO37CFG , 0x82 }, > + { STB0899_GPIO38CFG , 0x82 }, > + { STB0899_GPIO39CFG , 0x82 }, > + { STB0899_NCOARSE , 0x15 }, // 0x15 = 27 Mhz Clock, F/3 = 198MHz, F/6 = 99MHz > + { STB0899_SYNTCTRL , 0x02 }, // 0x00 = CLK from CLKI, 0x02 = CLK from XTALI > + { STB0899_FILTCTRL , 0x00 }, > + { STB0899_SYSCTRL , 0x00 }, > + { STB0899_STOPCLK1 , 0x20 }, > + { STB0899_STOPCLK2 , 0x00 }, > + { STB0899_INTBUFSTATUS , 0x00 }, > + { STB0899_INTBUFCTRL , 0x0a }, > + { 0xffff , 0xff }, > +}; > + > +static const struct stb0899_s2_reg tt3200_stb0899_s2_init_2[] = { > + > + { STB0899_OFF0_DMD_STATUS , STB0899_BASE_DMD_STATUS , 0x00000103 }, /* DMDSTATUS */ > + { STB0899_OFF0_CRL_FREQ , STB0899_BASE_CRL_FREQ , 0x3ed1da56 }, /* CRLFREQ */ > + { STB0899_OFF0_BTR_FREQ , STB0899_BASE_BTR_FREQ , 0x00004000 }, /* BTRFREQ */ > + { STB0899_OFF0_IF_AGC_GAIN , STB0899_BASE_IF_AGC_GAIN , 0x00002ade }, /* IFAGCGAIN */ > + { STB0899_OFF0_BB_AGC_GAIN , STB0899_BASE_BB_AGC_GAIN , 0x000001bc }, /* BBAGCGAIN */ > + { STB0899_OFF0_DC_OFFSET , STB0899_BASE_DC_OFFSET , 0x00000200 }, /* DCOFFSET */ > + { STB0899_OFF0_DMD_CNTRL , STB0899_BASE_DMD_CNTRL , 0x0000000f }, /* DMDCNTRL */ > + > + { STB0899_OFF0_IF_AGC_CNTRL , STB0899_BASE_IF_AGC_CNTRL , 0x03fb4a20 }, /* IFAGCCNTRL */ > + { STB0899_OFF0_BB_AGC_CNTRL , STB0899_BASE_BB_AGC_CNTRL , 0x00200c97 }, /* BBAGCCNTRL */ > + > + { STB0899_OFF0_CRL_CNTRL , STB0899_BASE_CRL_CNTRL , 0x00000016 }, /* CRLCNTRL */ > + { STB0899_OFF0_CRL_PHS_INIT , STB0899_BASE_CRL_PHS_INIT , 0x00000000 }, /* CRLPHSINIT */ > + { STB0899_OFF0_CRL_FREQ_INIT , STB0899_BASE_CRL_FREQ_INIT , 0x00000000 }, /* CRLFREQINIT */ > + { STB0899_OFF0_CRL_LOOP_GAIN , STB0899_BASE_CRL_LOOP_GAIN , 0x00000000 }, /* CRLLOOPGAIN */ > + { STB0899_OFF0_CRL_NOM_FREQ , STB0899_BASE_CRL_NOM_FREQ , 0x3ed097b6 }, /* CRLNOMFREQ */ > + { STB0899_OFF0_CRL_SWP_RATE , STB0899_BASE_CRL_SWP_RATE , 0x00000000 }, /* CRLSWPRATE */ > + { STB0899_OFF0_CRL_MAX_SWP , STB0899_BASE_CRL_MAX_SWP , 0x00000000 }, /* CRLMAXSWP */ > + { STB0899_OFF0_CRL_LK_CNTRL , STB0899_BASE_CRL_LK_CNTRL , 0x0f6cdc01 }, /* CRLLKCNTRL */ > + { STB0899_OFF0_DECIM_CNTRL , STB0899_BASE_DECIM_CNTRL , 0x00000000 }, /* DECIMCNTRL */ > + { STB0899_OFF0_BTR_CNTRL , STB0899_BASE_BTR_CNTRL , 0x00003993 }, /* BTRCNTRL */ > + { STB0899_OFF0_BTR_LOOP_GAIN , STB0899_BASE_BTR_LOOP_GAIN , 0x000d3c6f }, /* BTRLOOPGAIN */ > + { STB0899_OFF0_BTR_PHS_INIT , STB0899_BASE_BTR_PHS_INIT , 0x00000000 }, /* BTRPHSINIT */ > + { STB0899_OFF0_BTR_FREQ_INIT , STB0899_BASE_BTR_FREQ_INIT , 0x00000000 }, /* BTRFREQINIT */ > + { STB0899_OFF0_BTR_NOM_FREQ , STB0899_BASE_BTR_NOM_FREQ , 0x0238e38e }, /* BTRNOMFREQ */ > + { STB0899_OFF0_BTR_LK_CNTRL , STB0899_BASE_BTR_LK_CNTRL , 0x00000000 }, /* BTRLKCNTRL */ > + { STB0899_OFF0_DECN_CNTRL , STB0899_BASE_DECN_CNTRL , 0x00000000 }, /* DECNCNTRL */ > + { STB0899_OFF0_TP_CNTRL , STB0899_BASE_TP_CNTRL , 0x00000000 }, /* TPCNTRL */ > + { STB0899_OFF0_TP_BUF_STATUS , STB0899_BASE_TP_BUF_STATUS , 0x00000000 }, /* TPBUFSTATUS */ > + { STB0899_OFF0_DC_ESTIM , STB0899_BASE_DC_ESTIM , 0x00000000 }, /* DCESTIM */ > + { STB0899_OFF0_FLL_CNTRL , STB0899_BASE_FLL_CNTRL , 0x00000000 }, /* FLLCNTRL */ > + { STB0899_OFF0_FLL_FREQ_WD , STB0899_BASE_FLL_FREQ_WD , 0x40070000 }, /* FLLFREQWD */ > + { STB0899_OFF0_ANTI_ALIAS_SEL , STB0899_BASE_ANTI_ALIAS_SEL , 0x00000001 }, /* ANTIALIASSEL */ > + { STB0899_OFF0_RRC_ALPHA , STB0899_BASE_RRC_ALPHA , 0x00000002 }, /* RRCALPHA */ > + { STB0899_OFF0_DC_ADAPT_LSHFT , STB0899_BASE_DC_ADAPT_LSHFT , 0x00000000 }, /* DCADAPTISHFT */ > + { STB0899_OFF0_IMB_OFFSET , STB0899_BASE_IMB_OFFSET , 0x0000fe01 }, /* IMBOFFSET */ > + { STB0899_OFF0_IMB_ESTIMATE , STB0899_BASE_IMB_ESTIMATE , 0x00000000 }, /* IMBESTIMATE */ > + { STB0899_OFF0_IMB_CNTRL , STB0899_BASE_IMB_CNTRL , 0x00000001 }, /* IMBCNTRL */ > + { STB0899_OFF0_IF_AGC_CNTRL2 , STB0899_BASE_IF_AGC_CNTRL2 , 0x00005007 }, /* IFAGCCNTRL2 */ > + { STB0899_OFF0_DMD_CNTRL2 , STB0899_BASE_DMD_CNTRL2 , 0x00000002 }, /* DMDCNTRL2 */ > + { STB0899_OFF0_TP_BUFFER , STB0899_BASE_TP_BUFFER , 0x00000000 }, /* TPBUFFER */ > + { STB0899_OFF0_TP_BUFFER1 , STB0899_BASE_TP_BUFFER1 , 0x00000000 }, /* TPBUFFER1 */ > + { STB0899_OFF0_TP_BUFFER2 , STB0899_BASE_TP_BUFFER2 , 0x00000000 }, /* TPBUFFER2 */ > + { STB0899_OFF0_TP_BUFFER3 , STB0899_BASE_TP_BUFFER3 , 0x00000000 }, /* TPBUFFER3 */ > + { STB0899_OFF0_TP_BUFFER4 , STB0899_BASE_TP_BUFFER4 , 0x00000000 }, /* TPBUFFER4 */ > + { STB0899_OFF0_TP_BUFFER5 , STB0899_BASE_TP_BUFFER5 , 0x00000000 }, /* TPBUFFER5 */ > + { STB0899_OFF0_TP_BUFFER6 , STB0899_BASE_TP_BUFFER6 , 0x00000000 }, /* TPBUFFER6 */ > + { STB0899_OFF0_TP_BUFFER7 , STB0899_BASE_TP_BUFFER7 , 0x00000000 }, /* TPBUFFER7 */ > + { STB0899_OFF0_TP_BUFFER8 , STB0899_BASE_TP_BUFFER8 , 0x00000000 }, /* TPBUFFER8 */ > + { STB0899_OFF0_TP_BUFFER9 , STB0899_BASE_TP_BUFFER9 , 0x00000000 }, /* TPBUFFER9 */ > + { STB0899_OFF0_TP_BUFFER10 , STB0899_BASE_TP_BUFFER10 , 0x00000000 }, /* TPBUFFER10 */ > + { STB0899_OFF0_TP_BUFFER11 , STB0899_BASE_TP_BUFFER11 , 0x00000000 }, /* TPBUFFER11 */ > + { STB0899_OFF0_TP_BUFFER12 , STB0899_BASE_TP_BUFFER12 , 0x00000000 }, /* TPBUFFER12 */ > + { STB0899_OFF0_TP_BUFFER13 , STB0899_BASE_TP_BUFFER13 , 0x00000000 }, /* TPBUFFER13 */ > + { STB0899_OFF0_TP_BUFFER14 , STB0899_BASE_TP_BUFFER14 , 0x00000000 }, /* TPBUFFER14 */ > + { STB0899_OFF0_TP_BUFFER15 , STB0899_BASE_TP_BUFFER15 , 0x00000000 }, /* TPBUFFER15 */ > + { STB0899_OFF0_TP_BUFFER16 , STB0899_BASE_TP_BUFFER16 , 0x0000ff00 }, /* TPBUFFER16 */ > + { STB0899_OFF0_TP_BUFFER17 , STB0899_BASE_TP_BUFFER17 , 0x00000100 }, /* TPBUFFER17 */ > + { STB0899_OFF0_TP_BUFFER18 , STB0899_BASE_TP_BUFFER18 , 0x0000fe01 }, /* TPBUFFER18 */ > + { STB0899_OFF0_TP_BUFFER19 , STB0899_BASE_TP_BUFFER19 , 0x000004fe }, /* TPBUFFER19 */ > + { STB0899_OFF0_TP_BUFFER20 , STB0899_BASE_TP_BUFFER20 , 0x0000cfe7 }, /* TPBUFFER20 */ > + { STB0899_OFF0_TP_BUFFER21 , STB0899_BASE_TP_BUFFER21 , 0x0000bec6 }, /* TPBUFFER21 */ > + { STB0899_OFF0_TP_BUFFER22 , STB0899_BASE_TP_BUFFER22 , 0x0000c2bf }, /* TPBUFFER22 */ > + { STB0899_OFF0_TP_BUFFER23 , STB0899_BASE_TP_BUFFER23 , 0x0000c1c1 }, /* TPBUFFER23 */ > + { STB0899_OFF0_TP_BUFFER24 , STB0899_BASE_TP_BUFFER24 , 0x0000c1c1 }, /* TPBUFFER24 */ > + { STB0899_OFF0_TP_BUFFER25 , STB0899_BASE_TP_BUFFER25 , 0x0000c1c1 }, /* TPBUFFER25 */ > + { STB0899_OFF0_TP_BUFFER26 , STB0899_BASE_TP_BUFFER26 , 0x0000c1c1 }, /* TPBUFFER26 */ > + { STB0899_OFF0_TP_BUFFER27 , STB0899_BASE_TP_BUFFER27 , 0x0000c1c0 }, /* TPBUFFER27 */ > + { STB0899_OFF0_TP_BUFFER28 , STB0899_BASE_TP_BUFFER28 , 0x0000c0c0 }, /* TPBUFFER28 */ > + { STB0899_OFF0_TP_BUFFER29 , STB0899_BASE_TP_BUFFER29 , 0x0000c1c1 }, /* TPBUFFER29 */ > + { STB0899_OFF0_TP_BUFFER30 , STB0899_BASE_TP_BUFFER30 , 0x0000c1c1 }, /* TPBUFFER30 */ > + { STB0899_OFF0_TP_BUFFER31 , STB0899_BASE_TP_BUFFER31 , 0x0000c0c1 }, /* TPBUFFER31 */ > + { STB0899_OFF0_TP_BUFFER32 , STB0899_BASE_TP_BUFFER32 , 0x0000c0c1 }, /* TPBUFFER32 */ > + { STB0899_OFF0_TP_BUFFER33 , STB0899_BASE_TP_BUFFER33 , 0x0000c1c1 }, /* TPBUFFER33 */ > + { STB0899_OFF0_TP_BUFFER34 , STB0899_BASE_TP_BUFFER34 , 0x0000c1c1 }, /* TPBUFFER34 */ > + { STB0899_OFF0_TP_BUFFER35 , STB0899_BASE_TP_BUFFER35 , 0x0000c0c1 }, /* TPBUFFER35 */ > + { STB0899_OFF0_TP_BUFFER36 , STB0899_BASE_TP_BUFFER36 , 0x0000c1c1 }, /* TPBUFFER36 */ > + { STB0899_OFF0_TP_BUFFER37 , STB0899_BASE_TP_BUFFER37 , 0x0000c0c1 }, /* TPBUFFER37 */ > + { STB0899_OFF0_TP_BUFFER38 , STB0899_BASE_TP_BUFFER38 , 0x0000c1c1 }, /* TPBUFFER38 */ > + { STB0899_OFF0_TP_BUFFER39 , STB0899_BASE_TP_BUFFER39 , 0x0000c0c0 }, /* TPBUFFER39 */ > + { STB0899_OFF0_TP_BUFFER40 , STB0899_BASE_TP_BUFFER40 , 0x0000c1c0 }, /* TPBUFFER40 */ > + { STB0899_OFF0_TP_BUFFER41 , STB0899_BASE_TP_BUFFER41 , 0x0000c1c1 }, /* TPBUFFER41 */ > + { STB0899_OFF0_TP_BUFFER42 , STB0899_BASE_TP_BUFFER42 , 0x0000c0c0 }, /* TPBUFFER42 */ > + { STB0899_OFF0_TP_BUFFER43 , STB0899_BASE_TP_BUFFER43 , 0x0000c1c0 }, /* TPBUFFER43 */ > + { STB0899_OFF0_TP_BUFFER44 , STB0899_BASE_TP_BUFFER44 , 0x0000c0c1 }, /* TPBUFFER44 */ > + { STB0899_OFF0_TP_BUFFER45 , STB0899_BASE_TP_BUFFER45 , 0x0000c1be }, /* TPBUFFER45 */ > + { STB0899_OFF0_TP_BUFFER46 , STB0899_BASE_TP_BUFFER46 , 0x0000c1c9 }, /* TPBUFFER46 */ > + { STB0899_OFF0_TP_BUFFER47 , STB0899_BASE_TP_BUFFER47 , 0x0000c0da }, /* TPBUFFER47 */ > + { STB0899_OFF0_TP_BUFFER48 , STB0899_BASE_TP_BUFFER48 , 0x0000c0ba }, /* TPBUFFER48 */ > + { STB0899_OFF0_TP_BUFFER49 , STB0899_BASE_TP_BUFFER49 , 0x0000c1c4 }, /* TPBUFFER49 */ > + { STB0899_OFF0_TP_BUFFER50 , STB0899_BASE_TP_BUFFER50 , 0x0000c1bf }, /* TPBUFFER50 */ > + { STB0899_OFF0_TP_BUFFER51 , STB0899_BASE_TP_BUFFER51 , 0x0000c0c1 }, /* TPBUFFER51 */ > + { STB0899_OFF0_TP_BUFFER52 , STB0899_BASE_TP_BUFFER52 , 0x0000c1c0 }, /* TPBUFFER52 */ > + { STB0899_OFF0_TP_BUFFER53 , STB0899_BASE_TP_BUFFER53 , 0x0000c0c1 }, /* TPBUFFER53 */ > + { STB0899_OFF0_TP_BUFFER54 , STB0899_BASE_TP_BUFFER54 , 0x0000c1c1 }, /* TPBUFFER54 */ > + { STB0899_OFF0_TP_BUFFER55 , STB0899_BASE_TP_BUFFER55 , 0x0000c1c1 }, /* TPBUFFER55 */ > + { STB0899_OFF0_TP_BUFFER56 , STB0899_BASE_TP_BUFFER56 , 0x0000c1c1 }, /* TPBUFFER56 */ > + { STB0899_OFF0_TP_BUFFER57 , STB0899_BASE_TP_BUFFER57 , 0x0000c1c1 }, /* TPBUFFER57 */ > + { STB0899_OFF0_TP_BUFFER58 , STB0899_BASE_TP_BUFFER58 , 0x0000c1c1 }, /* TPBUFFER58 */ > + { STB0899_OFF0_TP_BUFFER59 , STB0899_BASE_TP_BUFFER59 , 0x0000c1c1 }, /* TPBUFFER59 */ > + { STB0899_OFF0_TP_BUFFER60 , STB0899_BASE_TP_BUFFER60 , 0x0000c1c1 }, /* TPBUFFER60 */ > + { STB0899_OFF0_TP_BUFFER61 , STB0899_BASE_TP_BUFFER61 , 0x0000c1c1 }, /* TPBUFFER61 */ > + { STB0899_OFF0_TP_BUFFER62 , STB0899_BASE_TP_BUFFER62 , 0x0000c1c1 }, /* TPBUFFER62 */ > + { STB0899_OFF0_TP_BUFFER63 , STB0899_BASE_TP_BUFFER63 , 0x0000c1c0 }, /* TPBUFFER63 */ > + { STB0899_OFF0_RESET_CNTRL , STB0899_BASE_RESET_CNTRL , 0x00000001 }, /* RESETCNTRL */ > + { STB0899_OFF0_ACM_ENABLE , STB0899_BASE_ACM_ENABLE , 0x00005654 }, /* ACMENABLE */ > + { STB0899_OFF0_DESCR_CNTRL , STB0899_BASE_DESCR_CNTRL , 0x00000000 }, /* DESCRCNTRL */ > + { STB0899_OFF0_CSM_CNTRL1 , STB0899_BASE_CSM_CNTRL1 , 0x00020019 }, /* CSMCNTRL1 */ > + { STB0899_OFF0_CSM_CNTRL2 , STB0899_BASE_CSM_CNTRL2 , 0x004b3237 }, /* CSMCNTRL2 */ > + { STB0899_OFF0_CSM_CNTRL3 , STB0899_BASE_CSM_CNTRL3 , 0x0003dd17 }, /* CSMCNTRL3 */ > + { STB0899_OFF0_CSM_CNTRL4 , STB0899_BASE_CSM_CNTRL4 , 0x00008008 }, /* CSMCNTRL4 */ > + { STB0899_OFF0_UWP_CNTRL1 , STB0899_BASE_UWP_CNTRL1 , 0x002a3106 }, /* UWPCNTRL1 */ > + { STB0899_OFF0_UWP_CNTRL2 , STB0899_BASE_UWP_CNTRL2 , 0x0006140a }, /* UWPCNTRL2 */ > + { STB0899_OFF0_UWP_STAT1 , STB0899_BASE_UWP_STAT1 , 0x00008000 }, /* UWPSTAT1 */ > + { STB0899_OFF0_UWP_STAT2 , STB0899_BASE_UWP_STAT2 , 0x00000000 }, /* UWPSTAT2 */ > + { STB0899_OFF0_DMD_STAT2 , STB0899_BASE_DMD_STAT2 , 0x00000000 }, /* DMDSTAT2 */ > + { STB0899_OFF0_FREQ_ADJ_SCALE , STB0899_BASE_FREQ_ADJ_SCALE , 0x00000471 }, /* FREQADJSCALE */ > + { STB0899_OFF0_UWP_CNTRL3 , STB0899_BASE_UWP_CNTRL3 , 0x017b0465 }, /* UWPCNTRL3 */ > + { STB0899_OFF0_SYM_CLK_SEL , STB0899_BASE_SYM_CLK_SEL , 0x00000002 }, /* SYMCLKSEL */ > + { STB0899_OFF0_SOF_SRCH_TO , STB0899_BASE_SOF_SRCH_TO , 0x00196464 }, /* SOFSRCHTO */ > + { STB0899_OFF0_ACQ_CNTRL1 , STB0899_BASE_ACQ_CNTRL1 , 0x00000603 }, /* ACQCNTRL1 */ > + { STB0899_OFF0_ACQ_CNTRL2 , STB0899_BASE_ACQ_CNTRL2 , 0x02046666 }, /* ACQCNTRL2 */ > + { STB0899_OFF0_ACQ_CNTRL3 , STB0899_BASE_ACQ_CNTRL3 , 0x10046583 }, /* ACQCNTRL3 */ > + { STB0899_OFF0_FE_SETTLE , STB0899_BASE_FE_SETTLE , 0x00010404 }, /* FESETTLE */ > + { STB0899_OFF0_AC_DWELL , STB0899_BASE_AC_DWELL , 0x0002aa8a }, /* ACDWELL */ > + { STB0899_OFF0_ACQUIRE_TRIG , STB0899_BASE_ACQUIRE_TRIG , 0x00000000 }, /* ACQUIRETRIG */ > + { STB0899_OFF0_LOCK_LOST , STB0899_BASE_LOCK_LOST , 0x00000001 }, /* LOCKLOST */ > + { STB0899_OFF0_ACQ_STAT1 , STB0899_BASE_ACQ_STAT1 , 0x00000500 }, /* ACQSTAT1 */ > + { STB0899_OFF0_ACQ_TIMEOUT , STB0899_BASE_ACQ_TIMEOUT , 0x0028a0a0 }, /* ACQTIMEOUT */ > + { STB0899_OFF0_ACQ_TIME , STB0899_BASE_ACQ_TIME , 0x00000000 }, /* ACQTIME */ > + { STB0899_OFF0_FINAL_AGC_CNTRL , STB0899_BASE_FINAL_AGC_CNTRL , 0x00800c17 }, /* FINALAGCCNTRL*/ > + { STB0899_OFF0_FINAL_AGC_GAIN , STB0899_BASE_FINAL_AGC_GAIN , 0x00000000 }, /* FINALAGCCGAIN*/ > + { STB0899_OFF0_EQUALIZER_INIT , STB0899_BASE_EQUALIZER_INIT , 0x00000000 }, /* EQUILIZERINIT*/ > + { STB0899_OFF0_EQ_CNTRL , STB0899_BASE_EQ_CNTRL , 0x00054802 }, /* EQCNTL */ > + { STB0899_OFF0_EQ_I_INIT_COEFF_0, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF0 */ > + { STB0899_OFF1_EQ_I_INIT_COEFF_1, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF1 */ > + { STB0899_OFF2_EQ_I_INIT_COEFF_2, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF2 */ > + { STB0899_OFF3_EQ_I_INIT_COEFF_3, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF3 */ > + { STB0899_OFF4_EQ_I_INIT_COEFF_4, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF4 */ > + { STB0899_OFF5_EQ_I_INIT_COEFF_5, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000400 }, /* EQIINITCOEFF5 */ > + { STB0899_OFF6_EQ_I_INIT_COEFF_6, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF6 */ > + { STB0899_OFF7_EQ_I_INIT_COEFF_7, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF7 */ > + { STB0899_OFF8_EQ_I_INIT_COEFF_8, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF8 */ > + { STB0899_OFF9_EQ_I_INIT_COEFF_9, STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF9 */ > + { STB0899_OFFa_EQ_I_INIT_COEFF_10,STB0899_BASE_EQ_I_INIT_COEFF_N, 0x00000000 }, /* EQIINITCOEFF10*/ > + { STB0899_OFF0_EQ_Q_INIT_COEFF_0, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF0 */ > + { STB0899_OFF1_EQ_Q_INIT_COEFF_1, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF1 */ > + { STB0899_OFF2_EQ_Q_INIT_COEFF_2, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF2 */ > + { STB0899_OFF3_EQ_Q_INIT_COEFF_3, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF3 */ > + { STB0899_OFF4_EQ_Q_INIT_COEFF_4, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF4 */ > + { STB0899_OFF5_EQ_Q_INIT_COEFF_5, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF5 */ > + { STB0899_OFF6_EQ_Q_INIT_COEFF_6, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF6 */ > + { STB0899_OFF7_EQ_Q_INIT_COEFF_7, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF7 */ > + { STB0899_OFF8_EQ_Q_INIT_COEFF_8, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF8 */ > + { STB0899_OFF9_EQ_Q_INIT_COEFF_9, STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF9 */ > + { STB0899_OFFa_EQ_Q_INIT_COEFF_10,STB0899_BASE_EQ_Q_INIT_COEFF_N, 0x00000000 }, /* EQQINITCOEFF10*/ > + { STB0899_OFF0_EQ_I_OUT_COEFF_0 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT0 */ > + { STB0899_OFF1_EQ_I_OUT_COEFF_1 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT1 */ > + { STB0899_OFF2_EQ_I_OUT_COEFF_2 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT2 */ > + { STB0899_OFF3_EQ_I_OUT_COEFF_3 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT3 */ > + { STB0899_OFF4_EQ_I_OUT_COEFF_4 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT4 */ > + { STB0899_OFF5_EQ_I_OUT_COEFF_5 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT5 */ > + { STB0899_OFF6_EQ_I_OUT_COEFF_6 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT6 */ > + { STB0899_OFF7_EQ_I_OUT_COEFF_7 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT7 */ > + { STB0899_OFF8_EQ_I_OUT_COEFF_8 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT8 */ > + { STB0899_OFF9_EQ_I_OUT_COEFF_9 , STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT9 */ > + { STB0899_OFFa_EQ_I_OUT_COEFF_10,STB0899_BASE_EQ_I_OUT_COEFF_N , 0x00000000 }, /* EQICOEFFSOUT10*/ > + { STB0899_OFF0_EQ_Q_OUT_COEFF_0 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT0 */ > + { STB0899_OFF1_EQ_Q_OUT_COEFF_1 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT1 */ > + { STB0899_OFF2_EQ_Q_OUT_COEFF_2 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT2 */ > + { STB0899_OFF3_EQ_Q_OUT_COEFF_3 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT3 */ > + { STB0899_OFF4_EQ_Q_OUT_COEFF_4 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT4 */ > + { STB0899_OFF5_EQ_Q_OUT_COEFF_5 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT5 */ > + { STB0899_OFF6_EQ_Q_OUT_COEFF_6 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT6 */ > + { STB0899_OFF7_EQ_Q_OUT_COEFF_7 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT7 */ > + { STB0899_OFF8_EQ_Q_OUT_COEFF_8 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT8 */ > + { STB0899_OFF9_EQ_Q_OUT_COEFF_9 , STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT9 */ > + { STB0899_OFFa_EQ_Q_OUT_COEFF_10, STB0899_BASE_EQ_Q_OUT_COEFF_N , 0x00000000 }, /* EQQCOEFFSOUT10*/ > + { 0xffff , 0xffffffff , 0xffffffff }, > +}; > + > +static const struct stb0899_s1_reg tt3200_stb0899_s1_init_3[] = { > + { STB0899_DEMOD , 0x00 }, > + { STB0899_RCOMPC , 0xc9 }, > + { STB0899_AGC1CN , 0x41 }, > + { STB0899_AGC1REF , 0x10 }, > + { STB0899_RTC , 0x7a }, > + { STB0899_TMGCFG , 0x4e }, > + { STB0899_AGC2REF , 0x34 }, > + { STB0899_TLSR , 0x84 }, > + { STB0899_CFD , 0xc7 }, > + { STB0899_ACLC , 0x87 }, > + { STB0899_BCLC , 0x94 }, > + { STB0899_EQON , 0x41 }, > + { STB0899_LDT , 0xdd }, > + { STB0899_LDT2 , 0xc9 }, > + { STB0899_EQUALREF , 0xb4 }, > + { STB0899_TMGRAMP , 0x10 }, > + { STB0899_TMGTHD , 0x30 }, > + { STB0899_IDCCOMP , 0xfb }, > + { STB0899_QDCCOMP , 0x03 }, > + { STB0899_POWERI , 0x3b }, > + { STB0899_POWERQ , 0x3d }, > + { STB0899_RCOMP , 0x81 }, > + { STB0899_AGCIQIN , 0x80 }, > + { STB0899_AGC2I1 , 0x04 }, > + { STB0899_AGC2I2 , 0xf5 }, > + { STB0899_TLIR , 0x25 }, > + { STB0899_RTF , 0x80 }, > + { STB0899_DSTATUS , 0x00 }, > + { STB0899_LDI , 0xca }, > + { STB0899_CFRM , 0xf1 }, > + { STB0899_CFRL , 0xf3 }, > + { STB0899_NIRM , 0x2a }, > + { STB0899_NIRL , 0x05 }, > + { STB0899_ISYMB , 0x17 }, > + { STB0899_QSYMB , 0xfa }, > + { STB0899_SFRH , 0x2f }, > + { STB0899_SFRM , 0x68 }, > + { STB0899_SFRL , 0x40 }, > + { STB0899_SFRUPH , 0x2f }, > + { STB0899_SFRUPM , 0x68 }, > + { STB0899_SFRUPL , 0x40 }, > + { STB0899_EQUAI1 , 0xfd }, > + { STB0899_EQUAQ1 , 0x04 }, > + { STB0899_EQUAI2 , 0x0f }, > + { STB0899_EQUAQ2 , 0xff }, > + { STB0899_EQUAI3 , 0xdf }, > + { STB0899_EQUAQ3 , 0xfa }, > + { STB0899_EQUAI4 , 0x37 }, > + { STB0899_EQUAQ4 , 0x0d }, > + { STB0899_EQUAI5 , 0xbd }, > + { STB0899_EQUAQ5 , 0xf7 }, > + { STB0899_DSTATUS2 , 0x00 }, > + { STB0899_VSTATUS , 0x00 }, > + { STB0899_VERROR , 0xff }, > + { STB0899_IQSWAP , 0x2a }, > + { STB0899_ECNT1M , 0x00 }, > + { STB0899_ECNT1L , 0x00 }, > + { STB0899_ECNT2M , 0x00 }, > + { STB0899_ECNT2L , 0x00 }, > + { STB0899_ECNT3M , 0x00 }, > + { STB0899_ECNT3L , 0x00 }, > + { STB0899_FECAUTO1 , 0x06 }, > + { STB0899_FECM , 0x01 }, > + { STB0899_VTH12 , 0xf0 }, > + { STB0899_VTH23 , 0xa0 }, > + { STB0899_VTH34 , 0x78 }, > + { STB0899_VTH56 , 0x4e }, > + { STB0899_VTH67 , 0x48 }, > + { STB0899_VTH78 , 0x38 }, > + { STB0899_PRVIT , 0xff }, > + { STB0899_VITSYNC , 0x19 }, > + { STB0899_RSULC , 0xb1 }, // DVB = 0xb1, DSS = 0xa1 > + { STB0899_TSULC , 0x42 }, > + { STB0899_RSLLC , 0x40 }, > + { STB0899_TSLPL , 0x12 }, > + { STB0899_TSCFGH , 0x0c }, //0x0c > + { STB0899_TSCFGM , 0x00 }, > + { STB0899_TSCFGL , 0x0c }, //0x0c > + { STB0899_TSOUT , 0x07 }, > + { STB0899_RSSYNCDEL , 0x00 }, > + { STB0899_TSINHDELH , 0x02 }, > + { STB0899_TSINHDELM , 0x00 }, > + { STB0899_TSINHDELL , 0x00 }, > + { STB0899_TSLLSTKM , 0x00 }, > + { STB0899_TSLLSTKL , 0x00 }, > + { STB0899_TSULSTKM , 0x00 }, > + { STB0899_TSULSTKL , 0xab }, > + { STB0899_PCKLENUL , 0x00 }, > + { STB0899_PCKLENLL , 0xcc }, > + { STB0899_RSPCKLEN , 0xcc }, > + { STB0899_TSSTATUS , 0x80 }, > + { STB0899_ERRCTRL1 , 0xb6 }, > + { STB0899_ERRCTRL2 , 0x96 }, > + { STB0899_ERRCTRL3 , 0x89 }, > + { STB0899_DMONMSK1 , 0x27 }, > + { STB0899_DMONMSK0 , 0x03 }, > + { STB0899_DEMAPVIT , 0x5c }, > + { STB0899_PLPARM , 0x1f }, > + { STB0899_PDELCTRL , 0x48 }, > + { STB0899_PDELCTRL2 , 0x00 }, > + { STB0899_BBHCTRL1 , 0x00 }, > + { STB0899_BBHCTRL2 , 0x00 }, > + { STB0899_HYSTTHRESH , 0x77 }, > + { STB0899_MATCSTM , 0x00 }, > + { STB0899_MATCSTL , 0x00 }, > + { STB0899_UPLCSTM , 0x00 }, > + { STB0899_UPLCSTL , 0x00 }, > + { STB0899_DFLCSTM , 0x00 }, > + { STB0899_DFLCSTL , 0x00 }, > + { STB0899_SYNCCST , 0x00 }, > + { STB0899_SYNCDCSTM , 0x00 }, > + { STB0899_SYNCDCSTL , 0x00 }, > + { STB0899_ISI_ENTRY , 0x00 }, > + { STB0899_ISI_BIT_EN , 0x00 }, > + { STB0899_MATSTRM , 0x00 }, > + { STB0899_MATSTRL , 0x00 }, > + { STB0899_UPLSTRM , 0x00 }, > + { STB0899_UPLSTRL , 0x00 }, > + { STB0899_DFLSTRM , 0x00 }, > + { STB0899_DFLSTRL , 0x00 }, > + { STB0899_SYNCSTR , 0x00 }, > + { STB0899_SYNCDSTRM , 0x00 }, > + { STB0899_SYNCDSTRL , 0x00 }, > + { STB0899_CFGPDELSTATUS1 , 0x10 }, > + { STB0899_CFGPDELSTATUS2 , 0x00 }, > + { STB0899_BBFERRORM , 0x00 }, > + { STB0899_BBFERRORL , 0x00 }, > + { STB0899_UPKTERRORM , 0x00 }, > + { STB0899_UPKTERRORL , 0x00 }, > + { 0xffff , 0xff }, > +}; > + > +static const struct stb0899_s2_reg tt3200_stb0899_s2_init_4[] = { > + { STB0899_OFF0_BLOCK_LNGTH , STB0899_BASE_BLOCK_LNGTH , 0x00000008 }, /* BLOCKLNGTH */ > + { STB0899_OFF0_ROW_STR , STB0899_BASE_ROW_STR , 0x000000b4 }, /* ROWSTR */ > + { STB0899_OFF0_BN_END_ADDR , STB0899_BASE_BN_END_ADDR , 0x000004b5 }, /* BNANDADDR */ > + { STB0899_OFF0_CN_END_ADDR , STB0899_BASE_CN_END_ADDR , 0x00000b4b }, /* CNANDADDR */ > + { STB0899_OFF0_INFO_LENGTH , STB0899_BASE_INFO_LENGTH , 0x00000078 }, /* INFOLENGTH */ > + { STB0899_OFF0_BOT_ADDR , STB0899_BASE_BOT_ADDR , 0x000001e0 }, /* BOT_ADDR */ > + { STB0899_OFF0_BCH_BLK_LN , STB0899_BASE_BCH_BLK_LN , 0x0000a8c0 }, /* BCHBLKLN */ > + { STB0899_OFF0_BCH_T , STB0899_BASE_BCH_T , 0x0000000c }, /* BCHT */ > + { STB0899_OFF0_CNFG_MODE , STB0899_BASE_CNFG_MODE , 0x00000001 }, /* CNFGMODE */ > + { STB0899_OFF0_LDPC_STAT , STB0899_BASE_LDPC_STAT , 0x0000000d }, /* LDPCSTAT */ > + { STB0899_OFF0_ITER_SCALE , STB0899_BASE_ITER_SCALE , 0x00000040 }, /* ITERSCALE */ > + { STB0899_OFF0_INPUT_MODE , STB0899_BASE_INPUT_MODE , 0x00000000 }, /* INPUTMODE */ > + { STB0899_OFF0_LDPCDECRST , STB0899_BASE_LDPCDECRST , 0x00000000 }, /* LDPCDECRST */ > + { STB0899_OFF0_CLK_PER_BYTE_RW , STB0899_BASE_CLK_PER_BYTE_RW , 0x00000008 }, /* CLKPERBYTE */ > + { STB0899_OFF0_BCH_ERRORS , STB0899_BASE_BCH_ERRORS , 0x00000000 }, /* BCHERRORS */ > + { STB0899_OFF0_LDPC_ERRORS , STB0899_BASE_LDPC_ERRORS , 0x00000000 }, /* LDPCERRORS */ > + { STB0899_OFF0_BCH_MODE , STB0899_BASE_BCH_MODE , 0x00000000 }, /* BCHMODE */ > + { STB0899_OFF0_ERR_ACC_PER , STB0899_BASE_ERR_ACC_PER , 0x00000008 }, /* ERRACCPER */ > + { STB0899_OFF0_BCH_ERR_ACC , STB0899_BASE_BCH_ERR_ACC , 0x00000000 }, /* BCHERRACC */ > + { STB0899_OFF0_FEC_TP_SEL , STB0899_BASE_FEC_TP_SEL , 0x00000000 }, /* FECTPSEL */ > + { 0xffff , 0xffffffff , 0xffffffff }, > +}; > + > +static const struct stb0899_s1_reg tt3200_stb0899_s1_init_5[] = { > + { STB0899_TSTCK , 0x00 }, > + { STB0899_TSTRES , 0x00 }, > + { STB0899_TSTOUT , 0x00 }, > + { STB0899_TSTIN , 0x00 }, > + { STB0899_TSTSYS , 0x00 }, > + { STB0899_TSTCHIP , 0x00 }, > + { STB0899_TSTFREE , 0x00 }, > + { STB0899_TSTI2C , 0x00 }, > + { STB0899_BITSPEEDM , 0x00 }, > + { STB0899_BITSPEEDL , 0x00 }, > + { STB0899_TBUSBIT , 0x00 }, > + { STB0899_TSTDIS , 0x00 }, > + { STB0899_TSTDISRX , 0x00 }, > + { STB0899_TSTJETON , 0x00 }, > + { STB0899_TSTDCADJ , 0x00 }, > + { STB0899_TSTAGC1 , 0x00 }, > + { STB0899_TSTAGC1N , 0x00 }, > + { STB0899_TSTPOLYPH , 0x00 }, > + { STB0899_TSTR , 0x00 }, > + { STB0899_TSTAGC2 , 0x00 }, > + { STB0899_TSTCTL1 , 0x00 }, > + { STB0899_TSTCTL2 , 0x00 }, > + { STB0899_TSTCTL3 , 0x00 }, > + { STB0899_TSTDEMAP , 0x00 }, > + { STB0899_TSTDEMAP2 , 0x00 }, > + { STB0899_TSTDEMMON , 0x00 }, > + { STB0899_TSTRATE , 0x00 }, > + { STB0899_TSTSELOUT , 0x00 }, > + { STB0899_TSYNC , 0x00 }, > + { STB0899_TSTERR , 0x00 }, > + { STB0899_TSTRAM1 , 0x00 }, > + { STB0899_TSTVSELOUT , 0x00 }, > + { STB0899_TSTFORCEIN , 0x00 }, > + { STB0899_TSTRS1 , 0x00 }, > + { STB0899_TSTRS2 , 0x00 }, > + { STB0899_TSTRS3 , 0x00 }, > + { STB0899_GHOSTREG , 0x81 }, > + { 0xffff , 0xff }, > +}; > + > +#define KNC1_DVBS2_ESNO_AVE 3 > +#define KNC1_DVBS2_ESNO_QUANT 32 > +#define KNC1_DVBS2_AVFRAMES_COARSE 10 > +#define KNC1_DVBS2_AVFRAMES_FINE 20 > +#define KNC1_DVBS2_MISS_THRESHOLD 6 > +#define KNC1_DVBS2_UWP_THRESHOLD_ACQ 1125 > +#define KNC1_DVBS2_UWP_THRESHOLD_TRACK 758 > +#define KNC1_DVBS2_UWP_THRESHOLD_SOF 1350 > +#define KNC1_DVBS2_SOF_SEARCH_TIMEOUT 1664100 > + > +#define KNC1_DVBS2_BTR_NCO_BITS 28 > +#define KNC1_DVBS2_BTR_GAIN_SHIFT_OFFSET 15 > +#define KNC1_DVBS2_CRL_NCO_BITS 30 > +#define KNC1_DVBS2_LDPC_MAX_ITER 70 > + > +static struct stb0899_config tt3200_config = { > + .init_dev = tt3200_stb0899_s1_init_1, > + .init_s2_demod = tt3200_stb0899_s2_init_2, > + .init_s1_demod = tt3200_stb0899_s1_init_3, > + .init_s2_fec = tt3200_stb0899_s2_init_4, > + .init_tst = tt3200_stb0899_s1_init_5, > + > + .demod_address = 0x68, > +// .ts_output_mode = STB0899_OUT_PARALLEL, /* types = SERIAL/PARALLEL */ > + .block_sync_mode = STB0899_SYNC_FORCED, /* DSS, SYNC_FORCED/UNSYNCED */ > +// .ts_pfbit_toggle = STB0899_MPEG_NORMAL, /* DirecTV, MPEG toggling seq */ > + > + .xtal_freq = 27000000, > + .inversion = 1, > + > + .esno_ave = KNC1_DVBS2_ESNO_AVE, > + .esno_quant = KNC1_DVBS2_ESNO_QUANT, > + .avframes_coarse = KNC1_DVBS2_AVFRAMES_COARSE, > + .avframes_fine = KNC1_DVBS2_AVFRAMES_FINE, > + .miss_threshold = KNC1_DVBS2_MISS_THRESHOLD, > + .uwp_threshold_acq = KNC1_DVBS2_UWP_THRESHOLD_ACQ, > + .uwp_threshold_track = KNC1_DVBS2_UWP_THRESHOLD_TRACK, > + .uwp_threshold_sof = KNC1_DVBS2_UWP_THRESHOLD_SOF, > + .sof_search_timeout = KNC1_DVBS2_SOF_SEARCH_TIMEOUT, > + > + .btr_nco_bits = KNC1_DVBS2_BTR_NCO_BITS, > + .btr_gain_shift_offset = KNC1_DVBS2_BTR_GAIN_SHIFT_OFFSET, > + .crl_nco_bits = KNC1_DVBS2_CRL_NCO_BITS, > + .ldpc_max_iter = KNC1_DVBS2_LDPC_MAX_ITER, > +}; > + > +struct stb6100_config tt3200_stb6100_config = { > + .tuner_address = 0x60 > +}; > + > + > > static void frontend_init(struct budget_ci *budget_ci) > { > @@ -1156,6 +1682,32 @@ static void frontend_init(struct budget_ > } > > break; > + > + case 0x1019: // TT S2-3200 PCI > + budget_ci->budget.dvb_frontend = dvb_attach(stb0899_attach, &tt3200_config, &budget_ci->budget.i2c_adap); > + if (budget_ci->budget.dvb_frontend) { > + if (dvb_attach(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) { > + > + tt3200_config.tuner_set_frequency = budget_ci->budget.dvb_frontend->ops.tuner_ops.set_frequency; > + tt3200_config.tuner_get_frequency = budget_ci->budget.dvb_frontend->ops.tuner_ops.get_frequency; > + tt3200_config.tuner_set_bandwidth = budget_ci->budget.dvb_frontend->ops.tuner_ops.set_bandwidth; > + tt3200_config.tuner_get_bandwidth = budget_ci->budget.dvb_frontend->ops.tuner_ops.get_bandwidth; > + > + if (dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, LNBP21_LLC, 0) == NULL) { > + printk("%s: No LNBP21 found!\n", __FUNCTION__); > + if (budget_ci->budget.dvb_frontend->ops.tuner_ops.release) > + budget_ci->budget.dvb_frontend->ops.tuner_ops.release(budget_ci->budget.dvb_frontend); > + dvb_frontend_detach(budget_ci->budget.dvb_frontend); > + budget_ci->budget.dvb_frontend = NULL; > + } > + } else { > + printk("%s: No STB6100 found!\n", __FUNCTION__); > + dvb_frontend_detach(budget_ci->budget.dvb_frontend); > + budget_ci->budget.dvb_frontend = NULL; > + } > + } > + break; > + > } > > if (budget_ci->budget.dvb_frontend == NULL) { > @@ -1244,6 +1796,7 @@ MAKE_BUDGET_INFO(ttbci, "TT-Budget/WinTV > MAKE_BUDGET_INFO(ttbt2, "TT-Budget/WinTV-NOVA-T PCI", BUDGET_TT); > MAKE_BUDGET_INFO(ttbtci, "TT-Budget-T-CI PCI", BUDGET_TT); > MAKE_BUDGET_INFO(ttbcci, "TT-Budget-C-CI PCI", BUDGET_TT); > +MAKE_BUDGET_INFO(tt3200, "TT-Budget S2-3200 PCI", BUDGET_TT); > > static struct pci_device_id pci_tbl[] = { > MAKE_EXTENSION_PCI(ttbci, 0x13c2, 0x100c), > @@ -1252,6 +1805,7 @@ static struct pci_device_id pci_tbl[] = > MAKE_EXTENSION_PCI(ttbt2, 0x13c2, 0x1011), > MAKE_EXTENSION_PCI(ttbtci, 0x13c2, 0x1012), > MAKE_EXTENSION_PCI(ttbs2, 0x13c2, 0x1017), > + MAKE_EXTENSION_PCI(tt3200, 0x13c2, 0x1019), > { > .vendor = 0, > } > diff -urNp v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget.h v4l-dvb/linux/drivers/media/dvb/ttpci/budget.h > --- v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget.h 2007-02-24 13:07:53.000000000 +0100 > +++ v4l-dvb/linux/drivers/media/dvb/ttpci/budget.h 2007-05-06 20:18:22.000000000 +0200 > @@ -108,6 +108,7 @@ static struct saa7146_pci_extension_data > #define BUDGET_KNC1TP 13 > #define BUDGET_TVSTAR 14 > #define BUDGET_KNC1S2 15 > +#define BUDGET_TT3200 16 > > #define BUDGET_VIDEO_PORTA 0 > #define BUDGET_VIDEO_PORTB 1 > > > ------------------------------------------------------------------------ > > _______________________________________________ > linux-dvb mailing list > linux-dvb@xxxxxxxxxxx > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb