Re: DVB-S streams with TT3200

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux