浏览代码

V4L/DVB (13723): [Mantis/VP-2040, Terratec Cinergy C] Add support for the Cinergy C, VP-2040 clone

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Manu Abraham 15 年之前
父节点
当前提交
b2eb1312fa

+ 10 - 3
drivers/media/dvb/mantis/Makefile

@@ -1,6 +1,13 @@
-mantis-objs = mantis_core.o mantis_dma.o mantis_pci.o mantis_i2c.o	\
-	mantis_dvb.o mantis_vp1033.o mantis_vp1034.o mantis_vp2033.o	\
-	mantis_vp3030.o
+mantis-objs = 	mantis_core.o \
+		mantis_dma.o \
+		mantis_pci.o \
+		mantis_i2c.o \
+		mantis_dvb.o \
+		mantis_vp1033.o \
+		mantis_vp1034.o \
+		mantis_vp2033.o	\
+		mantis_vp2040.o	\
+		mantis_vp3030.o
 
 
 obj-$(CONFIG_DVB_MANTIS) += mantis.o
 obj-$(CONFIG_DVB_MANTIS) += mantis.o
 
 

+ 4 - 0
drivers/media/dvb/mantis/mantis_core.c

@@ -23,6 +23,7 @@
 #include "mantis_vp1033.h"
 #include "mantis_vp1033.h"
 #include "mantis_vp1034.h"
 #include "mantis_vp1034.h"
 #include "mantis_vp2033.h"
 #include "mantis_vp2033.h"
+#include "mantis_vp2040.h"
 #include "mantis_vp3030.h"
 #include "mantis_vp3030.h"
 
 
 static int read_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length)
 static int read_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length)
@@ -113,6 +114,9 @@ static void mantis_load_config(struct mantis_pci *mantis)
 	case MANTIS_VP_2033_DVB_C:	// VP-2033
 	case MANTIS_VP_2033_DVB_C:	// VP-2033
 		mantis->hwconfig = &vp2033_mantis_config;
 		mantis->hwconfig = &vp2033_mantis_config;
 		break;
 		break;
+	case TERRATEC_CINERGY_C_PCI:	// VP-2040 clone
+		mantis->hwconfig = &vp2040_mantis_config;
+		break;
 	case MANTIS_VP_3030_DVB_T:	// VP-3030
 	case MANTIS_VP_3030_DVB_T:	// VP-3030
 		mantis->hwconfig = &vp3030_mantis_config;
 		mantis->hwconfig = &vp3030_mantis_config;
 		break;
 		break;

+ 15 - 1
drivers/media/dvb/mantis/mantis_dvb.c

@@ -28,6 +28,7 @@
 #include "mantis_vp1033.h"
 #include "mantis_vp1033.h"
 #include "mantis_vp1034.h"
 #include "mantis_vp1034.h"
 #include "mantis_vp2033.h"
 #include "mantis_vp2033.h"
+#include "mantis_vp2040.h"
 #include "mantis_vp3030.h"
 #include "mantis_vp3030.h"
 
 
 /*	Tuner power supply control	*/
 /*	Tuner power supply control	*/
@@ -243,7 +244,7 @@ int __devinit mantis_frontend_init(struct mantis_pci *mantis)
 		if (mantis->fe) {
 		if (mantis->fe) {
 			mantis->fe->ops.tuner_ops.set_params = philips_cu1216_tuner_set;
 			mantis->fe->ops.tuner_ops.set_params = philips_cu1216_tuner_set;
 			dprintk(verbose, MANTIS_ERROR, 1,
 			dprintk(verbose, MANTIS_ERROR, 1,
-				"found Philips CU1216 DVB-C frontend @ 0x%02x",
+				"found Philips CU1216 DVB-C frontend (TDA10021) @ 0x%02x",
 				philips_cu1216_config.demod_address);
 				philips_cu1216_config.demod_address);
 
 
 			dprintk(verbose, MANTIS_ERROR, 1,
 			dprintk(verbose, MANTIS_ERROR, 1,
@@ -251,6 +252,19 @@ int __devinit mantis_frontend_init(struct mantis_pci *mantis)
 
 
 		}
 		}
 		break;
 		break;
+	case TERRATEC_CINERGY_C_PCI:
+		dprintk(verbose, MANTIS_ERROR, 1, "Probing for CU1216 (DVB-C)");
+		mantis->fe = tda10023_attach(&tda10023_cu1216_config, &mantis->adapter, read_pwm(mantis));
+		if (mantis->fe) {
+			mantis->fe->ops.tuner_ops.set_params = philips_cu1216_tuner_set;
+			dprintk(verbose, MANTIS_ERROR, 1,
+				"found Philips CU1216 DVB-C frontend (TDA10023) @ 0x%02x",
+				philips_cu1216_config.demod_address);
+
+			dprintk(verbose, MANTIS_ERROR, 1,
+				"Mantis DVB-C Philips CU1216 frontend attach success");
+		}
+		break;
 	default:
 	default:
 		dprintk(verbose, MANTIS_DEBUG, 1, "Unknown frontend:[0x%02x]",
 		dprintk(verbose, MANTIS_DEBUG, 1, "Unknown frontend:[0x%02x]",
 			mantis->sub_device_id);
 			mantis->sub_device_id);

+ 36 - 0
drivers/media/dvb/mantis/mantis_vp2040.c

@@ -0,0 +1,36 @@
+/*
+	Mantis VP-2040 driver
+
+	Copyright (C) Manu Abraham (abraham.manu@gmail.com)
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "mantis_common.h"
+#include "mantis_vp2040.h"
+
+#define MANTIS_MODEL_NAME	"VP-2040"
+#define MANTIS_DEV_TYPE		"DVB-C"
+
+struct mantis_hwconfig vp2040_mantis_config = {
+	.model_name	= MANTIS_MODEL_NAME,
+	.dev_type	= MANTIS_DEV_TYPE,
+	.ts_size	= MANTIS_TS_204,
+};
+
+struct tda1002x_config tda10023_cu1216_config = {
+	.demod_address = 0x18 >> 1,
+	.invert = 1,
+};

+ 33 - 0
drivers/media/dvb/mantis/mantis_vp2040.h

@@ -0,0 +1,33 @@
+/*
+	Mantis VP-2040 driver
+
+	Copyright (C) Manu Abraham (abraham.manu@gmail.com)
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef __MANTIS_VP2040_H
+#define __MANTIS_VP2040_H
+
+#include "dvb_frontend.h"
+#include "mantis_common.h"
+#include "tda1002x.h"
+
+#define TERRATEC_CINERGY_C_PCI	0x1178
+
+extern struct tda1002x_config tda10023_cu1216_config;
+extern struct mantis_hwconfig vp2040_mantis_config;
+
+#endif //__MANTIS_VP2040_H