diff options
-rw-r--r-- | linux/drivers/media/video/bttv-cards.c | 63 | ||||
-rw-r--r-- | linux/drivers/media/video/bttv-driver.c | 6 | ||||
-rw-r--r-- | linux/drivers/media/video/bttv.h | 3 | ||||
-rw-r--r-- | linux/drivers/media/video/cx88/cx88-tvaudio.c | 4 | ||||
-rw-r--r-- | linux/drivers/media/video/saa7134/saa7134-tvaudio.c | 9 | ||||
-rw-r--r-- | v4l/scripts/update | 2 |
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 |