[linux-dvb] [PATCH]adding support for knc1 Tv Star dvb-s
Mike Krufky
mkrufky at linuxtv.org
Tue Jan 10 20:17:18 CET 2006
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
More information about the linux-dvb
mailing list