aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/bt8xx/bttv-cards.c
diff options
context:
space:
mode:
authorTrent Piepho <xyzzy@speakeasy.org>2009-01-28 19:32:59 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:42:47 -0400
commit13afaefc0392d377d23ce5b7e1f4f3944a00e1f1 (patch)
treef5d333810d3620844d60786916f12fd20c077fba /drivers/media/video/bt8xx/bttv-cards.c
parent15f8eeb2a86b969d82bfca5d54f1fb30c35cf243 (diff)
V4L/DVB (10565): bttv: fix external mux for RemoteVision MX
Old versions of the bttv driver would use the high nibble of an input's muxsel value to program the GPIO lines enabled via gpiomask2. Apparently this was supposed to be for switching external audio muxes. Anyway, the code that did this was removed sometime in the pre-git 2.6 series. The RemoteVision MX board used this feature to control an external video mux and I guess no one noticed when they removed the code. Move the extra gpio mux data out of the high nibble of muxsel and to rv605_muxsel(), then have that function set the gpio lines with it. From looking at the CD22M3494E datasheet, it seems like the mdelay(1) is a much longer delay than necessary. It looks like only around 20 ns is necessary. Cc: Miguel Freitas <miguel@cetuc.puc-rio.br> Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/bt8xx/bttv-cards.c')
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index 2832bafa3695..df4d7752eb77 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -1516,8 +1516,7 @@ struct tvcard bttv_tvcards[] = {
1516 .svhs = NO_SVHS, 1516 .svhs = NO_SVHS,
1517 .gpiomask = 0x00, 1517 .gpiomask = 0x00,
1518 .gpiomask2 = 0x07ff, 1518 .gpiomask2 = 0x07ff,
1519 .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, 1519 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
1520 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
1521 .no_msp34xx = 1, 1520 .no_msp34xx = 1,
1522 .no_tda9875 = 1, 1521 .no_tda9875 = 1,
1523 .tuner_type = TUNER_ABSENT, 1522 .tuner_type = TUNER_ABSENT,
@@ -4178,6 +4177,11 @@ void tea5757_set_freq(struct bttv *btv, unsigned short freq)
4178 */ 4177 */
4179static void rv605_muxsel(struct bttv *btv, unsigned int input) 4178static void rv605_muxsel(struct bttv *btv, unsigned int input)
4180{ 4179{
4180 static const u8 muxgpio[] = { 0x3, 0x1, 0x2, 0x4, 0xf, 0x7, 0xe, 0x0,
4181 0xd, 0xb, 0xc, 0x6, 0x9, 0x5, 0x8, 0xa };
4182
4183 gpio_bits(0x07f, muxgpio[input]);
4184
4181 /* reset all conections */ 4185 /* reset all conections */
4182 gpio_bits(0x200,0x200); 4186 gpio_bits(0x200,0x200);
4183 mdelay(1); 4187 mdelay(1);
@@ -4185,7 +4189,6 @@ static void rv605_muxsel(struct bttv *btv, unsigned int input)
4185 mdelay(1); 4189 mdelay(1);
4186 4190
4187 /* create a new connection */ 4191 /* create a new connection */
4188 gpio_bits(0x480,0x080);
4189 gpio_bits(0x480,0x480); 4192 gpio_bits(0x480,0x480);
4190 mdelay(1); 4193 mdelay(1);
4191 gpio_bits(0x480,0x080); 4194 gpio_bits(0x480,0x080);