mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 02:34:01 +08:00
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>
This commit is contained in:
parent
76e41e4851
commit
97275ac514
@ -148,3 +148,4 @@
|
||||
147 -> VoodooTV 200 (USA) [121a:3000]
|
||||
148 -> DViCO FusionHDTV 2 [dbc0:d200]
|
||||
149 -> Typhoon TV-Tuner PCI (50684)
|
||||
150 -> Geovision GV-600 [008a:763c]
|
||||
|
@ -71,6 +71,8 @@ static void kodicom4400r_init(struct bttv *btv);
|
||||
static void sigmaSLC_muxsel(struct bttv *btv, unsigned int input);
|
||||
static void sigmaSQ_muxsel(struct bttv *btv, unsigned int input);
|
||||
|
||||
static void geovision_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);
|
||||
@ -301,6 +303,7 @@ static struct CARD {
|
||||
{ 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" },
|
||||
{ 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "},
|
||||
{ 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" },
|
||||
{ 0x763c008a, BTTV_BOARD_GEOVISION_GV600, "GeoVision GV-600" },
|
||||
|
||||
{ 0, -1, NULL }
|
||||
};
|
||||
@ -2994,6 +2997,24 @@ struct tvcard bttv_tvcards[] = {
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
},
|
||||
[BTTV_BOARD_GEOVISION_GV600] = {
|
||||
/* emhn@usb.ve */
|
||||
.name = "Geovision GV-600",
|
||||
.video_inputs = 16,
|
||||
.audio_inputs = 0,
|
||||
.tuner = UNSET,
|
||||
.svhs = UNSET,
|
||||
.gpiomask = 0x0,
|
||||
.muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2 },
|
||||
.muxsel_hook = geovision_muxsel,
|
||||
.gpiomux = { 0 },
|
||||
.no_msp34xx = 1,
|
||||
.pll = PLL_28,
|
||||
.tuner_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
},
|
||||
};
|
||||
|
||||
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)
|
||||
gpio_bits( 3<<9, inmux<<9 );
|
||||
}
|
||||
|
||||
static void geovision_muxsel(struct bttv *btv, unsigned int input)
|
||||
{
|
||||
unsigned int inmux = input % 16;
|
||||
gpio_inout(0xf, 0xf);
|
||||
gpio_bits(0xf, inmux);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
static void bttv_reset_audio(struct bttv *btv)
|
||||
|
@ -173,6 +173,7 @@
|
||||
#define BTTV_BOARD_VOODOOTV_200 0x93
|
||||
#define BTTV_BOARD_DVICO_FUSIONHDTV_2 0x94
|
||||
#define BTTV_BOARD_TYPHOON_TVTUNERPCI 0x95
|
||||
#define BTTV_BOARD_GEOVISION_GV600 0x96
|
||||
|
||||
|
||||
/* more card-specific defines */
|
||||
|
Loading…
Reference in New Issue
Block a user