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@xxxxxxxxxxx > >> 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@xxxxxxxx> > > -- > Michael Krufky Signed-off-by: Regis Prevot <regis.prevot@xxxxxxxxxx> -- R?gis Pr?v?t