Commit 13afaefc authored by Trent Piepho's avatar Trent Piepho Committed by Mauro Carvalho Chehab

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: default avatarTrent Piepho <xyzzy@speakeasy.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 15f8eeb2
...@@ -1516,8 +1516,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1516,8 +1516,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = NO_SVHS, .svhs = NO_SVHS,
.gpiomask = 0x00, .gpiomask = 0x00,
.gpiomask2 = 0x07ff, .gpiomask2 = 0x07ff,
.muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.tuner_type = TUNER_ABSENT, .tuner_type = TUNER_ABSENT,
...@@ -4178,6 +4177,11 @@ void tea5757_set_freq(struct bttv *btv, unsigned short freq) ...@@ -4178,6 +4177,11 @@ void tea5757_set_freq(struct bttv *btv, unsigned short freq)
*/ */
static void rv605_muxsel(struct bttv *btv, unsigned int input) static void rv605_muxsel(struct bttv *btv, unsigned int input)
{ {
static const u8 muxgpio[] = { 0x3, 0x1, 0x2, 0x4, 0xf, 0x7, 0xe, 0x0,
0xd, 0xb, 0xc, 0x6, 0x9, 0x5, 0x8, 0xa };
gpio_bits(0x07f, muxgpio[input]);
/* reset all conections */ /* reset all conections */
gpio_bits(0x200,0x200); gpio_bits(0x200,0x200);
mdelay(1); mdelay(1);
...@@ -4185,7 +4189,6 @@ static void rv605_muxsel(struct bttv *btv, unsigned int input) ...@@ -4185,7 +4189,6 @@ static void rv605_muxsel(struct bttv *btv, unsigned int input)
mdelay(1); mdelay(1);
/* create a new connection */ /* create a new connection */
gpio_bits(0x480,0x080);
gpio_bits(0x480,0x480); gpio_bits(0x480,0x480);
mdelay(1); mdelay(1);
gpio_bits(0x480,0x080); gpio_bits(0x480,0x080);
......
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