Commit 0fa14aa6 authored by Steven Toth's avatar Steven Toth Committed by Mauro Carvalho Chehab
Browse files

V4L (0979): Added V4L support for the Nova-S-Plus and Nova-SE2 DVB-S products



- Added V4L support for the Nova-S-Plus and Nova-SE2 DVB-S products.
- Basic DVB-S support is working, analog video inputs work.
- It has one or two fixme comments, primarily analog GPIOs (audio) and eeprom parsing.
- CX24123 code (in cx88-dvb.c) disabled until the
- cx24123 module is added to dvb-kernel cvs.

Signed-off-by: default avatarSteven Toth <stoth@hauppauge.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@m1k.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
parent cd1257d8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -35,3 +35,5 @@
 34 -> ATI HDTV Wonder                                     [1002:a101]
 35 -> WinFast DTV1000-T                                   [107d:665f]
 36 -> AVerTV 303 (M126)                                   [1461:000a]
 37 -> Hauppauge Nova-S-Plus DVB-S                         [0070:9200]
 38 -> Hauppauge Nova-SE2 DVB-S                            [0070:9202]
+10 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ config VIDEO_CX88_DVB_ALL_FRONTENDS
	select DVB_CX22702
	select DVB_LGDT330X
	select DVB_NXT200X
	select DVB_CX24123
	---help---
	  This builds cx88-dvb with all currently supported frontend
	  demodulators.  If you wish to tweak your configuration, and
@@ -89,3 +90,12 @@ config VIDEO_CX88_DVB_NXT200X
	---help---
	  This adds ATSC 8VSB and QAM64/256 support for cards based on the
	  Connexant 2388x chip and the NXT2002/NXT2004 demodulator.

config VIDEO_CX88_DVB_CX24123
	bool "Conexant CX24123 DVB-S Support"
	default y
	depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
	select DVB_CX24123
	---help---
	  This adds DVB-S support for cards based on the
	  Connexant 2388x chip and the CX24123 demodulator.
+1 −0
Original line number Diff line number Diff line
@@ -16,5 +16,6 @@ extra-cflags-$(CONFIG_DVB_OR51132) += -DHAVE_OR51132=1
extra-cflags-$(CONFIG_DVB_LGDT330X)  += -DHAVE_LGDT330X=1
extra-cflags-$(CONFIG_DVB_MT352)     += -DHAVE_MT352=1
extra-cflags-$(CONFIG_DVB_NXT200X)   += -DHAVE_NXT200X=1
extra-cflags-$(CONFIG_DVB_CX24123)   += -DHAVE_CX24123=1

EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m)
+41 −0
Original line number Diff line number Diff line
@@ -897,6 +897,37 @@ struct cx88_board cx88_boards[] = {
			.gpio3  = 0x0000,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1] = {
		.name		= "Hauppauge Nova-S-Plus DVB-S",
		.tuner_type	= TUNER_ABSENT,
		.radio_type	= UNSET,
		.tuner_addr	= ADDR_UNSET,
		.radio_addr	= ADDR_UNSET,
		/* fixme: add the analog gpio stuff here */
		.input		= {{
			.type	= CX88_VMUX_DVB,
			.vmux	= 0,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
			.vmux	= 1,
		},{
			.type	= CX88_VMUX_SVIDEO,
			.vmux	= 2,
		}},
		.dvb		= 1,
	},
	[CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
		.name		= "Hauppauge Nova-SE2 DVB-S",
		.tuner_type	= TUNER_ABSENT,
		.radio_type	= UNSET,
		.tuner_addr	= ADDR_UNSET,
		.radio_addr	= ADDR_UNSET,
		.input		= {{
			.type	= CX88_VMUX_DVB,
			.vmux	= 0,
		}},
		.dvb		= 1,
	},
};
const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);

@@ -1044,6 +1075,14 @@ struct cx88_subid cx88_subids[] = {
		.subvendor = 0x1461,
		.subdevice = 0x000a,
		.card      = CX88_BOARD_AVERTV_303,
	},{
		.subvendor = 0x0070,
		.subdevice = 0x9200,
		.card      = CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1,
	},{
		.subvendor = 0x0070,
		.subdevice = 0x9202,
		.card      = CX88_BOARD_HAUPPAUGE_NOVASE2_S1,
	},
};
const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1211,6 +1250,8 @@ void cx88_card_setup(struct cx88_core *core)
		if (0 == core->i2c_rc)
			leadtek_eeprom(core,eeprom);
		break;
	case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
	case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
	case CX88_BOARD_HAUPPAUGE_DVB_T1:
		if (0 == core->i2c_rc)
			hauppauge_eeprom(core,eeprom);
+25 −0
Original line number Diff line number Diff line
@@ -48,6 +48,9 @@
#ifdef HAVE_NXT200X
# include "nxt200x.h"
#endif
#ifdef HAVE_CX24123
# include "cx24123.h"
#endif

MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
@@ -314,6 +317,21 @@ static struct nxt200x_config ati_hdtvwonder = {
};
#endif

#ifdef HAVE_CX24123
static int cx24123_set_ts_param(struct dvb_frontend* fe,
	int is_punctured)
{
	struct cx8802_dev *dev= fe->dvb->priv;
	dev->ts_gen_cntrl = 0x2;
	return 0;
}

static struct cx24123_config hauppauge_novas_config = {
	.demod_address = 0x55,
	.set_ts_params = cx24123_set_ts_param,
};
#endif

static int dvb_register(struct cx8802_dev *dev)
{
	/* init struct videobuf_dvb */
@@ -420,6 +438,13 @@ static int dvb_register(struct cx8802_dev *dev)
		dev->dvb.frontend = nxt200x_attach(&ati_hdtvwonder,
						 &dev->core->i2c_adap);
		break;
#endif
#ifdef HAVE_CX24123
	case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
	case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
		dev->dvb.frontend = cx24123_attach(&hauppauge_novas_config,
			&dev->core->i2c_adap);
		break;
#endif
	default:
		printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
Loading