[linux-dvb] [PATCH]adding support for knc1 Tv Star dvb-s

Regis Prevot regis.prevot at anevia.com
Tue Jan 10 21:45:38 CET 2006


On Tue, 10 Jan 2006 14:17:18 -0500, Mike Krufky wrote
> Mike Krufky wrote:
> 
> > Regis Prevot wrote:
> >
> >> Hi,
> >>
> >> I resend the patch for knc1 TvStar dvb-s board with philips tuner 
> >> sd1878 with some changes.
> >>
> >> Change:
> >>     Adding support for new revision of Terratec cynergy 1200 dvb-s
> >> board.
> >>     Creating of a dvb_pll_desc.
> >> see attached.
> >>
> >>
> >> -- 
> >> Régis Prévôt
> >>
> >>  
> >>
> >>
------------------------------------------------------------------------
> >>
> >> Index: linux/drivers/media/dvb/frontends/dvb-pll.c
> >> ===================================================================
> >> RCS file: 
> >> /cvs/video4linux/v4l-dvb/linux/drivers/media/dvb/frontends/dvb-pll.c,v
> >> retrieving revision 1.14
> >> diff -u -p -r1.14 dvb-pll.c
> >> --- linux/drivers/media/dvb/frontends/dvb-pll.c    20 Dec 2005 
> >> 07:32:45 -0000    1.14
> >> +++ linux/drivers/media/dvb/frontends/dvb-pll.c    3 Jan 2006 
> >> 10:31:34 -0000
> >> @@ -345,6 +345,23 @@ struct dvb_pll_desc dvb_pll_tbmv30111in };
> >> EXPORT_SYMBOL(dvb_pll_tbmv30111in);
> >>
> >> +/*
> >> + * Philips SD1878 Tuner.
> >> + */
> >> +struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261 = {
> >> +    .name  = "Philips SD1878",
> >> +    .min   =  950000,
> >> +    .max   = 2150000,
> >> +    .count = 4,
> >> +    .entries = {
> >> +        { 1250000, 499, 500, 0xc4, 0x00},
> >> +        { 1550000, 499, 500, 0xc4, 0x40},
> >> +        { 2050000, 499, 500, 0xc4, 0x80},
> >> +        { 2150000, 499, 500, 0xc4, 0xc0},
> >> +    },
> >> +};
> >> +EXPORT_SYMBOL(dvb_pll_philips_sd1878_tda8261);
> >> +
> >> /* ----------------------------------------------------------- */
> >> /* code                                                        */
> >>
> >> Index: linux/drivers/media/dvb/frontends/dvb-pll.h
> >> ===================================================================
> >> RCS file: 
> >> /cvs/video4linux/v4l-dvb/linux/drivers/media/dvb/frontends/dvb-pll.h,v
> >> retrieving revision 1.14
> >> diff -u -p -r1.14 dvb-pll.h
> >> --- linux/drivers/media/dvb/frontends/dvb-pll.h    20 Dec 2005 
> >> 07:32:45 -0000    1.14
> >> +++ linux/drivers/media/dvb/frontends/dvb-pll.h    3 Jan 2006 
> >> 10:31:34 -0000
> >> @@ -40,6 +40,8 @@ extern struct dvb_pll_desc dvb_pll_tuv12
> >> extern struct dvb_pll_desc dvb_pll_tdhu2;
> >> extern struct dvb_pll_desc dvb_pll_tbmv30111in;
> >>
> >> +extern struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261;
> >> +
> >> int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf,
> >>               u32 freq, int bandwidth);
> >>
> >> Index: linux/drivers/media/dvb/ttpci/budget-av.c
> >> ===================================================================
> >> RCS file: 
> >> /cvs/video4linux/v4l-dvb/linux/drivers/media/dvb/ttpci/budget-av.c,v
> >> retrieving revision 1.59
> >> diff -u -p -r1.59 budget-av.c
> >> --- linux/drivers/media/dvb/ttpci/budget-av.c    26 Nov 2005 23:46:56 
> >> -0000    1.59
> >> +++ linux/drivers/media/dvb/ttpci/budget-av.c    3 Jan 2006 10:31:36 
> >> -0000
> >> @@ -37,6 +37,7 @@
> >> #include "stv0299.h"
> >> #include "tda10021.h"
> >> #include "tda1004x.h"
> >> +#include "dvb-pll.h"
> >> #include <media/saa7146_vv.h>
> >> #include <linux/module.h>
> >> #include <linux/errno.h>
> >> @@ -864,8 +865,117 @@ static struct tda1004x_config philips_tu
> >>     .request_firmware = philips_tu1216_request_firmware,
> >> };
> >>
> >> +static u8 philips_sd1878_inittab[] = {
> >> +    0x01, 0x15,
> >> +    0x02, 0x30,
> >> +    0x03, 0x00,
> >> +    0x04, 0x7d,
> >> +    0x05, 0x35,
> >> +    0x06, 0x40,
> >> +    0x07, 0x00,
> >> +    0x08, 0x43,
> >> +    0x09, 0x02,
> >> +    0x0C, 0x51,
> >> +    0x0D, 0x82,
> >> +    0x0E, 0x23,
> >> +    0x10, 0x3f,
> >> +    0x11, 0x84,
> >> +    0x12, 0xb9,
> >> +    0x15, 0xc9,
> >> +    0x16, 0x19,
> >> +    0x17, 0x8c,
> >> +    0x18, 0x59,
> >> +    0x19, 0xf8,
> >> +    0x1a, 0xfe,
> >> +    0x1c, 0x7f,
> >> +    0x1d, 0x00,
> >> +    0x1e, 0x00,
> >> +    0x1f, 0x50,
> >> +    0x20, 0x00,
> >> +    0x21, 0x00,
> >> +    0x22, 0x00,
> >> +    0x23, 0x00,
> >> +    0x28, 0x00,
> >> +    0x29, 0x28,
> >> +    0x2a, 0x14,
> >> +    0x2b, 0x0f,
> >> +    0x2c, 0x09,
> >> +    0x2d, 0x09,
> >> +    0x31, 0x1f,
> >> +    0x32, 0x19,
> >> +    0x33, 0xfc,
> >> +    0x34, 0x93,
> >> +    0xff, 0xff
> >> +};
> >> +
> >> +static int philips_sd1878_tda8261_pll_set(struct dvb_frontend *fe,
> >> +        struct i2c_adapter *i2c,
> >> +        struct dvb_frontend_parameters *params)
> >> +{
> >> +    u8              buf[4];
> >> +    int             rc;
> >> +    struct i2c_msg  tuner_msg = 
> >> {.addr=0x60,.flags=0,.buf=buf,.len=sizeof(buf)};
> >> +
> >> +    if((params->frequency < 950000) || (params->frequency > 2150000))
> >> +        return -EINVAL;
> >> +
> >> +    rc=dvb_pll_configure(&dvb_pll_philips_sd1878_tda8261, buf,
> >> +            params->frequency, 0);
> >> +    if(rc < 0) return rc;
> >> +
> >> +    if(i2c_transfer(i2c, &tuner_msg, 1) != 1)
> >> +        return -EIO;
> >> +
> >> +    return 0;
> >> +}
> >> +
> >> +static int philips_sd1878_ci_set_symbol_rate(struct dvb_frontend *fe,
> >> +        u32 srate, u32 ratio)
> >> +{
> >> +    u8 aclk = 0;
> >> +    u8 bclk = 0;    +    u8 m1;          +
> >> +    aclk = 0xb5;
> >> +    if (srate < 2000000)
> >> +        bclk = 0x86;
> >> +    else if (srate < 5000000)
> >> +        bclk = 0x89;
> >> +    else if (srate < 15000000)
> >> +        bclk = 0x8f;
> >> +    else if (srate < 45000000)
> >> +        bclk = 0x95;
> >> +
> >> +    m1 = 0x14;
> >> +    if (srate < 4000000)
> >> +        m1 = 0x10;
> >> +
> >> +    stv0299_writereg(fe, 0x0e, 0x23);
> >> +    stv0299_writereg(fe, 0x0f, 0x94);
> >> +    stv0299_writereg(fe, 0x10, 0x39);
> >> +    stv0299_writereg(fe, 0x13, aclk);
> >> +    stv0299_writereg(fe, 0x14, bclk);
> >> +    stv0299_writereg(fe, 0x15, 0xc9);
> >> +    stv0299_writereg(fe, 0x1f, (ratio >> 16) & 0xff);
> >> +    stv0299_writereg(fe, 0x20, (ratio >> 8) & 0xff);
> >> +    stv0299_writereg(fe, 0x21, (ratio) & 0xf0);
> >> +    stv0299_writereg(fe, 0x0f, 0x80 | m1);
> >>
> >> +    return 0;
> >> +}
> >>
> >> +static struct stv0299_config philips_sd1878_config = {
> >> +    .demod_address = 0x68,
> >> +    .inittab = philips_sd1878_inittab,
> >> +    .mclk = 88000000UL,
> >> +    .invert = 0,
> >> +    .skip_reinit = 0,
> >> +    .lock_output = STV0229_LOCKOUTPUT_1,
> >> +    .volt13_op0_op1 = STV0299_VOLT13_OP0,
> >> +    .min_delay_ms = 100,
> >> +    .set_symbol_rate = philips_sd1878_ci_set_symbol_rate,
> >> +    .pll_set = philips_sd1878_tda8261_pll_set,
> >> +};
> >>
> >> static u8 read_pwm(struct budget_av *budget_av)
> >> {
> >> @@ -886,7 +996,10 @@ static u8 read_pwm(struct budget_av *bud
> >> #define SUBID_DVBS_KNC1_PLUS    0x0011
> >> #define SUBID_DVBS_TYPHOON    0x4f56
> >> #define SUBID_DVBS_CINERGY1200    0x1154
> >> +#define SUBID_DVBS_CYNERGY1200N 0x1155
> >>
> >> +#define SUBID_DVBS_TV_STAR    0x0014
> >> +#define SUBID_DVBS_TV_STAR_CI    0x0016
> >> #define SUBID_DVBC_KNC1        0x0020
> >> #define SUBID_DVBC_KNC1_PLUS    0x0021
> >> #define SUBID_DVBC_CINERGY1200    0x1156
> >> @@ -922,6 +1035,13 @@ static void frontend_init(struct budget_
> >>         }
> >>         break;
> >>
> >> +    case SUBID_DVBS_TV_STAR:
> >> +    case SUBID_DVBS_TV_STAR_CI:
> >> +    case SUBID_DVBS_CYNERGY1200N:
> >> +        fe = stv0299_attach(&philips_sd1878_config,
> >> +                &budget_av->budget.i2c_adap);
> >> +        break;
> >> +
> >>     case SUBID_DVBS_KNC1_PLUS:
> >>     case SUBID_DVBS_TYPHOON:
> >>         fe = stv0299_attach(&typhoon_config,
> >> @@ -1166,10 +1286,12 @@ static struct saa7146_extension budget_e
> >> MAKE_BUDGET_INFO(knc1s, "KNC1 DVB-S", BUDGET_KNC1S);
> >> MAKE_BUDGET_INFO(knc1c, "KNC1 DVB-C", BUDGET_KNC1C);
> >> MAKE_BUDGET_INFO(knc1t, "KNC1 DVB-T", BUDGET_KNC1T);
> >> +MAKE_BUDGET_INFO(kncxs, "KNC TV STAR DVB-S", BUDGET_TVSTAR);
> >> MAKE_BUDGET_INFO(knc1sp, "KNC1 DVB-S Plus", BUDGET_KNC1SP);
> >> MAKE_BUDGET_INFO(knc1cp, "KNC1 DVB-C Plus", BUDGET_KNC1CP);
> >> MAKE_BUDGET_INFO(knc1tp, "KNC1 DVB-T Plus", BUDGET_KNC1TP);
> >> MAKE_BUDGET_INFO(cin1200s, "TerraTec Cinergy 1200 DVB-S", 
> >> BUDGET_CIN1200S);
> >> +MAKE_BUDGET_INFO(cin1200sn, "TerraTec Cinergy 1200 DVB-S", 
> >> BUDGET_CIN1200S);
> >> MAKE_BUDGET_INFO(cin1200c, "Terratec Cinergy 1200 DVB-C", 
> >> BUDGET_CIN1200C);
> >> MAKE_BUDGET_INFO(cin1200t, "Terratec Cinergy 1200 DVB-T", 
> >> BUDGET_CIN1200T);
> >>
> >> @@ -1178,11 +1300,14 @@ static struct pci_device_id pci_tbl[] = 
> >>     MAKE_EXTENSION_PCI(knc1s, 0x1131, 0x0010),
> >>     MAKE_EXTENSION_PCI(knc1s, 0x1894, 0x0010),
> >>     MAKE_EXTENSION_PCI(knc1sp, 0x1131, 0x0011),
> >> +    MAKE_EXTENSION_PCI(kncxs, 0x1894, 0x0014),
> >> +    MAKE_EXTENSION_PCI(kncxs, 0x1894, 0x0016),
> >>     MAKE_EXTENSION_PCI(knc1c, 0x1894, 0x0020),
> >>     MAKE_EXTENSION_PCI(knc1cp, 0x1894, 0x0021),
> >>     MAKE_EXTENSION_PCI(knc1t, 0x1894, 0x0030),
> >>     MAKE_EXTENSION_PCI(knc1tp, 0x1894, 0x0031),
> >>     MAKE_EXTENSION_PCI(cin1200s, 0x153b, 0x1154),
> >> +    MAKE_EXTENSION_PCI(cin1200sn, 0x153b, 0x1155),
> >>     MAKE_EXTENSION_PCI(cin1200c, 0x153b, 0x1156),
> >>     MAKE_EXTENSION_PCI(cin1200t, 0x153b, 0x1157),
> >>     {
> >> Index: linux/drivers/media/dvb/ttpci/budget.h
> >> ===================================================================
> >> RCS file: 
> >> /cvs/video4linux/v4l-dvb/linux/drivers/media/dvb/ttpci/budget.h,v
> >> retrieving revision 1.25
> >> diff -u -p -r1.25 budget.h
> >> --- linux/drivers/media/dvb/ttpci/budget.h    26 Nov 2005 23:46:56 
> >> -0000    1.25
> >> +++ linux/drivers/media/dvb/ttpci/budget.h    3 Jan 2006 10:31:36 -0000
> >> @@ -95,6 +95,7 @@ static struct saa7146_pci_extension_data
> >> #define BUDGET_KNC1SP           11
> >> #define BUDGET_KNC1CP           12
> >> #define BUDGET_KNC1TP           13
> >> +#define BUDGET_TVSTAR           14
> >>
> >> #define BUDGET_VIDEO_PORTA         0
> >> #define BUDGET_VIDEO_PORTB         1
> >>  
> >>
> >>
------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> linux-dvb mailing list
> >> linux-dvb at linuxtv.org
> >> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
> >>
> >
> > Does anybody have a problem if I apply this patch?  It would be nice 
> > if someone who works closer with this code could reply with an ACK.
> >
> Oops.....
> 
> Regis, even if everyone is cool with your patch, (which I 
> expect will be the case), we still require your sign-off,
>  before applying to cvs.
> 
> Please reply to this email with your sign-off, in the form:
> 
> Signed-off-by: Your Name <email at addr.ess>
> 
> -- 
> Michael Krufky

Signed-off-by: Regis Prevot <regis.prevot at anevia.com>

--
Régis Prévôt




More information about the linux-dvb mailing list