summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/video/bttv-cards.c63
-rw-r--r--linux/drivers/media/video/bttv-driver.c6
-rw-r--r--linux/drivers/media/video/bttv.h3
-rw-r--r--linux/drivers/media/video/cx88/cx88-tvaudio.c4
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-tvaudio.c9
-rw-r--r--v4l/scripts/update2
6 files changed, 76 insertions, 11 deletions
diff --git a/linux/drivers/media/video/bttv-cards.c b/linux/drivers/media/video/bttv-cards.c
index b81d9d9d7..a074422df 100644
--- a/linux/drivers/media/video/bttv-cards.c
+++ b/linux/drivers/media/video/bttv-cards.c
@@ -1,5 +1,5 @@
/*
- $Id: bttv-cards.c,v 1.39 2004/12/14 15:33:29 kraxel Exp $
+ $Id: bttv-cards.c,v 1.40 2005/01/07 13:11:19 kraxel Exp $
bttv-cards.c
@@ -77,6 +77,9 @@ static void PXC200_muxsel(struct bttv *btv, unsigned int input);
static void picolo_tetra_muxsel(struct bttv *btv, unsigned int input);
static void picolo_tetra_init(struct bttv *btv);
+static void tibetCS16_muxsel(struct bttv *btv, unsigned int input);
+static void tibetCS16_init(struct bttv *btv);
+
static void sigmaSLC_muxsel(struct bttv *btv, unsigned int input);
static void sigmaSQ_muxsel(struct bttv *btv, unsigned int input);
@@ -2181,6 +2184,20 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x000001,0,0, 0},
.needs_tvaudio = 1,
.has_radio = 1,
+},{
+ /* Chris Fanning <video4linux@haydon.net> */
+ .name = "Tibet Systems 'Progress DVR' CS16",
+ .video_inputs = 16,
+ .audio_inputs = 0,
+ .tuner = -1,
+ .svhs = -1,
+ .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
+ .pll = PLL_28,
+ .no_msp34xx = 1,
+ .no_tda9875 = 1,
+ .no_tda7432 = 1,
+ .tuner_type = -1,
+ .muxsel_hook = tibetCS16_muxsel,
}};
static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
@@ -2670,6 +2687,9 @@ void __devinit bttv_init_card2(struct bttv *btv)
case BTTV_LMLBT4:
init_lmlbt4x(btv);
break;
+ case BTTV_TIBET_CS16:
+ tibetCS16_init(btv);
+ break;
}
/* pll configuration */
@@ -3926,6 +3946,47 @@ static void rv605_muxsel(struct bttv *btv, unsigned int input)
mdelay(1);
}
+/* Tibet Systems 'Progress DVR' CS16 muxsel helper [Chris Fanning]
+ *
+ * The CS16 (available on eBay cheap) is a PCI board with four Fusion
+ * 878A chips, a PCI bridge, an Atmel microcontroller, four sync seperator
+ * chips, ten eight input analog multiplexors, a not chip and a few
+ * other components.
+ *
+ * 16 inputs on a secondary bracket are provided and can be selected
+ * from each of the four capture chips. Two of the eight input
+ * multiplexors are used to select from any of the 16 input signals.
+ *
+ * Unsupported hardware capabilities:
+ * . A video output monitor on the secondary bracket can be selected from
+ * one of the 878A chips.
+ * . Another passthrough but I haven't spent any time investigating it.
+ * . Digital I/O (logic level connected to GPIO) is available from an
+ * onboard header.
+ *
+ * The on chip input mux should always be set to 2.
+ * GPIO[16:19] - Video input selection
+ * GPIO[0:3] - Video output monitor select (only available from one 878A)
+ * GPIO[?:?] - Digital I/O.
+ *
+ * There is an ATMEL microcontroller with an 8031 core on board. I have not
+ * determined what function (if any) it provides. With the microcontroller
+ * and sync seperator chips a guess is that it might have to do with video
+ * switching and maybe some digital I/O.
+ */
+static void tibetCS16_muxsel(struct bttv *btv, unsigned int input)
+{
+ /* video mux */
+ gpio_bits(0x0f0000, input << 16);
+}
+
+static void tibetCS16_init(struct bttv *btv)
+{
+ /* enable gpio bits, mask obtained via btSpy */
+ gpio_inout(0xffffff, 0x0f7fff);
+ gpio_write(0x0f7fff);
+}
+
// 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
diff --git a/linux/drivers/media/video/bttv-driver.c b/linux/drivers/media/video/bttv-driver.c
index 4ade7be29..7c9765702 100644
--- a/linux/drivers/media/video/bttv-driver.c
+++ b/linux/drivers/media/video/bttv-driver.c
@@ -1,5 +1,5 @@
/*
- $Id: bttv-driver.c,v 1.33 2004/12/17 14:18:49 kraxel Exp $
+ $Id: bttv-driver.c,v 1.34 2005/01/07 13:11:19 kraxel Exp $
bttv - Bt848 frame grabber driver
@@ -2540,9 +2540,11 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_VIDEO_OVERLAY |
V4L2_CAP_VBI_CAPTURE |
- V4L2_CAP_TUNER |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING;
+ if (bttv_tvcards[btv->c.type].tuner != UNSET &&
+ bttv_tvcards[btv->c.type].tuner != TUNER_ABSENT)
+ cap->capabilities |= V4L2_CAP_TUNER;
return 0;
}
diff --git a/linux/drivers/media/video/bttv.h b/linux/drivers/media/video/bttv.h
index bbb3633c3..a01d3bed1 100644
--- a/linux/drivers/media/video/bttv.h
+++ b/linux/drivers/media/video/bttv.h
@@ -1,5 +1,5 @@
/*
- * $Id: bttv.h,v 1.13 2005/01/04 12:40:03 kraxel Exp $
+ * $Id: bttv.h,v 1.14 2005/01/07 13:11:19 kraxel Exp $
*
* bttv - Bt848 frame grabber driver
*
@@ -133,6 +133,7 @@
#define BTTV_MATRIX_VISIONSLC 0x7e
#define BTTV_APAC_VIEWCOMP 0x7f
#define BTTV_DVICO_DVBT_LITE 0x80
+#define BTTV_TIBET_CS16 0x83
/* i2c address list */
#define I2C_TSA5522 0xc2
diff --git a/linux/drivers/media/video/cx88/cx88-tvaudio.c b/linux/drivers/media/video/cx88/cx88-tvaudio.c
index a9be4d041..4ce8ad4fb 100644
--- a/linux/drivers/media/video/cx88/cx88-tvaudio.c
+++ b/linux/drivers/media/video/cx88/cx88-tvaudio.c
@@ -1,5 +1,5 @@
/*
- $Id: cx88-tvaudio.c,v 1.26 2004/12/10 12:33:39 kraxel Exp $
+ $Id: cx88-tvaudio.c,v 1.27 2005/01/07 13:11:19 kraxel Exp $
cx88x-audio.c - Conexant CX23880/23881 audio downstream driver driver
@@ -647,7 +647,7 @@ void cx88_set_tvaudio(struct cx88_core *core)
case WW_BTSC:
set_audio_standard_BTSC(core,0);
break;
- // case WW_NICAM_I:
+// case WW_NICAM_I:
case WW_NICAM_BGDKL:
set_audio_standard_NICAM(core);
break;
diff --git a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
index 5a0bbb6ed..6f30e2dda 100644
--- a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
+++ b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
@@ -1,5 +1,5 @@
/*
- * $Id: saa7134-tvaudio.c,v 1.21 2004/12/10 12:33:39 kraxel Exp $
+ * $Id: saa7134-tvaudio.c,v 1.22 2005/01/07 13:11:19 kraxel Exp $
*
* device driver for philips saa7134 based TV cards
* tv audio decoder (fm stereo, nicam, ...)
@@ -439,15 +439,16 @@ static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
nicam = saa_readb(SAA7134_NICAM_STATUS);
dprintk("getstereo: nicam=0x%x\n",nicam);
switch (nicam & 0x0b) {
- case 0x08:
- retval = V4L2_TUNER_SUB_MONO;
- break;
case 0x09:
retval = V4L2_TUNER_SUB_LANG1 | V4L2_TUNER_SUB_LANG2;
break;
case 0x0a:
retval = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO;
break;
+ case 0x08:
+ default:
+ retval = V4L2_TUNER_SUB_MONO;
+ break;
}
break;
}
diff --git a/v4l/scripts/update b/v4l/scripts/update
index 8e5c3e5e0..75ac0b387 100644
--- a/v4l/scripts/update
+++ b/v4l/scripts/update
@@ -99,5 +99,5 @@ xinsmod saa7134-empress
xinsmod cx22702 debug=0
xinsmod mt352 debug=1
xinsmod video-buf-dvb
-xinsmod saa7134-dvb
xinsmod cx88-dvb
+xinsmod saa7134-dvb