diff options
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/Kconfig | 10 | ||||
-rw-r--r-- | drivers/media/video/cx88/Makefile | 1 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 41 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 25 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-mpeg.c | 5 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 2 |
7 files changed, 86 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index a1017d1a85d4..ba269e6f3410 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -35,3 +35,5 @@ | |||
35 | 34 -> ATI HDTV Wonder [1002:a101] | 35 | 34 -> ATI HDTV Wonder [1002:a101] |
36 | 35 -> WinFast DTV1000-T [107d:665f] | 36 | 35 -> WinFast DTV1000-T [107d:665f] |
37 | 36 -> AVerTV 303 (M126) [1461:000a] | 37 | 36 -> AVerTV 303 (M126) [1461:000a] |
38 | 37 -> Hauppauge Nova-S-Plus DVB-S [0070:9200] | ||
39 | 38 -> Hauppauge Nova-SE2 DVB-S [0070:9202] | ||
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 | |||
94 | config 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 | |||
16 | extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1 | 16 | extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1 |
17 | extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 | 17 | extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 |
18 | extra-cflags-$(CONFIG_DVB_NXT200X) += -DHAVE_NXT200X=1 | 18 | extra-cflags-$(CONFIG_DVB_NXT200X) += -DHAVE_NXT200X=1 |
19 | extra-cflags-$(CONFIG_DVB_CX24123) += -DHAVE_CX24123=1 | ||
19 | 20 | ||
20 | EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m) | 21 | EXTRA_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 | }; |
901 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 932 | const 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 | }; |
1049 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 1088 | const 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 | ||
52 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); | 55 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); |
53 | MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); | 56 | MODULE_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 | ||
321 | static 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 | |||
329 | static struct cx24123_config hauppauge_novas_config = { | ||
330 | .demod_address = 0x55, | ||
331 | .set_ts_params = cx24123_set_ts_param, | ||
332 | }; | ||
333 | #endif | ||
334 | |||
317 | static int dvb_register(struct cx8802_dev *dev) | 335 | static 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 | ||
183 | enum cx88_itype { | 185 | enum cx88_itype { |
184 | CX88_VMUX_COMPOSITE1 = 1, | 186 | CX88_VMUX_COMPOSITE1 = 1, |