[5-11] update dvb frontend drivers
PATCH 1/1 [5-11] update dvb frontend drivers
Hello,
this patch updates the following dvb frontend drivers:
- alps_bsrv2.c
- alps_tdmb7.c
- at76c651.c
- grundig_29504-401.c
- grundig_29504-491.c
- nxt6000.c
- ves1820.c
Really improved has been the following driver:
- stv0299.c
Please review and apply.
Thanks
Michael Hunold.
drivers/media/dvb/frontends/Kconfig +14 -4
@@ -5,10 +5,9 @@ tristate "STV0299 based DVB-S frontend (QPSK)" depends on DVB_CORE help - A DVB-S tuner module. - - Say Y when you want to support frontend based on this - demodulator. + The stv0299 by ST is used in many DVB-S tuner modules, + say Y when you want to support frontends based on this + DVB-S demodulator. Some examples are the Alps BSRU6, the Philips SU1278 and the LG TDQB-S00x.
@@ -63,6 +62,17 @@ DVB adapter simply enable all supported frontends, the right one will get autodetected. +config DVB_CX24110 + tristate "Frontends with Connexant CX24110 demodulator (QPSK)" + depends on DVB_CORE + help + The CX24110 Demodulator is used in some DVB-S frontends. + Say Y if you want support for this chip in your kernel. + + If you don't know what tuner module is soldered on your + DVB adapter simply enable all supported frontends, the + right one will get autodetected. + config DVB_GRUNDIG_29504_491 tristate "Grundig 29504-491 (QPSK)" depends on DVB_CORE
drivers/media/dvb/frontends/Makefile +1 -0
@@ -9,6 +9,7 @@ obj-$(CONFIG_DVB_ALPS_TDLB7) += alps_tdlb7.o obj-$(CONFIG_DVB_ALPS_TDMB7) += alps_tdmb7.o obj-$(CONFIG_DVB_ATMEL_AT76C651) += at76c651.o +obj-$(CONFIG_DVB_CX24110) += cx24110.o obj-$(CONFIG_DVB_GRUNDIG_29504_491) += grundig_29504-491.o obj-$(CONFIG_DVB_GRUNDIG_29504_401) += grundig_29504-401.o obj-$(CONFIG_DVB_VES1820) += ves1820.o
drivers/media/dvb/frontends/alps_bsrv2.c +11 -7
@@ -20,8 +20,12 @@*/ +#include <asm/errno.h> +#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> +#include <linux/string.h> +#include <linux/slab.h> #include "dvb_frontend.h"
@@ -211,7 +215,7 @@u32 BDRI ;u32 tmp; -dprintk ("%s: srate == %d\n" , __FUNCTION__, srate); +dprintk ("%s: srate == %ud\n" , __FUNCTION__, (unsigned int ) srate);if (srate >90100000UL /2 ) srate =90100000UL /2 ;
@@ -257,9 +261,9 @@BDRI = ( ((FIN <<8 ) / ((srate << (FNR >>1 )) >>2 )) +1 ) >>1 ;dprintk ("FNR= %d\n" ,FNR ); -dprintk ("ratio= %08x\n" , ratio); -dprintk ("BDR= %08x\n" ,BDR ); -dprintk ("BDRI= %02x\n" ,BDRI ); +dprintk ("ratio= %08x\n" , (unsigned int ) ratio); +dprintk ("BDR= %08x\n" , (unsigned int )BDR ); +dprintk ("BDRI= %02x\n" , (unsigned int )BDRI );if (BDRI >0xff )BDRI =0xff ;
@@ -387,12 +391,12 @@case FE_GET_FRONTEND : {struct dvb_frontend_parameters *p = arg; -s32 afc; +int afc; afc = ((int )((char )(ves1893_readreg (i2c,0x0a ) <<1 )))/2 ; - afc = (afc * (int )(p->u.qpsk.symbol_rate/8 ))/16 ; + afc = (afc * (int )(p->u.qpsk.symbol_rate/1000 /8 ))/16 ; - p->frequency += afc; + p->frequency -= afc; p->inversion = (ves1893_readreg (i2c,0x0f ) &2 ) ?INVERSION_ON :INVERSION_OFF ; p->u.qpsk.fec_inner =ves1893_get_fec (i2c);
drivers/media/dvb/frontends/alps_tdmb7.c +11 -14
@@ -20,10 +20,15 @@*/ +#include <asm/errno.h> +#include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> +#include <linux/string.h> +#include <linux/slab.h> #include "dvb_frontend.h" +#include "dvb_functions.h" static int debug =0 ;
@@ -52,14 +57,6 @@static -inline void ddelay (int timeout) -{ - current->state=TASK_INTERRUPTIBLE ; -schedule_timeout (timeout); -} - - -static u8 init_tab [] = {0x04 ,0x10 ,0x05 ,0x09 ,
@@ -154,7 +151,7 @@ freq < 470000000 ? 0x42 : freq < 862000000 ? 0x41 : 0x81 };#endif -dprintk ("%s: freq == %i, div == %i\n" , __FUNCTION__, freq, div); +dprintk ("%s: freq == %i, div == %i\n" , __FUNCTION__, (int ) freq, (int ) div);return pll_write (i2c, buf); }
@@ -170,7 +167,7 @@cx22700_writereg (i2c,0x00 ,0x02 );/* soft reset */ cx22700_writereg (i2c,0x00 ,0x00 ); -ddelay (HZ /100 ); +dvb_delay (HZ /100 );for (i=0 ; i<sizeof (init_tab); i+=2 )cx22700_writereg (i2c, init_tab[i], init_tab[i+1 ]);
@@ -355,7 +352,7 @@ }case FE_READ_BER : - *((uint32_t *) arg) =cx22700_readreg (i2c,0x0c ) &0x7f ; + *((u32 *) arg) =cx22700_readreg (i2c,0x0c ) &0x7f ;cx22700_writereg (i2c,0x0c ,0x00 );break ;
@@ -363,18 +360,18 @@ {u16 rs_ber = (cx22700_readreg (i2c,0x0d ) <<9 ) | (cx22700_readreg (i2c,0x0e ) <<1 ); - *((uint16_t *) arg) = ~rs_ber; + *((u16 *) arg) = ~rs_ber;break ; }case FE_READ_SNR : {u16 rs_ber = (cx22700_readreg (i2c,0x0d ) <<9 ) | (cx22700_readreg (i2c,0x0e ) <<1 ); - *((uint16_t *) arg) = ~rs_ber; + *((u16 *) arg) = ~rs_ber;break ; }case FE_READ_UNCORRECTED_BLOCKS : - *((uint32_t *) arg) =cx22700_readreg (i2c,0x0f ); + *((u32 *) arg) =cx22700_readreg (i2c,0x0f );cx22700_writereg (i2c,0x0f ,0x00 );break ;
drivers/media/dvb/frontends/at76c651.c +8 -6
@@ -22,11 +22,12 @@* */ -#include <linux/module.h> +#include <asm/errno.h> #include <linux/init.h> -#include <linux/delay.h> +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/string.h> #include <linux/slab.h> -#include <linux/i2c.h> #if defined(__powerpc__)#include <asm/bitops.h>
@@ -34,6 +35,7 @@#include "dvb_frontend.h" #include "dvb_i2c.h" +#include "dvb_functions.h" static int debug =0 ;
@@ -67,8 +69,8 @@FE_CAN_FEC_4_5 |FE_CAN_FEC_5_6 |FE_CAN_FEC_6_7 |FE_CAN_FEC_7_8 |FE_CAN_FEC_8_9 |FE_CAN_FEC_AUTO |FE_CAN_QAM_16 |FE_CAN_QAM_32 |FE_CAN_QAM_64 |FE_CAN_QAM_128 | - FE_CAN_QAM_256, -/* FE_CAN_QAM_512 | FE_CAN_QAM_1024 | */ +FE_CAN_QAM_256 /* | FE_CAN_QAM_512 | FE_CAN_QAM_1024 */ | + FE_CAN_RECOVER | FE_CAN_CLEAN_SETUP | FE_CAN_MUTE_TS };
@@ -103,7 +105,7 @@"(reg == 0x%02x, val == 0x%02x, ret == %i)\n" , __FUNCTION__, reg, data, ret); -mdelay (10 ); +dvb_delay (10 );return (ret !=1 ) ? -EREMOTEIO :0 ;
drivers/media/dvb/frontends/grundig_29504-401.c +15 -5
@@ -22,10 +22,15 @@*/ -#include <linux/module.h> +#include <asm/errno.h> #include <linux/init.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/string.h> +#include <linux/slab.h> #include "dvb_frontend.h" +#include "dvb_functions.h" static int debug =0 ;
@@ -97,22 +102,27 @@/** * set up the downconverter frequency divisor for a * reference clock comparision frequency of 166666 Hz. -* frequency offset is 36000000 Hz. +* frequency offset is 36125000 Hz. */ static int tsa5060_set_tv_freq (struct dvb_i2c_bus *i2c,u32 freq) {u32 div;u8 buf [4 ]; -u8 cfg; +u8 cfg, cpump, band_select; - div = (36000000 + freq) /166666 ; + div = (36125000 + freq) /166666 ; cfg =0x88 ; + cpump = div <175000000 ?2 : div <390000000 ?1 : + div <470000000 ?2 : div <750000000 ?1 :3 ; + + band_select = div <175000000 ?0x0e : div <470000000 ?0x05 :0x03 ; + buf [0 ] = (div >>8 ) &0x7f ; buf [1 ] = div &0xff ; buf [2 ] = ((div >>10 ) &0x60 ) | cfg; - buf [3 ] =0xc0 ; + buf [3 ] = cpump | band_select;return tsa5060_write (i2c, buf); }
drivers/media/dvb/frontends/grundig_29504-491.c +7 -3
@@ -24,10 +24,15 @@*/ +#include <asm/errno.h> #include <linux/init.h> +#include <linux/kernel.h> #include <linux/module.h> +#include <linux/string.h> +#include <linux/slab.h> #include "dvb_frontend.h" +#include "dvb_functions.h" static int debug =0 ;#define dprintk if (debug) printk
@@ -222,7 +227,7 @@ tmp = (tmp % srate) <<8 ; ratio = (ratio <<8 ) + tmp / srate; -dprintk ("tda8083: ratio == %08x\n" , ratio); +dprintk ("tda8083: ratio == %08x\n" , (unsigned int ) ratio);tda8083_writereg (i2c,0x05 , filter);tda8083_writereg (i2c,0x02 , (ratio >>16 ) &0xff );
@@ -244,8 +249,7 @@while (jiffies - start < timeout && !(tda8083_readreg (i2c,0x02 ) &0x80 )) { - current->state =TASK_INTERRUPTIBLE ; -schedule_timeout (5 ); +dvb_delay (50 ); }; }
drivers/media/dvb/frontends/nxt6000.c +4 -5
@@ -25,13 +25,12 @@*/ -#include <linux/module.h> +#include <asm/errno.h> #include <linux/init.h> -#include <linux/delay.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/string.h> #include <linux/slab.h> -#include <linux/poll.h> -#include <asm/io.h> -#include <linux/i2c.h> #include "dvb_frontend.h" #include "nxt6000.h"
drivers/media/dvb/frontends/stv0299.c +234 -131
609 lines not on this page · raw message
drivers/media/dvb/frontends/ves1820.c +11 -14
@@ -19,11 +19,15 @@Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <asm/errno.h> #include <linux/init.h> +#include <linux/kernel.h> #include <linux/module.h> -#include <linux/delay.h> +#include <linux/string.h> +#include <linux/slab.h> #include "dvb_frontend.h" +#include "dvb_functions.h" #if 0
@@ -63,13 +67,9 @@#define GET_TUNER (data) ((u8) (((int) data >> 16) & 0xff))#define GET_DEMOD_ADDR (data) ((u8) (((int) data >> 24) & 0xff)) +#define XIN 57840000UL +#define FIN (XIN >> 4) -static inline -void ddelay (int ms) -{ - current->state=TASK_INTERRUPTIBLE ; -schedule_timeout ((HZ *ms)/1000 ); -} static
@@ -79,8 +79,8 @@ .frequency_stepsize = 62500, .frequency_min = 51000000, .frequency_max = 858000000, - .symbol_rate_min = (57840000/2)/64, /* SACLK/64 == (XIN/2)/64 */ - .symbol_rate_max = (57840000/2)/4, /* SACLK/4 */ + .symbol_rate_min = (XIN/2)/64, /* SACLK/64 == (XIN/2)/64 */ + .symbol_rate_max = (XIN/2)/4, /* SACLK/4 */#if 0 frequency_tolerance: ???, symbol_rate_tolerance: ???, /* ppm */ /* == 8% (spec p. 5) */
@@ -123,7 +123,7 @@"(reg == 0x%02x, val == 0x%02x, ret == %i)\n" , __FUNCTION__, reg, data, ret); -mdelay (10 ); +dvb_delay (10 );return (ret !=1 ) ? -EREMOTEIO :0 ; }
@@ -209,7 +209,7 @@* check lock and toggle inversion bit if required... */ if (!(ves1820_readreg (fe,0x11 ) &0x08 )) { -ddelay (1 ); +dvb_delay (10 );if (!(ves1820_readreg (fe,0x11 ) &0x08 )) { reg0 ^=0x20 ;ves1820_writereg (fe,0x00 , reg0 &0xfe );
@@ -250,9 +250,6 @@u16 NDEC =0 ;u32 tmp, ratio; -#define XIN 57840000UL -#define FIN (XIN >> 4) -if (symbolrate >XIN /2 ) symbolrate =XIN /2 ;