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

Mike Krufky mkrufky at linuxtv.org
Tue Jan 10 20:08:40 CET 2006


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.

-- 
Michael Krufky





More information about the linux-dvb mailing list