diff options
author | Steven Toth <stoth@hauppauge.com> | 2006-01-09 12:25:17 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-09 12:25:17 -0500 |
commit | 0345c387de72b5d7fbfeda9d92818fa7013a6d1c (patch) | |
tree | 2d1b8277b7c5989aa1c8f75fa25f51f881c7a4ae | |
parent | 2304759d7e5debbd400eca6e9bb979a186c798a9 (diff) |
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>
-rw-r--r-- | drivers/media/video/cx88/cx88-blackbird.c | 12 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 6 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-tvaudio.c | 6 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 3 |
4 files changed, 24 insertions, 3 deletions
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c index 74e57a53116f..99bfa3238294 100644 --- a/drivers/media/video/cx88/cx88-blackbird.c +++ b/drivers/media/video/cx88/cx88-blackbird.c | |||
@@ -1689,6 +1689,18 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev, | |||
1689 | memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params)); | 1689 | memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params)); |
1690 | memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params)); | 1690 | memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params)); |
1691 | 1691 | ||
1692 | if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN) { | ||
1693 | |||
1694 | if (core->tuner_formats & V4L2_STD_525_60) { | ||
1695 | dev->height = 480; | ||
1696 | dev->params.vi_frame_rate = 30; | ||
1697 | } else { | ||
1698 | dev->height = 576; | ||
1699 | dev->params.vi_frame_rate = 25; | ||
1700 | } | ||
1701 | |||
1702 | } | ||
1703 | |||
1692 | err = cx8802_init_common(dev); | 1704 | err = cx8802_init_common(dev); |
1693 | if (0 != err) | 1705 | if (0 != err) |
1694 | goto fail_free; | 1706 | goto fail_free; |
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index c95438abcd7b..c20c07117537 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -611,12 +611,12 @@ struct cx88_board cx88_boards[] = { | |||
611 | .input = {{ | 611 | .input = {{ |
612 | .type = CX88_VMUX_TELEVISION, | 612 | .type = CX88_VMUX_TELEVISION, |
613 | .vmux = 0, | 613 | .vmux = 0, |
614 | .gpio0 = 0xed12, /* internal decoder */ | 614 | .gpio0 = 0xed1a, |
615 | .gpio2 = 0x00ff, | 615 | .gpio2 = 0x00ff, |
616 | },{ | 616 | },{ |
617 | .type = CX88_VMUX_DEBUG, | 617 | .type = CX88_VMUX_DEBUG, |
618 | .vmux = 0, | 618 | .vmux = 0, |
619 | .gpio0 = 0xff01, /* mono from tuner chip */ | 619 | .gpio0 = 0xff01, |
620 | },{ | 620 | },{ |
621 | .type = CX88_VMUX_COMPOSITE1, | 621 | .type = CX88_VMUX_COMPOSITE1, |
622 | .vmux = 1, | 622 | .vmux = 1, |
@@ -1202,11 +1202,13 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data) | |||
1202 | 1202 | ||
1203 | tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); | 1203 | tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); |
1204 | core->tuner_type = tv.tuner_type; | 1204 | core->tuner_type = tv.tuner_type; |
1205 | core->tuner_formats = tv.tuner_formats; | ||
1205 | core->has_radio = tv.has_radio; | 1206 | core->has_radio = tv.has_radio; |
1206 | 1207 | ||
1207 | /* Make sure we support the board model */ | 1208 | /* Make sure we support the board model */ |
1208 | switch (tv.model) | 1209 | switch (tv.model) |
1209 | { | 1210 | { |
1211 | case 28552: /* WinTV-PVR 'Roslyn' (No IR) */ | ||
1210 | case 90002: /* Nova-T-PCI (9002) */ | 1212 | case 90002: /* Nova-T-PCI (9002) */ |
1211 | case 92001: /* Nova-S-Plus (Video and IR) */ | 1213 | case 92001: /* Nova-S-Plus (Video and IR) */ |
1212 | case 92002: /* Nova-S-Plus (Video and IR) */ | 1214 | case 92002: /* Nova-S-Plus (Video and IR) */ |
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c b/drivers/media/video/cx88/cx88-tvaudio.c index a1b120c8a9b5..00051a4c1dc2 100644 --- a/drivers/media/video/cx88/cx88-tvaudio.c +++ b/drivers/media/video/cx88/cx88-tvaudio.c | |||
@@ -139,7 +139,11 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl) | |||
139 | 139 | ||
140 | if (cx88_boards[core->board].blackbird) { | 140 | if (cx88_boards[core->board].blackbird) { |
141 | /* sets sound input from external adc */ | 141 | /* sets sound input from external adc */ |
142 | cx_set(AUD_CTL, EN_I2SIN_ENABLE); | 142 | if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN) |
143 | cx_clear(AUD_CTL, EN_I2SIN_ENABLE); | ||
144 | else | ||
145 | cx_set(AUD_CTL, EN_I2SIN_ENABLE); | ||
146 | |||
143 | cx_write(AUD_I2SINPUTCNTL, 4); | 147 | cx_write(AUD_I2SINPUTCNTL, 4); |
144 | cx_write(AUD_BAUDRATE, 1); | 148 | cx_write(AUD_BAUDRATE, 1); |
145 | /* 'pass-thru mode': this enables the i2s output to the mpeg encoder */ | 149 | /* 'pass-thru mode': this enables the i2s output to the mpeg encoder */ |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 3e2bcd241a27..0bbf68b325c4 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -285,6 +285,9 @@ struct cx88_core { | |||
285 | unsigned int tda9887_conf; | 285 | unsigned int tda9887_conf; |
286 | unsigned int has_radio; | 286 | unsigned int has_radio; |
287 | 287 | ||
288 | /* Supported V4L _STD_ tuner formats */ | ||
289 | unsigned int tuner_formats; | ||
290 | |||
288 | /* config info -- dvb */ | 291 | /* config info -- dvb */ |
289 | struct dvb_pll_desc *pll_desc; | 292 | struct dvb_pll_desc *pll_desc; |
290 | unsigned int pll_addr; | 293 | unsigned int pll_addr; |