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

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
...@@ -35,3 +35,5 @@ ...@@ -35,3 +35,5 @@
34 -> ATI HDTV Wonder [1002:a101] 34 -> ATI HDTV Wonder [1002:a101]
35 -> WinFast DTV1000-T [107d:665f] 35 -> WinFast DTV1000-T [107d:665f]
36 -> AVerTV 303 (M126) [1461:000a] 36 -> AVerTV 303 (M126) [1461:000a]
37 -> Hauppauge Nova-S-Plus DVB-S [0070:9200]
38 -> Hauppauge Nova-SE2 DVB-S [0070:9202]
...@@ -38,6 +38,7 @@ config VIDEO_CX88_DVB_ALL_FRONTENDS ...@@ -38,6 +38,7 @@ config VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_CX22702 select DVB_CX22702
select DVB_LGDT330X select DVB_LGDT330X
select DVB_NXT200X select DVB_NXT200X
select DVB_CX24123
---help--- ---help---
This builds cx88-dvb with all currently supported frontend This builds cx88-dvb with all currently supported frontend
demodulators. If you wish to tweak your configuration, and demodulators. If you wish to tweak your configuration, and
...@@ -89,3 +90,12 @@ config VIDEO_CX88_DVB_NXT200X ...@@ -89,3 +90,12 @@ config VIDEO_CX88_DVB_NXT200X
---help--- ---help---
This adds ATSC 8VSB and QAM64/256 support for cards based on the This adds ATSC 8VSB and QAM64/256 support for cards based on the
Connexant 2388x chip and the NXT2002/NXT2004 demodulator. 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.
...@@ -16,5 +16,6 @@ extra-cflags-$(CONFIG_DVB_OR51132) += -DHAVE_OR51132=1 ...@@ -16,5 +16,6 @@ extra-cflags-$(CONFIG_DVB_OR51132) += -DHAVE_OR51132=1
extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1 extra-cflags-$(CONFIG_DVB_LGDT330X) += -DHAVE_LGDT330X=1
extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1
extra-cflags-$(CONFIG_DVB_NXT200X) += -DHAVE_NXT200X=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) EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m)
...@@ -897,6 +897,37 @@ struct cx88_board cx88_boards[] = { ...@@ -897,6 +897,37 @@ struct cx88_board cx88_boards[] = {
.gpio3 = 0x0000, .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); const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
...@@ -1044,6 +1075,14 @@ struct cx88_subid cx88_subids[] = { ...@@ -1044,6 +1075,14 @@ struct cx88_subid cx88_subids[] = {
.subvendor = 0x1461, .subvendor = 0x1461,
.subdevice = 0x000a, .subdevice = 0x000a,
.card = CX88_BOARD_AVERTV_303, .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); const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
...@@ -1211,6 +1250,8 @@ void cx88_card_setup(struct cx88_core *core) ...@@ -1211,6 +1250,8 @@ void cx88_card_setup(struct cx88_core *core)
if (0 == core->i2c_rc) if (0 == core->i2c_rc)
leadtek_eeprom(core,eeprom); leadtek_eeprom(core,eeprom);
break; break;
case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
case CX88_BOARD_HAUPPAUGE_NOVASE2_S1:
case CX88_BOARD_HAUPPAUGE_DVB_T1: case CX88_BOARD_HAUPPAUGE_DVB_T1:
if (0 == core->i2c_rc) if (0 == core->i2c_rc)
hauppauge_eeprom(core,eeprom); hauppauge_eeprom(core,eeprom);
......
...@@ -48,6 +48,9 @@ ...@@ -48,6 +48,9 @@
#ifdef HAVE_NXT200X #ifdef HAVE_NXT200X
# include "nxt200x.h" # include "nxt200x.h"
#endif #endif
#ifdef HAVE_CX24123
# include "cx24123.h"
#endif
MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
...@@ -314,6 +317,21 @@ static struct nxt200x_config ati_hdtvwonder = { ...@@ -314,6 +317,21 @@ static struct nxt200x_config ati_hdtvwonder = {
}; };
#endif #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) static int dvb_register(struct cx8802_dev *dev)
{ {
/* init struct videobuf_dvb */ /* init struct videobuf_dvb */
...@@ -420,6 +438,13 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -420,6 +438,13 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = nxt200x_attach(&ati_hdtvwonder, dev->dvb.frontend = nxt200x_attach(&ati_hdtvwonder,
&dev->core->i2c_adap); &dev->core->i2c_adap);
break; 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 #endif
default: default:
printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
......
...@@ -78,6 +78,11 @@ static int cx8802_start_dma(struct cx8802_dev *dev, ...@@ -78,6 +78,11 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD: case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD:
cx_write(TS_SOP_STAT, 1<<13); cx_write(TS_SOP_STAT, 1<<13);
break; 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: default:
cx_write(TS_SOP_STAT, 0x00); cx_write(TS_SOP_STAT, 0x00);
break; break;
......
...@@ -179,6 +179,8 @@ extern struct sram_channel cx88_sram_channels[]; ...@@ -179,6 +179,8 @@ extern struct sram_channel cx88_sram_channels[];
#define CX88_BOARD_ATI_HDTVWONDER 34 #define CX88_BOARD_ATI_HDTVWONDER 34
#define CX88_BOARD_WINFAST_DTV1000 35 #define CX88_BOARD_WINFAST_DTV1000 35
#define CX88_BOARD_AVERTV_303 36 #define CX88_BOARD_AVERTV_303 36
#define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1 37
#define CX88_BOARD_HAUPPAUGE_NOVASE2_S1 38
enum cx88_itype { enum cx88_itype {
CX88_VMUX_COMPOSITE1 = 1, CX88_VMUX_COMPOSITE1 = 1,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment