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: Steven Toth <stoth@hauppauge.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
2304759d7e
commit
0345c387de
@@ -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[] = {
|
|||||||
.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)
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
if (cx88_boards[core->board].blackbird) {
|
if (cx88_boards[core->board].blackbird) {
|
||||||
/* sets sound input from external adc */
|
/* sets sound input from external adc */
|
||||||
cx_set(AUD_CTL, EN_I2SIN_ENABLE);
|
if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN)
|
||||||
|
cx_clear(AUD_CTL, EN_I2SIN_ENABLE);
|
||||||
|
else
|
||||||
|
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 {
|
|||||||
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;
|
||||||
|
Reference in New Issue
Block a user