diff options
author | Ernesto Hernández-Novich <emhn@usb.ve> | 2008-04-22 13:45:58 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:07:51 -0400 |
commit | 97275ac514c7f1131f42f8b06e073b144c744e78 (patch) | |
tree | 5f79cdd6007b2b131152c1c7f7ae5ca79aa23698 /drivers | |
parent | 76e41e4851e0c8b642e348d8489d7645b8dae21e (diff) |
V4L/DVB (7366): Support for a 16-channel bt878 card
I have what looks like a Geovision GV-600 (or 650) card. It has a large
chip in the middle labeled
CONEXANT
FUSION 878A
25878-13
E345881.1
0312 TAIWAN
It has an audio connector coming out from a chip labeled
ATMEL
0242
AT89C2051-24PI
It is identified as follows on my Debian GNU/Linux Etch (kernel 2.6.18)
...
01:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
01:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
...
01:0a.0 0400: 109e:036e (rev 11)
Subsystem: 008a:763c
Flags: bus master, medium devsel, latency 64, IRQ 58
Memory at dfffe000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data
Capabilities: [4c] Power Management version 2
01:0a.1 0480: 109e:0878 (rev 11)
Subsystem: 008a:763c
Flags: bus master, medium devsel, latency 64, IRQ 58
Memory at dffff000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data
Capabilities: [4c] Power Management version 2
It was being detected as a GENERIC UNKNOWN CARD both by the 2.6.18
kernel and the latest v4l-dvb drivers, but it did not work at all. The
card has sixteen (16) BNC video inputs, four of them on the board itself
and twelve on three daughter-cards. It has a single bt878 chip, no tuner
and what looks like and audio input. After doing some research I managed
to get only eight channels working by forcing card=125 and those DID NOT
match channels 0-7 on the card, and no audio.
Based on what was working for card=125, I added the card definition
block, added a specific muxsel routine and got the card working fully
with xawtv, where the sixteen channels show up as Composite0 to
Composite15, matching the channel labels in the card and daughter-cards.
I have made no efforts yet to get audio working, but would appreciate
any pointers.
Signed-off-by: Ernesto Hernández-Novich <emhn@usb.ve>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/bt8xx/bttv-cards.c | 28 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv.h | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c index b963bde97412..417dd552dba9 100644 --- a/drivers/media/video/bt8xx/bttv-cards.c +++ b/drivers/media/video/bt8xx/bttv-cards.c | |||
@@ -71,6 +71,8 @@ static void kodicom4400r_init(struct bttv *btv); | |||
71 | static void sigmaSLC_muxsel(struct bttv *btv, unsigned int input); | 71 | static void sigmaSLC_muxsel(struct bttv *btv, unsigned int input); |
72 | static void sigmaSQ_muxsel(struct bttv *btv, unsigned int input); | 72 | static void sigmaSQ_muxsel(struct bttv *btv, unsigned int input); |
73 | 73 | ||
74 | static void geovision_muxsel(struct bttv *btv, unsigned int input); | ||
75 | |||
74 | static int terratec_active_radio_upgrade(struct bttv *btv); | 76 | static int terratec_active_radio_upgrade(struct bttv *btv); |
75 | static int tea5757_read(struct bttv *btv); | 77 | static int tea5757_read(struct bttv *btv); |
76 | static int tea5757_write(struct bttv *btv, int value); | 78 | static int tea5757_write(struct bttv *btv, int value); |
@@ -301,6 +303,7 @@ static struct CARD { | |||
301 | { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" }, | 303 | { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" }, |
302 | { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "}, | 304 | { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "}, |
303 | { 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" }, | 305 | { 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" }, |
306 | { 0x763c008a, BTTV_BOARD_GEOVISION_GV600, "GeoVision GV-600" }, | ||
304 | 307 | ||
305 | { 0, -1, NULL } | 308 | { 0, -1, NULL } |
306 | }; | 309 | }; |
@@ -2994,6 +2997,24 @@ struct tvcard bttv_tvcards[] = { | |||
2994 | .tuner_addr = ADDR_UNSET, | 2997 | .tuner_addr = ADDR_UNSET, |
2995 | .radio_addr = ADDR_UNSET, | 2998 | .radio_addr = ADDR_UNSET, |
2996 | }, | 2999 | }, |
3000 | [BTTV_BOARD_GEOVISION_GV600] = { | ||
3001 | /* emhn@usb.ve */ | ||
3002 | .name = "Geovision GV-600", | ||
3003 | .video_inputs = 16, | ||
3004 | .audio_inputs = 0, | ||
3005 | .tuner = UNSET, | ||
3006 | .svhs = UNSET, | ||
3007 | .gpiomask = 0x0, | ||
3008 | .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, | ||
3009 | 2, 2, 2, 2, 2, 2, 2, 2 }, | ||
3010 | .muxsel_hook = geovision_muxsel, | ||
3011 | .gpiomux = { 0 }, | ||
3012 | .no_msp34xx = 1, | ||
3013 | .pll = PLL_28, | ||
3014 | .tuner_type = UNSET, | ||
3015 | .tuner_addr = ADDR_UNSET, | ||
3016 | .radio_addr = ADDR_UNSET, | ||
3017 | }, | ||
2997 | }; | 3018 | }; |
2998 | 3019 | ||
2999 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); | 3020 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); |
@@ -3333,6 +3354,13 @@ static void sigmaSLC_muxsel(struct bttv *btv, unsigned int input) | |||
3333 | gpio_bits( 3<<9, inmux<<9 ); | 3354 | gpio_bits( 3<<9, inmux<<9 ); |
3334 | } | 3355 | } |
3335 | 3356 | ||
3357 | static void geovision_muxsel(struct bttv *btv, unsigned int input) | ||
3358 | { | ||
3359 | unsigned int inmux = input % 16; | ||
3360 | gpio_inout(0xf, 0xf); | ||
3361 | gpio_bits(0xf, inmux); | ||
3362 | } | ||
3363 | |||
3336 | /* ----------------------------------------------------------------------- */ | 3364 | /* ----------------------------------------------------------------------- */ |
3337 | 3365 | ||
3338 | static void bttv_reset_audio(struct bttv *btv) | 3366 | static void bttv_reset_audio(struct bttv *btv) |
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h index bf4c339a520c..ed0cd3b1a01e 100644 --- a/drivers/media/video/bt8xx/bttv.h +++ b/drivers/media/video/bt8xx/bttv.h | |||
@@ -173,6 +173,7 @@ | |||
173 | #define BTTV_BOARD_VOODOOTV_200 0x93 | 173 | #define BTTV_BOARD_VOODOOTV_200 0x93 |
174 | #define BTTV_BOARD_DVICO_FUSIONHDTV_2 0x94 | 174 | #define BTTV_BOARD_DVICO_FUSIONHDTV_2 0x94 |
175 | #define BTTV_BOARD_TYPHOON_TVTUNERPCI 0x95 | 175 | #define BTTV_BOARD_TYPHOON_TVTUNERPCI 0x95 |
176 | #define BTTV_BOARD_GEOVISION_GV600 0x96 | ||
176 | 177 | ||
177 | 178 | ||
178 | /* more card-specific defines */ | 179 | /* more card-specific defines */ |