From: Steven Toth - 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: Steven Toth Signed-off-by: Michael Krufky Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Andrew Morton --- Documentation/video4linux/CARDLIST.cx88 | 2 + drivers/media/video/cx88/Kconfig | 10 +++++++ drivers/media/video/cx88/Makefile | 1 drivers/media/video/cx88/cx88-cards.c | 41 ++++++++++++++++++++++++++++++++ drivers/media/video/cx88/cx88-dvb.c | 25 +++++++++++++++++++ drivers/media/video/cx88/cx88-mpeg.c | 5 +++ drivers/media/video/cx88/cx88.h | 2 + 7 files changed, 86 insertions(+) diff -puN Documentation/video4linux/CARDLIST.cx88~v4l-0979-added-v4l-support-for-the-nova-s-plus-and Documentation/video4linux/CARDLIST.cx88 --- devel/Documentation/video4linux/CARDLIST.cx88~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/Documentation/video4linux/CARDLIST.cx88 2005-12-09 22:50:10.000000000 -0800 @@ -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] diff -puN drivers/media/video/cx88/cx88-cards.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/cx88-cards.c --- devel/drivers/media/video/cx88/cx88-cards.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/cx88-cards.c 2005-12-09 22:50:10.000000000 -0800 @@ -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 *c 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); diff -puN drivers/media/video/cx88/cx88-dvb.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/cx88-dvb.c --- devel/drivers/media/video/cx88/cx88-dvb.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/cx88-dvb.c 2005-12-09 22:50:10.000000000 -0800 @@ -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 "); @@ -314,6 +317,21 @@ static struct nxt200x_config ati_hdtvwon }; #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 */ @@ -421,6 +439,13 @@ static int dvb_register(struct cx8802_de &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", dev->core->name); diff -puN drivers/media/video/cx88/cx88.h~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/cx88.h --- devel/drivers/media/video/cx88/cx88.h~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/cx88.h 2005-12-09 22:50:10.000000000 -0800 @@ -179,6 +179,8 @@ extern struct sram_channel cx88_sram_cha #define CX88_BOARD_ATI_HDTVWONDER 34 #define CX88_BOARD_WINFAST_DTV1000 35 #define CX88_BOARD_AVERTV_303 36 +#define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1 37 +#define CX88_BOARD_HAUPPAUGE_NOVASE2_S1 38 enum cx88_itype { CX88_VMUX_COMPOSITE1 = 1, diff -puN drivers/media/video/cx88/cx88-mpeg.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/cx88-mpeg.c --- devel/drivers/media/video/cx88/cx88-mpeg.c~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/cx88-mpeg.c 2005-12-09 22:50:10.000000000 -0800 @@ -78,6 +78,11 @@ static int cx8802_start_dma(struct cx880 case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD: cx_write(TS_SOP_STAT, 1<<13); break; + case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: + case CX88_BOARD_HAUPPAUGE_NOVASE2_S1: + cx_write(MO_PINMUX_IO, 0x88); /* Enable MPEG parallel IO and video signal pins */ + udelay(100); + break; default: cx_write(TS_SOP_STAT, 0x00); break; diff -puN drivers/media/video/cx88/Kconfig~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/Kconfig --- devel/drivers/media/video/cx88/Kconfig~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/Kconfig 2005-12-09 22:50:10.000000000 -0800 @@ -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. diff -puN drivers/media/video/cx88/Makefile~v4l-0979-added-v4l-support-for-the-nova-s-plus-and drivers/media/video/cx88/Makefile --- devel/drivers/media/video/cx88/Makefile~v4l-0979-added-v4l-support-for-the-nova-s-plus-and 2005-12-09 22:50:10.000000000 -0800 +++ devel-akpm/drivers/media/video/cx88/Makefile 2005-12-09 22:50:10.000000000 -0800 @@ -16,5 +16,6 @@ extra-cflags-$(CONFIG_DVB_OR51132) += 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) _