diff options
| author | Steven Toth <stoth@hauppauge.com> | 2006-01-09 12:25:02 -0500 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-09 12:25:02 -0500 |
| commit | 0fa14aa6214823bb013b598add866e277a7efe28 (patch) | |
| tree | ff037bc55e140ede3464ed9ed4cd6f9541799811 | |
| parent | cd1257d860f6ee09b589723a5d3888b1fed46487 (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>
| -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 a1017d1a85..ba269e6f34 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 85ba4106dc..ec6201a32a 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 54401b02b7..90a7ace55f 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 951709aa88..d738ea8c6f 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 99ea955f59..21972572a9 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 35e6d0c2b8..c79cc1d2bf 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 77beafc5c3..2cf40afc0a 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< | |
