Re: bttv & TRUST 814 PCI 4-inputs card

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




Hello,

 > does anybody have the TRUST 814 PCI [4-inputs x 1-chip] card working
 > with the bttv driver?

looking at the pictures on the Trust website this card seems to be
identical to the "Grandtec X-Guard" card i bought some weeks ago:

http://io.ram.rwth-aachen.de/xguard.jpg

This card uses two dual-4-input-video multiplexers that are controlled
by the vision878's gpio pins. That way up to 16 inputs are connected to
the 4 inputs of the vison878. I have sent the modifications to the bttv
driver necessary to make the card work to Gerd, but got no response yet.
However, the modifications are quite simple. I have attached the patch
for bttv-0.7.105. It works fine for me. Please let me know if it works
for you card, too!

Tschuess

Markus

--
Markus Lichtenstein
diff --unified --recursive --new-file bttv-0.7.105/driver/bttv-cards.c bttv-0.7.105-sauber/driver/bttv-cards.c
--- bttv-0.7.105/driver/bttv-cards.c	2003-02-14 11:43:36.000000000 +0100
+++ bttv-0.7.105-sauber/driver/bttv-cards.c	2003-03-07 13:19:22.000000000 +0100
@@ -61,6 +61,7 @@
 static void adtvk503_audio(struct bttv *btv, struct video_audio *v, int set);
 static void rv605_muxsel(struct bttv *btv, unsigned int input);
 static void eagle_muxsel(struct bttv *btv, unsigned int input);
+static void xguard_muxsel(struct bttv *btv, unsigned int input);
 
 static int terratec_active_radio_upgrade(struct bttv *btv);
 static int tea5757_read(struct bttv *btv);
@@ -216,6 +217,8 @@
 	{ 0x1466aa06, BTTV_PV150,         "Provideo PV150B-3" },
 	{ 0x1467aa07, BTTV_PV150,         "Provideo PV150B-4" },
 
+        { 0x01020304, BTTV_XGUARD,        "Grandtec Grand X-Guard" },
+
 	// likely broken, vendor id doesn't match the other magic views ...
 	//{ 0xa0fca04f, BTTV_MAGICTVIEW063, "Guillemot Maxi TV Video 3" },
 
@@ -1628,7 +1631,35 @@
 	.pll            = PLL_28,
 	.tuner_type     = 2,
 	.audio_hook	= adtvk503_audio,
-}};
+}
+,
+{
+        .name           = "Grand X-Guard",
+        .video_inputs   = 16,
+        .audio_inputs   = 0,
+        .tuner          = -1,
+        .svhs           = -1,
+  // heisst das, dass die Audio-Initialisierung die Finger davon
+  // laesst?:
+        .gpiomask       = 0x00,
+  // und das, dass ich auf die unteren 8bit schreiben kann?:
+        .gpiomask2      = 0xff,
+  // die ersten 4 Eingaenge haengen am MUX0, die zweiten an MUX1 usw.
+        .muxsel         = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
+        .muxsel_hook    = xguard_muxsel,
+  // bekommt man die Tuner- und Audio-Geschichten irgendwie
+  // einfacher ganz abgeschaltet?
+        .needs_tvaudio  = 0,
+        .no_msp34xx     = 1,
+        .no_tda9875     = 1,
+        .no_tda7432     = 1,
+        .pll            = PLL_28,
+        .tuner_type     = 4,
+}
+
+
+
+};
 
 const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
 
@@ -1930,6 +1961,89 @@
        btor(LM1882_SYNC_DRIVE, BT848_GPIO_DATA);
 }
 
+
+static void xguard_muxsel(struct bttv *btv, unsigned int input)
+{
+int mask;
+
+// The Grandtec X-Guard framegrabber card uses two Dual 4-channel
+// video multiplexers to provide up to 16 video inputs. These
+// multiplexers are controlled by the lower 8 GPIO pins of the
+// bt878. The multiplexers probably Pericom PI5V331Q or similar.
+
+// xxx0 is pin xxx of multiplexer U5,
+// yyy1 is pin yyy of multiplexer U2
+
+#define ENA0    0x01
+#define ENB0    0x02
+#define ENA1    0x04
+#define ENB1    0x08
+
+#define IN10    0x10
+#define IN00    0x20
+#define IN11    0x40
+#define IN01    0x80
+
+  switch(input) {
+        case 0:
+                mask=(ENB0);
+                break;
+        case 1:
+                mask=(ENB0|IN00);
+                break;
+        case 2:
+                mask=(ENB0|IN10);
+                break;
+        case 3:
+                mask=(ENB0|IN00|IN10);
+                break;
+
+        case 4:
+                mask=(ENA0);
+                break;
+        case 5:
+                mask=(ENA0|IN00);
+                break;
+        case 6:
+                mask=(ENA0|IN10);
+                break;
+        case 7:
+                mask=(ENA0|IN00|IN10);
+                break;
+
+        case 8:
+                mask=(ENB1);
+                break;
+        case 9:
+                mask=(ENB1|IN01);
+                break;
+        case 10:
+                mask=(ENB1|IN11);
+                break;
+        case 11:
+                mask=(ENB1|IN01|IN11);
+                break;
+
+        case 12:
+                mask=(ENA1);
+                break;
+        case 13:
+                mask=(ENA1|IN01);
+                break;
+        case 14:
+                mask=(ENA1|IN11);
+                break;
+        case 15:
+                mask=(ENA1|IN01|IN11);
+                break;
+                }
+//  printk("bttv%d: xguard_muxsel: mask %d\n",btv->nr,mask);
+        btwrite(mask, BT848_GPIO_DATA);
+}
+
+
+
+
 /* ----------------------------------------------------------------------- */
 
 /* initialization part one -- before registering i2c bus */
diff --unified --recursive --new-file bttv-0.7.105/driver/bttv.h bttv-0.7.105-sauber/driver/bttv.h
--- bttv-0.7.105/driver/bttv.h	2003-02-04 16:14:27.000000000 +0100
+++ bttv-0.7.105-sauber/driver/bttv.h	2003-03-07 13:14:19.000000000 +0100
@@ -110,6 +110,7 @@
 #define BTTV_EURESYS_PICOLO 0x61
 #define BTTV_PV150          0x62
 #define BTTV_AD_TVK503      0x63
+#define BTTV_XGUARD         0x64
 
 /* i2c address list */
 #define I2C_TSA5522        0xc2

[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux