Commit 0345c387 authored by Steven Toth's avatar Steven Toth Committed by Mauro Carvalho Chehab

V4L/DVB (3112): Several fixes for Hauppauge Roselyn Design (blackbird)

- This patch adds eeprom awareness for the Roslyn. In effect, the
blackbird will query the tuner V4L2_STD_xxxx definitions to determine
whether it's connected to a NTSC or PAL tuner. Based on that, various
default values will change for blackbird encoding.
- Fixes back panel SVIDEO/COMPOSITE with audio, work properly.
- Fixes a problem with lip sync issues, due to bad framerate vs
audio rate assumptions.
- Fixed a problem with the GPIO configuration in cx88-cards.
- Removed the comments in cx88-cards that made no sense.
Signed-off-by: default avatarSteven Toth <stoth@hauppauge.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
parent 2304759d
...@@ -1689,6 +1689,18 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev, ...@@ -1689,6 +1689,18 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev,
memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params)); memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params));
memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params)); memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params));
if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN) {
if (core->tuner_formats & V4L2_STD_525_60) {
dev->height = 480;
dev->params.vi_frame_rate = 30;
} else {
dev->height = 576;
dev->params.vi_frame_rate = 25;
}
}
err = cx8802_init_common(dev); err = cx8802_init_common(dev);
if (0 != err) if (0 != err)
goto fail_free; goto fail_free;
......
...@@ -611,12 +611,12 @@ struct cx88_board cx88_boards[] = { ...@@ -611,12 +611,12 @@ struct cx88_board cx88_boards[] = {
.input = {{ .input = {{
.type = CX88_VMUX_TELEVISION, .type = CX88_VMUX_TELEVISION,
.vmux = 0, .vmux = 0,
.gpio0 = 0xed12, /* internal decoder */ .gpio0 = 0xed1a,
.gpio2 = 0x00ff, .gpio2 = 0x00ff,
},{ },{
.type = CX88_VMUX_DEBUG, .type = CX88_VMUX_DEBUG,
.vmux = 0, .vmux = 0,
.gpio0 = 0xff01, /* mono from tuner chip */ .gpio0 = 0xff01,
},{ },{
.type = CX88_VMUX_COMPOSITE1, .type = CX88_VMUX_COMPOSITE1,
.vmux = 1, .vmux = 1,
...@@ -1202,11 +1202,13 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data) ...@@ -1202,11 +1202,13 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data);
core->tuner_type = tv.tuner_type; core->tuner_type = tv.tuner_type;
core->tuner_formats = tv.tuner_formats;
core->has_radio = tv.has_radio; core->has_radio = tv.has_radio;
/* Make sure we support the board model */ /* Make sure we support the board model */
switch (tv.model) switch (tv.model)
{ {
case 28552: /* WinTV-PVR 'Roslyn' (No IR) */
case 90002: /* Nova-T-PCI (9002) */ case 90002: /* Nova-T-PCI (9002) */
case 92001: /* Nova-S-Plus (Video and IR) */ case 92001: /* Nova-S-Plus (Video and IR) */
case 92002: /* Nova-S-Plus (Video and IR) */ case 92002: /* Nova-S-Plus (Video and IR) */
......
...@@ -139,7 +139,11 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl) ...@@ -139,7 +139,11 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl)
if (cx88_boards[core->board].blackbird) { if (cx88_boards[core->board].blackbird) {
/* sets sound input from external adc */ /* sets sound input from external adc */
if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN)
cx_clear(AUD_CTL, EN_I2SIN_ENABLE);
else
cx_set(AUD_CTL, EN_I2SIN_ENABLE); cx_set(AUD_CTL, EN_I2SIN_ENABLE);
cx_write(AUD_I2SINPUTCNTL, 4); cx_write(AUD_I2SINPUTCNTL, 4);
cx_write(AUD_BAUDRATE, 1); cx_write(AUD_BAUDRATE, 1);
/* 'pass-thru mode': this enables the i2s output to the mpeg encoder */ /* 'pass-thru mode': this enables the i2s output to the mpeg encoder */
......
...@@ -285,6 +285,9 @@ struct cx88_core { ...@@ -285,6 +285,9 @@ struct cx88_core {
unsigned int tda9887_conf; unsigned int tda9887_conf;
unsigned int has_radio; unsigned int has_radio;
/* Supported V4L _STD_ tuner formats */
unsigned int tuner_formats;
/* config info -- dvb */ /* config info -- dvb */
struct dvb_pll_desc *pll_desc; struct dvb_pll_desc *pll_desc;
unsigned int pll_addr; unsigned int pll_addr;
......
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