[linux-dvb] [PATCH] PCI-e TBS 6920 DVB-S2, cx23885 and cx24116, for hg import

Igor M. Liplianin liplianin at tut.by
Sat Dec 6 03:13:51 CET 2008


# HG changeset patch
# User Igor M. Liplianin <liplianin at me.by>
# Date 1228529008 -7200
# Node ID 613005dd083064292620597adfce3a2b301c4719
# Parent  39b022c4204d853825816153aa24acecb4eb21d5
Add TBS 6920 PCI-e DVB-S2 card.

From: Igor M. Liplianin <liplianin at me.by>

TBS 6920 PCI-e DVB-S2 card based on cx23885 PCI-Express chip, cx24116 demodulator.

Signed-off-by: Igor M. Liplianin <liplianin at me.by>

diff -r 39b022c4204d -r 613005dd0830 linux/drivers/media/video/cx23885/cx23885-cards.c
--- a/linux/drivers/media/video/cx23885/cx23885-cards.c	Thu Dec 04 14:37:30 2008 +0200
+++ b/linux/drivers/media/video/cx23885/cx23885-cards.c	Sat Dec 06 04:03:28 2008 +0200
@@ -159,6 +159,10 @@
 		.name		= "Leadtek Winfast PxDVR3200 H",
 		.portc		= CX23885_MPEG_DVB,
 	},
+	[CX23885_BOARD_TBS_6920] = {
+		.name		= "TurboSight TBS 6920",
+		.portb		= CX23885_MPEG_DVB,
+	},
 };
 const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
 
@@ -238,6 +242,10 @@
 		.subvendor = 0x107d,
 		.subdevice = 0x6681,
 		.card      = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,
+	}, {
+		.subvendor = 0x6920,
+		.subdevice = 0x8888,
+		.card      = CX23885_BOARD_TBS_6920,
 	},
 };
 const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -543,6 +551,14 @@
 		mdelay(20);
 		cx_set(GP0_IO, 0x00040004);
 		break;
+	case CX23885_BOARD_TBS_6920:
+		cx_write(MC417_CTL, 0x00000036);
+		cx_write(MC417_OEN, 0x00001000);
+		cx_clear(MC417_RWD, 0x00000800);
+		msleep(10);
+		cx_write(MC417_RWD, 0x00001800);
+		msleep(10);
+		break;
 	}
 }
 
@@ -623,6 +639,11 @@
 		ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
 		ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
 		break;
+	case CX23885_BOARD_TBS_6920:
+		ts1->gen_ctrl_val  = 0x5; /* Parallel */
+		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+		ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
+		break;
 	case CX23885_BOARD_HAUPPAUGE_HVR1250:
 	case CX23885_BOARD_HAUPPAUGE_HVR1500:
 	case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
diff -r 39b022c4204d -r 613005dd0830 linux/drivers/media/video/cx23885/cx23885-dvb.c
--- a/linux/drivers/media/video/cx23885/cx23885-dvb.c	Thu Dec 04 14:37:30 2008 +0200
+++ b/linux/drivers/media/video/cx23885/cx23885-dvb.c	Sat Dec 06 04:03:28 2008 +0200
@@ -44,6 +44,7 @@
 #include "dib7000p.h"
 #include "dibx000_common.h"
 #include "zl10353.h"
+#include "cx24116.h"
 
 static unsigned int debug;
 
@@ -309,6 +310,39 @@
 	.no_tuner      = 1,
 };
 
+static int cx24116_reset_device(struct dvb_frontend *fe)
+{
+	struct cx23885_tsport *port = fe->dvb->priv;
+	struct cx23885_dev *dev = port->dev;
+
+	cx_clear(MC417_RWD, 0x00000800);/* GPIO-14 low */
+	msleep(10);
+	cx_set(MC417_RWD, 0x00000800);/* GPIO-14 high */
+	msleep(20);
+
+	return 0;
+}
+
+static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
+{
+	struct cx23885_tsport *port = fe->dvb->priv;
+	struct cx23885_dev *dev = port->dev;
+
+	if (voltage == SEC_VOLTAGE_18)
+		cx_write(MC417_RWD, 0x00001e00);/* GPIO-13 high */
+	else if (voltage == SEC_VOLTAGE_13)
+		cx_write(MC417_RWD, 0x00001a00);/* GPIO-13 low */
+	else
+		cx_write(MC417_RWD, 0x00001800);/* GPIO-12 low */
+	return 0;
+}
+
+static struct cx24116_config tbs_cx24116_config = {
+	.demod_address = 0x05,
+	.mpg_clk_pos_pol = 0x02,
+	.reset_device = cx24116_reset_device,
+};
+
 static int dvb_register(struct cx23885_tsport *port)
 {
 	struct cx23885_dev *dev = port->dev;
@@ -526,6 +560,16 @@
 				fe->ops.tuner_ops.set_config(fe, &ctl);
 		}
 		break;
+	case CX23885_BOARD_TBS_6920:
+		i2c_bus = &dev->i2c_bus[0];
+
+		fe0->dvb.frontend = dvb_attach(cx24116_attach,
+			&tbs_cx24116_config,
+			&i2c_bus->i2c_adap);
+		if (fe0->dvb.frontend != NULL) {
+			fe0->dvb.frontend->ops.set_voltage = tbs_set_voltage;
+		}
+		break;
 	default:
 		printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
 			" isn't supported yet\n",
diff -r 39b022c4204d -r 613005dd0830 linux/drivers/media/video/cx23885/cx23885.h
--- a/linux/drivers/media/video/cx23885/cx23885.h	Thu Dec 04 14:37:30 2008 +0200
+++ b/linux/drivers/media/video/cx23885/cx23885.h	Sat Dec 06 04:03:28 2008 +0200
@@ -67,6 +67,7 @@
 #define CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP 10
 #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11
 #define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12
+#define CX23885_BOARD_TBS_6920                 13
 
 /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
 #define CX23885_NORMS (\



More information about the linux-dvb mailing list