]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/video/bt8xx/bttv-cards.c
V4L/DVB (10564): bttv: fix external mux for PHYTEC VD-009
[mv-sheeva.git] / drivers / media / video / bt8xx / bttv-cards.c
index d055c2770469a18ce6eb0795838727039ea161de..2832bafa3695b4bdd5e8c012ff73449eb98f8b02 100644 (file)
@@ -73,6 +73,8 @@ static void sigmaSQ_muxsel(struct bttv *btv, unsigned int input);
 
 static void geovision_muxsel(struct bttv *btv, unsigned int input);
 
+static void phytec_muxsel(struct bttv *btv, unsigned int input);
+
 static int terratec_active_radio_upgrade(struct bttv *btv);
 static int tea5757_read(struct bttv *btv);
 static int tea5757_write(struct bttv *btv, int value);
@@ -2054,10 +2056,9 @@ struct tvcard bttv_tvcards[] = {
                /* .audio_inputs= 0, */
                .svhs           = 9,
                .gpiomask       = 0x00,
-               .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
-                                       via the upper nibble of muxsel. here: used for
-                                       xternal video-mux */
-               .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 },
+               .gpiomask2      = 0x03, /* used for external vodeo mux */
+               .muxsel         = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 0 },
+               .muxsel_hook    = phytec_muxsel,
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
@@ -2070,10 +2071,9 @@ struct tvcard bttv_tvcards[] = {
                /* .audio_inputs= 0, */
                .svhs           = 9,
                .gpiomask       = 0x00,
-               .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
-                                       via the upper nibble of muxsel. here: used for
-                                       xternal video-mux */
-               .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 },
+               .gpiomask2      = 0x03, /* used for external vodeo mux */
+               .muxsel         = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 1 },
+               .muxsel_hook    = phytec_muxsel,
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
@@ -4528,6 +4528,16 @@ static void PXC200_muxsel(struct bttv *btv, unsigned int input)
        printk(KERN_DEBUG "bttv%d: setting input channel to:%d\n", btv->c.nr,(int)mux);
 }
 
+static void phytec_muxsel(struct bttv *btv, unsigned int input)
+{
+       unsigned int mux = input % 4;
+
+       if (input == btv->svhs)
+               mux = 0;
+
+       gpio_bits(0x3, mux);
+}
+
 /* ----------------------------------------------------------------------- */
 /* motherboard chipset specific stuff                                      */