aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2006-01-09 12:25:02 -0500
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>2006-01-09 12:25:02 -0500
commit0fa14aa6214823bb013b598add866e277a7efe28 (patch)
treeff037bc55e140ede3464ed9ed4cd6f9541799811 /drivers
parentcd1257d860f6ee09b589723a5d3888b1fed46487 (diff)
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: Steven Toth <stoth@hauppauge.com> Signed-off-by: Michael Krufky <mkrufky@m1k.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/cx88/Kconfig10
-rw-r--r--drivers/media/video/cx88/Makefile1
-rw-r--r--drivers/media/video/cx88/cx88-cards.c41
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c25
-rw-r--r--drivers/media/video/cx88/cx88-mpeg.c5
-rw-r--r--drivers/media/video/cx88/cx88.h2
6 files changed, 84 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/Kconfig b/drivers/media/video/cx88/Kconfig
index 85ba4106dc79..ec6201a32aca 100644
--- a/drivers/media/video/cx88/Kconfig
+++ b/drivers/media/video/cx88/Kconfig
@@ -38,6 +38,7 @@ config VIDEO_CX88_DVB_ALL_FRONTENDS
38 select DVB_CX22702 38 select DVB_CX22702
39 select DVB_LGDT330X 39 select DVB_LGDT330X
40 select DVB_NXT200X 40 select DVB_NXT200X
41 select DVB_CX24123
41 ---help--- 42 ---help---
42 This builds cx88-dvb with all currently supported frontend 43 This builds cx88-dvb with all currently supported frontend
43 demodulators. If you wish to tweak your configuration, and 44 demodulators. If you wish to tweak your configuration, and
@@ -89,3 +90,12 @@ config VIDEO_CX88_DVB_NXT200X
89 ---help--- 90 ---help---
90 This adds ATSC 8VSB and QAM64/256 support for cards based on the 91 This adds ATSC 8VSB and QAM64/256 support for cards based on the
91 Connexant 2388x chip and the NXT2002/NXT2004 demodulator. 92 Connexant 2388x chip and the NXT2002/NXT2004 demodulator.
93
94config VIDEO_CX88_DVB_CX24123
95 bool "Conexant CX24123 DVB-S Support"
96 default y
97 depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
98 select DVB_CX24123
99 ---help---
100 This adds DVB-S support for cards based on the
101 Connexant 2388x chip and the CX24123 demodulator.
diff --git a/drivers/media/video/cx88/Makefile b/drivers/media/video/cx88/Makefile
index 54401b02b7ce..90a7ace55f64 100644
--- a/drivers/media/video/cx88/Makefile
+++ b/drivers/media/video/cx88/Makefile
@@ -16,5 +16,6 @@ extra-cflags-$(CONFIG_DVB_OR51132) += -DHAVE_OR51132=1
16extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1 16extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1
17extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 17extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1
18extra-cflags-$(CONFIG_DVB_NXT200X) += -DHAVE_NXT200X=1 18extra-cflags-$(CONFIG_DVB_NXT200X) += -DHAVE_NXT200X=1
19extra-cflags-$(CONFIG_DVB_CX24123) += -DHAVE_CX24123=1
19 20
20EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m) 21EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m)
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 951709aa88ba..d738ea8c6f5e 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -897,6 +897,37 @@ struct cx88_board cx88_boards[] = {
897 .gpio3 = 0x0000, 897 .gpio3 = 0x0000,
898 }}, 898 }},
899 }, 899 },
900 [CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1] = {
901 .name = "Hauppauge Nova-S-Plus DVB-S",
902 .tuner_type = TUNER_ABSENT,
903 .radio_type = UNSET,
904 .tuner_addr = ADDR_UNSET,
905 .radio_addr = ADDR_UNSET,
906 /* fixme: add the analog gpio stuff here */
907 .input = {{
908 .type = CX88_VMUX_DVB,
909 .vmux = 0,
910 },{
911 .type = CX88_VMUX_COMPOSITE1,
912 .vmux = 1,
913 },{
914 .type = CX88_VMUX_SVIDEO,
915 .vmux = 2,
916 }},
917 .dvb = 1,
918 },
919 [CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
920 .name = "Hauppauge Nova-SE2 DVB-S",
921 .tuner_type = TUNER_ABSENT,
922 .radio_type = UNSET,
923 .tuner_addr = ADDR_UNSET,
924 .radio_addr = ADDR_UNSET,
925 .input = {{
926 .type = CX88_VMUX_DVB,
927 .vmux = 0,
928 }},
929 .dvb = 1,
930 },
900}; 931};
901const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); 932const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
902 933
@@ -1044,6 +1075,14 @@ struct cx88_subid cx88_subids[] = {
1044 .subvendor = 0x1461, 1075 .subvendor = 0x1461,
1045 .subdevice = 0x000a, 1076 .subdevice = 0x000a,
1046 .card = CX88_BOARD_AVERTV_303, 1077 .card = CX88_BOARD_AVERTV_303,
1078 },{
1079 .subvendor = 0x0070,
1080 .subdevice = 0x9200,
1081 .card = CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1,
1082 },{
1083 .subvendor = 0x0070,
1084 .subdevice = 0x9202,
1085 .card = CX88_BOARD_HAUPPAUGE_NOVASE2_S1,
1047 }, 1086 },
1048}; 1087};
1049const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); 1088const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1211,6 +1250,8 @@ void cx88_card_setup(struct cx88_core *core)
1211 if (0 == core->i2c_rc) 1250 if (0 == core->i2c_rc)
1212 leadtek_eeprom(core,eeprom); 1251 leadtek_eeprom(core,eeprom);
1213 break; 1252 break;
1253 case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
1254 case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
1214 case CX88_BOARD_HAUPPAUGE_DVB_T1: 1255 case CX88_BOARD_HAUPPAUGE_DVB_T1:
1215 if (0 == core->i2c_rc) 1256 if (0 == core->i2c_rc)
1216 hauppauge_eeprom(core,eeprom); 1257 hauppauge_eeprom(core,eeprom);
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index 99ea955f5987..21972572a943 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -48,6 +48,9 @@
48#ifdef HAVE_NXT200X 48#ifdef HAVE_NXT200X
49# include "nxt200x.h" 49# include "nxt200x.h"
50#endif 50#endif
51#ifdef HAVE_CX24123
52# include "cx24123.h"
53#endif
51 54
52MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); 55MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
53MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); 56MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
@@ -314,6 +317,21 @@ static struct nxt200x_config ati_hdtvwonder = {
314}; 317};
315#endif 318#endif
316 319
320#ifdef HAVE_CX24123
321static int cx24123_set_ts_param(struct dvb_frontend* fe,
322 int is_punctured)
323{
324 struct cx8802_dev *dev= fe->dvb->priv;
325 dev->ts_gen_cntrl = 0x2;
326 return 0;
327}
328
329static struct cx24123_config hauppauge_novas_config = {
330 .demod_address = 0x55,
331 .set_ts_params = cx24123_set_ts_param,
332};
333#endif
334
317static int dvb_register(struct cx8802_dev *dev) 335static int dvb_register(struct cx8802_dev *dev)
318{ 336{
319 /* init struct videobuf_dvb */ 337 /* init struct videobuf_dvb */
@@ -421,6 +439,13 @@ static int dvb_register(struct cx8802_dev *dev)
421 &dev->core->i2c_adap); 439 &dev->core->i2c_adap);
422 break; 440 break;
423#endif 441#endif
442#ifdef HAVE_CX24123
443 case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
444 case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
445 dev->dvb.frontend = cx24123_attach(&hauppauge_novas_config,
446 &dev->core->i2c_adap);
447 break;
448#endif
424 default: 449 default:
425 printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", 450 printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
426 dev->core->name); 451 dev->core->name);
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index 35e6d0c2b872..c79cc1d2bf8b 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -78,6 +78,11 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
78 case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD: 78 case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD:
79 cx_write(TS_SOP_STAT, 1<<13); 79 cx_write(TS_SOP_STAT, 1<<13);
80 break; 80 break;
81 case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
82 case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
83 cx_write(MO_PINMUX_IO, 0x88); /* Enable MPEG parallel IO and video signal pins */
84 udelay(100);
85 break;
81 default: 86 default:
82 cx_write(TS_SOP_STAT, 0x00); 87 cx_write(TS_SOP_STAT, 0x00);
83 break; 88 break;
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 77beafc5c327..2cf40afc0ace 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -179,6 +179,8 @@ extern struct sram_channel cx88_sram_channels[];
179#define CX88_BOARD_ATI_HDTVWONDER 34 179#define CX88_BOARD_ATI_HDTVWONDER 34
180#define CX88_BOARD_WINFAST_DTV1000 35 180#define CX88_BOARD_WINFAST_DTV1000 35
181#define CX88_BOARD_AVERTV_303 36 181#define CX88_BOARD_AVERTV_303 36
182#define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1 37
183#define CX88_BOARD_HAUPPAUGE_NOVASE2_S1 38
182 184
183enum cx88_itype { 185enum cx88_itype {
184 CX88_VMUX_COMPOSITE1 = 1, 186 CX88_VMUX_COMPOSITE1 = 1,