Commit 71029f06 authored by Art Haas's avatar Art Haas Committed by Linus Torvalds

[PATCH] C99 initializers for drivers/media/video

parent 5331dd5f
......@@ -410,30 +410,30 @@ static void adv717x_dec_use(struct i2c_client *client)
/* ----------------------------------------------------------------------- */
static struct i2c_driver i2c_driver_adv7175 = {
name: "adv7175", /* name */
id: I2C_DRIVERID_ADV717x, /* ID */
flags: I2C_DF_NOTIFY, //I2C_ADV7175, I2C_ADV7175 + 3,
attach_adapter: adv717x_probe,
detach_client: adv717x_detach,
command: adv717x_command,
inc_use: &adv717x_inc_use,
dec_use: &adv717x_dec_use
.name = "adv7175", /* name */
.id = I2C_DRIVERID_ADV717x, /* ID */
.flags = I2C_DF_NOTIFY, //I2C_ADV7175, I2C_ADV7175 + 3,
.attach_adapter = adv717x_probe,
.detach_client = adv717x_detach,
.command = adv717x_command,
.inc_use = &adv717x_inc_use,
.dec_use = &adv717x_dec_use
};
static struct i2c_driver i2c_driver_adv7176 = {
name: "adv7176", /* name */
id: I2C_DRIVERID_ADV717x, /* ID */
flags: I2C_DF_NOTIFY, //I2C_ADV7176, I2C_ADV7176 + 3,
attach_adapter: adv717x_probe,
detach_client: adv717x_detach,
command: adv717x_command,
inc_use: &adv717x_inc_use,
dec_use: &adv717x_dec_use
.name = "adv7176", /* name */
.id = I2C_DRIVERID_ADV717x, /* ID */
.flags = I2C_DF_NOTIFY, //I2C_ADV7176, I2C_ADV7176 + 3,
.attach_adapter = adv717x_probe,
.detach_client = adv717x_detach,
.command = adv717x_command,
.inc_use = &adv717x_inc_use,
.dec_use = &adv717x_dec_use
};
static struct i2c_client client_template = {
name: "adv7175_client",
driver: &i2c_driver_adv7175
.name = "adv7175_client",
.driver = &i2c_driver_adv7175
};
static int adv717x_init(void)
......
......@@ -208,350 +208,350 @@ static struct CARD {
struct tvcard bttv_tvcards[] = {
{
/* ---- card 0x00 ---------------------------------- */
name: " *** UNKNOWN/GENERIC *** ",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
muxsel: { 2, 3, 1, 0},
tuner_type: -1,
},{
name: "MIRO PCTV",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: { 2, 0, 0, 0, 10},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "Hauppauge (bt848)",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 1, 2, 3, 4},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "STB, Gateway P/N 6000699 (bt848)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 3, 1, 1},
audiomux: { 4, 0, 2, 3, 1},
no_msp34xx: 1,
needs_tvaudio: 1,
tuner_type: TUNER_PHILIPS_NTSC,
pll: PLL_28,
has_radio: 1,
.name = " *** UNKNOWN/GENERIC *** ",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.muxsel = { 2, 3, 1, 0},
.tuner_type = -1,
},{
.name = "MIRO PCTV",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 2, 0, 0, 0, 10},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "Hauppauge (bt848)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "STB, Gateway P/N 6000699 (bt848)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 4, 0, 2, 3, 1},
.no_msp34xx = 1,
.needs_tvaudio = 1,
.tuner_type = TUNER_PHILIPS_NTSC,
.pll = PLL_28,
.has_radio = 1,
},{
/* ---- card 0x04 ---------------------------------- */
name: "Intel Create and Share PCI/ Smart Video Recorder III",
video_inputs: 4,
audio_inputs: 0,
tuner: -1,
svhs: 2,
gpiomask: 0,
muxsel: { 2, 3, 1, 1},
audiomux: { 0 },
needs_tvaudio: 0,
tuner_type: 4,
},{
name: "Diamond DTV2000",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 3,
muxsel: { 2, 3, 1, 0},
audiomux: { 0, 1, 0, 1, 3},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "AVerMedia TVPhone",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 3,
muxsel: { 2, 3, 1, 1},
gpiomask: 0x0f,
audiomux: { 0x0c, 0x04, 0x08, 0x04, 0},
.name = "Intel Create and Share PCI/ Smart Video Recorder III",
.video_inputs = 4,
.audio_inputs = 0,
.tuner = -1,
.svhs = 2,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0 },
.needs_tvaudio = 0,
.tuner_type = 4,
},{
.name = "Diamond DTV2000",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 3,
.muxsel = { 2, 3, 1, 0},
.audiomux = { 0, 1, 0, 1, 3},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "AVerMedia TVPhone",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 3,
.muxsel = { 2, 3, 1, 1},
.gpiomask = 0x0f,
.audiomux = { 0x0c, 0x04, 0x08, 0x04, 0},
/* 0x04 for some cards ?? */
needs_tvaudio: 1,
tuner_type: -1,
audio_hook: avermedia_tvphone_audio,
},{
name: "MATRIX-Vision MV-Delta",
video_inputs: 5,
audio_inputs: 1,
tuner: -1,
svhs: 3,
gpiomask: 0,
muxsel: { 2, 3, 1, 0, 0},
audiomux: {0 },
needs_tvaudio: 1,
tuner_type: -1,
.needs_tvaudio = 1,
.tuner_type = -1,
.audio_hook = avermedia_tvphone_audio,
},{
.name = "MATRIX-Vision MV-Delta",
.video_inputs = 5,
.audio_inputs = 1,
.tuner = -1,
.svhs = 3,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 0, 0},
.audiomux = {0 },
.needs_tvaudio = 1,
.tuner_type = -1,
},{
/* ---- card 0x08 ---------------------------------- */
name: "Lifeview FlyVideo II (Bt848) LR26",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xc00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0xc00, 0x800, 0x400, 0xc00, 0},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "IMS/IXmicro TurboTV",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 3,
muxsel: { 2, 3, 1, 1},
audiomux: { 1, 1, 2, 3, 0},
needs_tvaudio: 0,
pll: PLL_28,
tuner_type: TUNER_TEMIC_PAL,
},{
name: "Hauppauge (bt878)",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x0f, /* old: 7 */
muxsel: { 2, 0, 1, 1},
audiomux: { 0, 1, 2, 3, 4},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "MIRO PCTV pro",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x3014f,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x20001,0x10001, 0, 0,10},
needs_tvaudio: 1,
tuner_type: -1,
.name = "Lifeview FlyVideo II (Bt848) LR26",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xc00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0xc00, 0x800, 0x400, 0xc00, 0},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "IMS/IXmicro TurboTV",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 3,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 1, 1, 2, 3, 0},
.needs_tvaudio = 0,
.pll = PLL_28,
.tuner_type = TUNER_TEMIC_PAL,
},{
.name = "Hauppauge (bt878)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x0f, /* old: 7 */
.muxsel = { 2, 0, 1, 1},
.audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "MIRO PCTV pro",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x3014f,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x20001,0x10001, 0, 0,10},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
/* ---- card 0x0c ---------------------------------- */
name: "ADS Technologies Channel Surfer TV (bt848)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: { 13, 14, 11, 7, 0, 0},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "AVerMedia TVCapture 98",
video_inputs: 3,
audio_inputs: 4,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: { 13, 14, 11, 7, 0, 0},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL,
},{
name: "Aimslab Video Highway Xtreme (VHX)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 2, 1, 3, 4}, /* old: { 0, 1, 2, 3, 4} */
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Zoltrix TV-Max",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: {0 , 0, 1 , 0, 10},
needs_tvaudio: 1,
tuner_type: -1,
.name = "ADS Technologies Channel Surfer TV (bt848)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 13, 14, 11, 7, 0, 0},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "AVerMedia TVCapture 98",
.video_inputs = 3,
.audio_inputs = 4,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 13, 14, 11, 7, 0, 0},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL,
},{
.name = "Aimslab Video Highway Xtreme (VHX)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 2, 1, 3, 4}, /* old: { 0, 1, 2, 3, 4} */
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Zoltrix TV-Max",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = {0 , 0, 1 , 0, 10},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
/* ---- card 0x10 ---------------------------------- */
name: "Prolink Pixelview PlayTV (bt878)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x01fe00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x01c000, 0, 0x018000, 0x014000, 0x002000, 0 },
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Leadtek WinView 601",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x8300f8,
muxsel: { 2, 3, 1, 1,0},
audiomux: { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007},
needs_tvaudio: 1,
tuner_type: -1,
audio_hook: winview_audio,
has_radio: 1,
},{
name: "AVEC Intercapture",
video_inputs: 3,
audio_inputs: 2,
tuner: 0,
svhs: 2,
gpiomask: 0,
muxsel: {2, 3, 1, 1},
audiomux: {1, 0, 0, 0, 0},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
video_inputs: 4,
audio_inputs: 1,
tuner: -1,
svhs: -1,
gpiomask: 0x8dff00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0 },
no_msp34xx: 1,
tuner_type: -1,
.name = "Prolink Pixelview PlayTV (bt878)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x01fe00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x01c000, 0, 0x018000, 0x014000, 0x002000, 0 },
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Leadtek WinView 601",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x8300f8,
.muxsel = { 2, 3, 1, 1,0},
.audiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007},
.needs_tvaudio = 1,
.tuner_type = -1,
.audio_hook = winview_audio,
.has_radio = 1,
},{
.name = "AVEC Intercapture",
.video_inputs = 3,
.audio_inputs = 2,
.tuner = 0,
.svhs = 2,
.gpiomask = 0,
.muxsel = {2, 3, 1, 1},
.audiomux = {1, 0, 0, 0, 0},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = -1,
.svhs = -1,
.gpiomask = 0x8dff00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0 },
.no_msp34xx = 1,
.tuner_type = -1,
},{
/* ---- card 0x14 ---------------------------------- */
name: "CEI Raffles Card",
video_inputs: 3,
audio_inputs: 3,
tuner: 0,
svhs: 2,
muxsel: {2, 3, 1, 1},
tuner_type: -1,
},{
name: "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
video_inputs: 4,
audio_inputs: 2, // tuner, line in
tuner: 0,
svhs: 2,
gpiomask: 0x1800,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x800, 0x1000, 0x1000, 0x1800},
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL_I,
},{
name: "Askey CPH050/ Phoebe Tv Master + FM",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xc00,
muxsel: { 2, 3, 1, 1},
audiomux: {0, 1, 0x800, 0x400, 0xc00, 0},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Modular Technology MM205 PCTV, bt878",
video_inputs: 2,
audio_inputs: 1,
tuner: 0,
svhs: -1,
gpiomask: 7,
muxsel: { 2, 3 },
audiomux: { 0, 0, 0, 0, 0 },
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_ALPS_TSBB5_PAL_I,
.name = "CEI Raffles Card",
.video_inputs = 3,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.muxsel = {2, 3, 1, 1},
.tuner_type = -1,
},{
.name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
.video_inputs = 4,
.audio_inputs = 2, // tuner, line in
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL_I,
},{
.name = "Askey CPH050/ Phoebe Tv Master + FM",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xc00,
.muxsel = { 2, 3, 1, 1},
.audiomux = {0, 1, 0x800, 0x400, 0xc00, 0},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Modular Technology MM205 PCTV, bt878",
.video_inputs = 2,
.audio_inputs = 1,
.tuner = 0,
.svhs = -1,
.gpiomask = 7,
.muxsel = { 2, 3 },
.audiomux = { 0, 0, 0, 0, 0 },
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_ALPS_TSBB5_PAL_I,
},{
/* ---- card 0x18 ---------------------------------- */
name: "Askey CPH05X/06X (bt878) [many vendors]",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xe00,
muxsel: { 2, 3, 1, 1},
audiomux: {0x400, 0x400, 0x400, 0x400, 0xc00},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x1f0fff,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x20000, 0x30000, 0x10000, 0, 0x40000},
needs_tvaudio: 0,
tuner_type: TUNER_PHILIPS_PAL,
audio_hook: terratv_audio,
},{
name: "Hauppauge WinCam newer (bt878)",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 3,
gpiomask: 7,
muxsel: { 2, 0, 1, 1},
audiomux: { 0, 1, 2, 3, 4},
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
video_inputs: 4,
audio_inputs: 2,
tuner: 0,
svhs: 2,
gpiomask: 0x1800,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x800, 0x1000, 0x1000, 0x1800},
pll: PLL_28,
tuner_type: TUNER_PHILIPS_SECAM,
.name = "Askey CPH05X/06X (bt878) [many vendors]",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xe00,
.muxsel = { 2, 3, 1, 1},
.audiomux = {0x400, 0x400, 0x400, 0x400, 0xc00},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1f0fff,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000},
.needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL,
.audio_hook = terratv_audio,
},{
.name = "Hauppauge WinCam newer (bt878)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 3,
.gpiomask = 7,
.muxsel = { 2, 0, 1, 1},
.audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
.video_inputs = 4,
.audio_inputs = 2,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_SECAM,
},{
/* ---- card 0x1c ---------------------------------- */
name: "Terratec TerraTV+ Version 1.1 (bt878)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x1f0fff,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000},
needs_tvaudio: 0,
tuner_type: TUNER_PHILIPS_PAL,
audio_hook: terratv_audio,
.name = "Terratec TerraTV+ Version 1.1 (bt878)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1f0fff,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000},
.needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL,
.audio_hook = terratv_audio,
/* GPIO wiring:
External 20 pin connector (for Active Radio Upgrade board)
gpio00: i2c-sda
......@@ -585,71 +585,71 @@ struct tvcard bttv_tvcards[] = {
},{
/* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */
name: "Imagenation PXC200",
video_inputs: 5,
audio_inputs: 1,
tuner: -1,
svhs: 1, /* was: 4 */
gpiomask: 0,
muxsel: { 2, 3, 1, 0, 0},
audiomux: { 0 },
needs_tvaudio: 1,
tuner_type: -1,
},{
name: "Lifeview FlyVideo 98 LR50",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x1800, //0x8dfe00
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 },
pll: PLL_28,
tuner_type: -1,
},{
name: "Formac iProTV",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 1,
muxsel: { 2, 3, 1, 1},
audiomux: { 1, 0, 0, 0, 0 },
tuner_type: -1,
.name = "Imagenation PXC200",
.video_inputs = 5,
.audio_inputs = 1,
.tuner = -1,
.svhs = 1, /* was: 4 */
.gpiomask = 0,
.muxsel = { 2, 3, 1, 0, 0},
.audiomux = { 0 },
.needs_tvaudio = 1,
.tuner_type = -1,
},{
.name = "Lifeview FlyVideo 98 LR50",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800, //0x8dfe00
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Formac iProTV",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 1,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 1, 0, 0, 0, 0 },
.tuner_type = -1,
},{
/* ---- card 0x20 ---------------------------------- */
name: "Intel Create and Share PCI/ Smart Video Recorder III",
video_inputs: 4,
audio_inputs: 0,
tuner: -1,
svhs: 2,
gpiomask: 0,
muxsel: { 2, 3, 1, 1},
audiomux: { 0 },
needs_tvaudio: 0,
tuner_type: 4,
},{
name: "Terratec TerraTValue Version Bt878",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xffff00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x500, 0, 0x300, 0x900, 0x900},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL,
},{
name: "Leadtek WinFast 2000/ WinFast 2000 XP",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xc33000,
muxsel: { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector
audiomux: { 0x422000,0x1000,0x0000,0x620000,0x800000},
.name = "Intel Create and Share PCI/ Smart Video Recorder III",
.video_inputs = 4,
.audio_inputs = 0,
.tuner = -1,
.svhs = 2,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0 },
.needs_tvaudio = 0,
.tuner_type = 4,
},{
.name = "Terratec TerraTValue Version Bt878",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xffff00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x500, 0, 0x300, 0x900, 0x900},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL,
},{
.name = "Leadtek WinFast 2000/ WinFast 2000 XP",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xc33000,
.muxsel = { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector
.audiomux = { 0x422000,0x1000,0x0000,0x620000,0x800000},
/* Audio Routing for "WinFast 2000 XP" (no tv stereo !)
gpio23 -- hef4052:nEnable (0x800000)
gpio12 -- hef4052:A1
......@@ -661,216 +661,216 @@ struct tvcard bttv_tvcards[] = {
Note: There exists another variant "Winfast 2000" with tv stereo !?
Note: eeprom only contains FF and pci subsystem id 107d:6606
*/
needs_tvaudio: 0,
pll: PLL_28,
has_radio: 1,
tuner_type: 5, // default for now, gpio reads BFFF06 for Pal bg+dk
audio_hook: winfast2000_audio,
},{
name: "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
video_inputs: 4,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 0x1800,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x800, 0x1000, 0x1000, 0x1800},
pll: PLL_28,
tuner_type: -1,
.needs_tvaudio = 0,
.pll = PLL_28,
.has_radio = 1,
.tuner_type = 5, // default for now, gpio reads BFFF06 for Pal bg+dk
.audio_hook = winfast2000_audio,
},{
.name = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
.video_inputs = 4,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28,
.tuner_type = -1,
},{
/* ---- card 0x24 ---------------------------------- */
name: "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
video_inputs: 4,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 0x1800,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
pll: PLL_28,
tuner_type: -1,
has_radio: 1,
},{
name: "Prolink PixelView PlayTV pro",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xff,
muxsel: { 2, 3, 1, 1 },
audiomux: { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
no_msp34xx: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Askey CPH06X TView99",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x551e00,
muxsel: { 2, 3, 1, 0},
audiomux: { 0x551400, 0x551200, 0, 0, 0x551c00, 0x551200 },
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Pinnacle PCTV Studio/Rave",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x03000F,
muxsel: { 2, 3, 1, 1},
audiomux: { 2, 0, 0, 0, 1},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
.name = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
.video_inputs = 4,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28,
.tuner_type = -1,
.has_radio = 1,
},{
.name = "Prolink PixelView PlayTV pro",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xff,
.muxsel = { 2, 3, 1, 1 },
.audiomux = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Askey CPH06X TView99",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x551e00,
.muxsel = { 2, 3, 1, 0},
.audiomux = { 0x551400, 0x551200, 0, 0, 0x551c00, 0x551200 },
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Pinnacle PCTV Studio/Rave",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x03000F,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 2, 0, 0, 0, 1},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
/* ---- card 0x28 ---------------------------------- */
name: "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 3, 1, 1},
audiomux: { 4, 0, 2, 3, 1},
no_msp34xx: 1,
needs_tvaudio: 1,
tuner_type: TUNER_PHILIPS_NTSC,
pll: PLL_28,
has_radio: 1,
},{
name: "AVerMedia TVPhone 98",
video_inputs: 3,
audio_inputs: 4,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: { 13, 4, 11, 7, 0, 0},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
has_radio: 1,
},{
name: "ProVideo PV951", /* pic16c54 */
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0, 0, 0, 0},
needs_tvaudio: 1,
no_msp34xx: 1,
pll: PLL_28,
tuner_type: 1,
},{
name: "Little OnAir TV",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xe00b,
muxsel: {2, 3, 1, 1},
audiomux: {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc},
no_msp34xx: 1,
tuner_type: -1,
.name = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 4, 0, 2, 3, 1},
.no_msp34xx = 1,
.needs_tvaudio = 1,
.tuner_type = TUNER_PHILIPS_NTSC,
.pll = PLL_28,
.has_radio = 1,
},{
.name = "AVerMedia TVPhone 98",
.video_inputs = 3,
.audio_inputs = 4,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 13, 4, 11, 7, 0, 0},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
.has_radio = 1,
},{
.name = "ProVideo PV951", /* pic16c54 */
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0, 0, 0, 0},
.needs_tvaudio = 1,
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = 1,
},{
.name = "Little OnAir TV",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xe00b,
.muxsel = {2, 3, 1, 1},
.audiomux = {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc},
.no_msp34xx = 1,
.tuner_type = -1,
},{
/* ---- card 0x2c ---------------------------------- */
name: "Sigma TVII-FM",
video_inputs: 2,
audio_inputs: 1,
tuner: 0,
svhs: -1,
gpiomask: 3,
muxsel: {2, 3, 1, 1},
audiomux: {1, 1, 0, 2, 3},
no_msp34xx: 1,
pll: PLL_NONE,
tuner_type: -1,
},{
name: "MATRIX-Vision MV-Delta 2",
video_inputs: 5,
audio_inputs: 1,
tuner: -1,
svhs: 3,
gpiomask: 0,
muxsel: { 2, 3, 1, 0, 0},
audiomux: {0 },
no_msp34xx: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Zoltrix Genie TV/FM",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xbcf03f,
muxsel: { 2, 3, 1, 1},
audiomux: { 0xbc803f, 0xbc903f, 0xbcb03f, 0, 0xbcb03f},
no_msp34xx: 1,
pll: PLL_28,
tuner_type: 21,
},{
name: "Terratec TV/Radio+",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x70000,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x20000, 0x30000, 0x10000, 0, 0x40000, 0x20000 },
needs_tvaudio: 1,
no_msp34xx: 1,
pll: PLL_35,
tuner_type: 1,
has_radio: 1,
.name = "Sigma TVII-FM",
.video_inputs = 2,
.audio_inputs = 1,
.tuner = 0,
.svhs = -1,
.gpiomask = 3,
.muxsel = {2, 3, 1, 1},
.audiomux = {1, 1, 0, 2, 3},
.no_msp34xx = 1,
.pll = PLL_NONE,
.tuner_type = -1,
},{
.name = "MATRIX-Vision MV-Delta 2",
.video_inputs = 5,
.audio_inputs = 1,
.tuner = -1,
.svhs = 3,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 0, 0},
.audiomux = {0 },
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Zoltrix Genie TV/FM",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xbcf03f,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0xbc803f, 0xbc903f, 0xbcb03f, 0, 0xbcb03f},
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = 21,
},{
.name = "Terratec TV/Radio+",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x70000,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000, 0x20000 },
.needs_tvaudio = 1,
.no_msp34xx = 1,
.pll = PLL_35,
.tuner_type = 1,
.has_radio = 1,
},{
/* ---- card 0x30 ---------------------------------- */
name: "Askey CPH03x/ Dynalink Magic TView",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: {2,0,0,0,1},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "IODATA GV-BCTV3/PCI",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x010f00,
muxsel: {2, 3, 0, 0},
audiomux: {0x10000, 0, 0x10000, 0, 0, 0},
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_ALPS_TSHC6_NTSC,
audio_hook: gvbctv3pci_audio,
},{
name: "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 3,
gpiomask: 0xAA0000,
muxsel: { 2,3,1,1 },
audiomux: { 0x20000, 0, 0x80000, 0x80000, 0xa8000, 0x46000 },
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL_I,
.name = "Askey CPH03x/ Dynalink Magic TView",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = {2,0,0,0,1},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "IODATA GV-BCTV3/PCI",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x010f00,
.muxsel = {2, 3, 0, 0},
.audiomux = {0x10000, 0, 0x10000, 0, 0, 0},
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_ALPS_TSHC6_NTSC,
.audio_hook = gvbctv3pci_audio,
},{
.name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 3,
.gpiomask = 0xAA0000,
.muxsel = { 2,3,1,1 },
.audiomux = { 0x20000, 0, 0x80000, 0x80000, 0xa8000, 0x46000 },
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL_I,
/* GPIO wiring: (different from Rev.4C !)
GPIO17: U4.A0 (first hef4052bt)
GPIO19: U4.A1
......@@ -881,28 +881,28 @@ struct tvcard bttv_tvcards[] = {
Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22
*/
},{
name: "Eagle Wireless Capricorn2 (bt878A)",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 0, 1, 1},
audiomux: { 0, 1, 2, 3, 4},
pll: PLL_28,
tuner_type: -1 /* TUNER_ALPS_TMDH2_NTSC */,
.name = "Eagle Wireless Capricorn2 (bt878A)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 0, 1, 1},
.audiomux = { 0, 1, 2, 3, 4},
.pll = PLL_28,
.tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */,
},{
/* ---- card 0x34 ---------------------------------- */
/* David Hrdeman <david@2gen.com> */
name: "Pinnacle PCTV Studio Pro",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x03000F,
muxsel: { 2, 3, 1, 1},
audiomux: { 1, 0x10001, 0, 0, 10},
.name = "Pinnacle PCTV Studio Pro",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x03000F,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 1, 0x10001, 0, 0, 10},
/* sound path (5 sources):
MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable)
0= ext. Audio IN
......@@ -912,273 +912,273 @@ struct tvcard bttv_tvcards[] = {
MUX2 (mask 0x30000):
0,2,3= from MSP34xx
1= FM stereo Radio from Tuner */
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
/* Claas Langbehn <claas@bigfoot.com>,
Sven Grothklags <sven@upb.de> */
name: "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
video_inputs: 3,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 0x1c,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0, 0x10, 8, 4 },
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL_I,
has_radio: 1,
.name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
.video_inputs = 3,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1c,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0, 0x10, 8, 4 },
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL_I,
.has_radio = 1,
},{
/* Tim Rstermundt <rosterm@uni-muenster.de>
in de.comp.os.unix.linux.hardware:
options bttv card=0 pll=1 radio=1 gpiomask=0x18e0
audiomux=0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
options tuner type=5 */
name: "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x18e0,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x0000,0x0800,0x1000,0x1000,0x18e0 },
.name = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x18e0,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x0000,0x0800,0x1000,0x1000,0x18e0 },
/* For cards with tda9820/tda9821:
0x0000: Tuner normal stereo
0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
0x0880: Tuner A2 stereo */
pll: PLL_28,
tuner_type: -1,
.pll = PLL_28,
.tuner_type = -1,
},{
/* Miguel Angel Alvarez <maacruz@navegalia.com>
old Easy TV BT848 version (model CPH031) */
name: "Askey CPH031/ BESTBUY Easy TV",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xF,
muxsel: { 2, 3, 1, 0},
audiomux: { 2, 0, 0, 0, 10},
needs_tvaudio: 0,
pll: PLL_28,
tuner_type: TUNER_TEMIC_PAL,
.name = "Askey CPH031/ BESTBUY Easy TV",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xF,
.muxsel = { 2, 3, 1, 0},
.audiomux = { 2, 0, 0, 0, 10},
.needs_tvaudio = 0,
.pll = PLL_28,
.tuner_type = TUNER_TEMIC_PAL,
},{
/* ---- card 0x38 ---------------------------------- */
/* Gordon Heydon <gjheydon@bigfoot.com ('98) */
name: "Lifeview FlyVideo 98FM LR50",
video_inputs: 4,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 0x1800,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
pll: PLL_28,
tuner_type: 5,
.name = "Lifeview FlyVideo 98FM LR50",
.video_inputs = 4,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1800,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28,
.tuner_type = 5,
},{
/* This is the ultimate cheapo capture card
* just a BT848A on a small PCB!
* Steve Hosgood <steve@equiinet.com> */
name: "GrandTec 'Grand Video Capture' (Bt848)",
video_inputs: 2,
audio_inputs: 0,
tuner: -1,
svhs: 1,
gpiomask: 0,
muxsel: { 3, 1 },
audiomux: { 0 },
needs_tvaudio: 0,
no_msp34xx: 1,
pll: PLL_35,
tuner_type: -1,
.name = "GrandTec 'Grand Video Capture' (Bt848)",
.video_inputs = 2,
.audio_inputs = 0,
.tuner = -1,
.svhs = 1,
.gpiomask = 0,
.muxsel = { 3, 1 },
.audiomux = { 0 },
.needs_tvaudio = 0,
.no_msp34xx = 1,
.pll = PLL_35,
.tuner_type = -1,
},{
/* Daniel Herrington <daniel.herrington@home.com> */
name: "Askey CPH060/ Phoebe TV Master Only (No FM)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xe00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 },
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: TUNER_TEMIC_4036FY5_NTSC,
.name = "Askey CPH060/ Phoebe TV Master Only (No FM)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xe00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 },
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_TEMIC_4036FY5_NTSC,
},{
/* Matti Mottus <mottus@physic.ut.ee> */
name: "Askey CPH03x TV Capturer",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x03000F,
muxsel: { 2, 3, 1, 0},
audiomux: { 2,0,0,0,1 },
pll: PLL_28,
tuner_type: 0,
.name = "Askey CPH03x TV Capturer",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x03000F,
.muxsel = { 2, 3, 1, 0},
.audiomux = { 2,0,0,0,1 },
.pll = PLL_28,
.tuner_type = 0,
},{
/* ---- card 0x3c ---------------------------------- */
/* Philip Blundell <philb@gnu.org> */
name: "Modular Technology MM100PCTV",
video_inputs: 2,
audio_inputs: 2,
tuner: 0,
svhs: -1,
gpiomask: 11,
muxsel: { 2, 3, 1, 1},
audiomux: { 2, 0, 0, 1, 8},
pll: PLL_35,
tuner_type: TUNER_TEMIC_PAL,
.name = "Modular Technology MM100PCTV",
.video_inputs = 2,
.audio_inputs = 2,
.tuner = 0,
.svhs = -1,
.gpiomask = 11,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 2, 0, 0, 1, 8},
.pll = PLL_35,
.tuner_type = TUNER_TEMIC_PAL,
},{
/* Adrian Cox <adrian@humboldt.co.uk */
name: "AG Electronics GMV1",
video_inputs: 2,
audio_inputs: 0,
tuner: -1,
svhs: 1,
gpiomask: 0xF,
muxsel: { 2, 2},
audiomux: { },
no_msp34xx: 1,
needs_tvaudio: 0,
pll: PLL_28,
tuner_type: -1,
.name = "AG Electronics GMV1",
.video_inputs = 2,
.audio_inputs = 0,
.tuner = -1,
.svhs = 1,
.gpiomask = 0xF,
.muxsel = { 2, 2},
.audiomux = { },
.no_msp34xx = 1,
.needs_tvaudio = 0,
.pll = PLL_28,
.tuner_type = -1,
},{
/* Miguel Angel Alvarez <maacruz@navegalia.com>
new Easy TV BT878 version (model CPH061)
special thanks to Informatica Mieres for providing the card */
name: "Askey CPH061/ BESTBUY Easy TV (bt878)",
video_inputs: 3,
audio_inputs: 2,
tuner: 0,
svhs: 2,
gpiomask: 0xFF,
muxsel: { 2, 3, 1, 0},
audiomux: { 1, 0, 4, 4, 9},
needs_tvaudio: 0,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL,
.name = "Askey CPH061/ BESTBUY Easy TV (bt878)",
.video_inputs = 3,
.audio_inputs = 2,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xFF,
.muxsel = { 2, 3, 1, 0},
.audiomux = { 1, 0, 4, 4, 9},
.needs_tvaudio = 0,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL,
},{
/* Lukas Gebauer <geby@volny.cz> */
name: "ATI TV-Wonder",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xf03f,
muxsel: { 2, 3, 1, 0 },
audiomux: { 0xbffe, 0, 0xbfff, 0, 0xbffe},
pll: PLL_28,
tuner_type: TUNER_TEMIC_4006FN5_MULTI_PAL,
.name = "ATI TV-Wonder",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xf03f,
.muxsel = { 2, 3, 1, 0 },
.audiomux = { 0xbffe, 0, 0xbfff, 0, 0xbffe},
.pll = PLL_28,
.tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
},{
/* ---- card 0x40 ---------------------------------- */
/* Lukas Gebauer <geby@volny.cz> */
name: "ATI TV-Wonder VE",
video_inputs: 2,
audio_inputs: 1,
tuner: 0,
svhs: -1,
gpiomask: 1,
muxsel: { 2, 3, 0, 1},
audiomux: { 0, 0, 1, 0, 0},
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_TEMIC_4006FN5_MULTI_PAL,
.name = "ATI TV-Wonder VE",
.video_inputs = 2,
.audio_inputs = 1,
.tuner = 0,
.svhs = -1,
.gpiomask = 1,
.muxsel = { 2, 3, 0, 1},
.audiomux = { 0, 0, 1, 0, 0},
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
},{
/* DeeJay <deejay@westel900.net (2000S) */
name: "Lifeview FlyVideo 2000S LR90",
video_inputs: 3,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 0x18e0,
muxsel: { 2, 3, 0, 1},
.name = "Lifeview FlyVideo 2000S LR90",
.video_inputs = 3,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x18e0,
.muxsel = { 2, 3, 0, 1},
/* Radio changed from 1e80 to 0x800 to make
FlyVideo2000S in .hu happy (gm)*/
/* -dk-???: set mute=0x1800 for tda9874h daughterboard */
audiomux: { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 },
audio_hook: fv2000s_audio,
no_msp34xx: 1,
no_tda9875: 1,
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: 5,
},{
name: "Terratec TValueRadio",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0xffff00,
muxsel: { 2, 3, 1, 1},
audiomux: { 0x500, 0x500, 0x300, 0x900, 0x900},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_PAL,
has_radio: 1,
.audiomux = { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 },
.audio_hook = fv2000s_audio,
.no_msp34xx = 1,
.no_tda9875 = 1,
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = 5,
},{
.name = "Terratec TValueRadio",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0xffff00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x500, 0x500, 0x300, 0x900, 0x900},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL,
.has_radio = 1,
},{
/* TANAKA Kei <peg00625@nifty.com> */
name: "IODATA GV-BCTV4/PCI",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x010f00,
muxsel: {2, 3, 0, 0},
audiomux: {0x10000, 0, 0x10000, 0, 0, 0},
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_SHARP_2U5JF5540_NTSC,
audio_hook: gvbctv3pci_audio,
.name = "IODATA GV-BCTV4/PCI",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x010f00,
.muxsel = {2, 3, 0, 0},
.audiomux = {0x10000, 0, 0x10000, 0, 0, 0},
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_SHARP_2U5JF5540_NTSC,
.audio_hook = gvbctv3pci_audio,
},{
/* ---- card 0x44 ---------------------------------- */
name: "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)",
.name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)",
// try "insmod msp3400 simple=0" if you have
// sound problems with this card.
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: -1,
gpiomask: 0x4f8a00,
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = -1,
.gpiomask = 0x4f8a00,
// 0x100000: 1=MSP enabled (0=disable again)
// 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC)
audiomux: {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff},
.audiomux = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff},
// tvtuner, radio, external,internal, mute, stereo
/* tuner, Composit, SVid, Composit-on-Svid-adapter*/
muxsel: { 2, 3 ,0 ,1},
tuner_type: TUNER_MT2032,
pll: PLL_28,
has_radio: 1,
.muxsel = { 2, 3 ,0 ,1},
.tuner_type = TUNER_MT2032,
.pll = PLL_28,
.has_radio = 1,
},{
/* Philip Blundell <pb@nexus.co.uk> */
name: "Active Imaging AIMMS",
video_inputs: 1,
audio_inputs: 0,
tuner: -1,
tuner_type: -1,
pll: PLL_28,
muxsel: { 2 },
gpiomask: 0
.name = "Active Imaging AIMMS",
.video_inputs = 1,
.audio_inputs = 0,
.tuner = -1,
.tuner_type = -1,
.pll = PLL_28,
.muxsel = { 2 },
.gpiomask = 0
},{
/* Tomasz Pyra <hellfire@sedez.iq.pl> */
name: "Prolink Pixelview PV-BT878P+ (Rev.4C)",
video_inputs: 3,
audio_inputs: 4,
tuner: 0,
svhs: 2,
gpiomask: 15,
muxsel: { 2, 3, 1, 1},
audiomux: { 0, 0, 11, 7, 13, 0}, // TV and Radio with same GPIO !
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: 25,
.name = "Prolink Pixelview PV-BT878P+ (Rev.4C)",
.video_inputs = 3,
.audio_inputs = 4,
.tuner = 0,
.svhs = 2,
.gpiomask = 15,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0, 11, 7, 13, 0}, // TV and Radio with same GPIO !
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = 25,
/* GPIO wiring:
GPIO0: U4.A0 (hef4052bt)
GPIO1: U4.A1
......@@ -1187,33 +1187,33 @@ struct tvcard bttv_tvcards[] = {
GPIO8-15: vrd866b ?
*/
},{
name: "Lifeview FlyVideo 98EZ (capture only) LR51",
video_inputs: 4,
audio_inputs: 0,
tuner: -1,
svhs: 2,
muxsel: { 2, 3, 1, 1}, // AV1, AV2, SVHS, CVid adapter on SVHS
pll: PLL_28,
no_msp34xx: 1,
.name = "Lifeview FlyVideo 98EZ (capture only) LR51",
.video_inputs = 4,
.audio_inputs = 0,
.tuner = -1,
.svhs = 2,
.muxsel = { 2, 3, 1, 1}, // AV1, AV2, SVHS, CVid adapter on SVHS
.pll = PLL_28,
.no_msp34xx = 1,
},{
/* ---- card 0x48 ---------------------------------- */
/* Dariusz Kowalewski <darekk@automex.pl> */
name: "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x3f,
muxsel: { 2, 3, 1, 1 },
audiomux: { 0x01, 0x00, 0x03, 0x03, 0x09, 0x02 },
needs_tvaudio: 1,
no_msp34xx: 1,
no_tda9875: 1,
pll: PLL_28,
tuner_type: 5,
audio_hook: pvbt878p9b_audio, // Note: not all cards have stereo
has_radio: 1, // Note: not all cards have radio
.name = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x3f,
.muxsel = { 2, 3, 1, 1 },
.audiomux = { 0x01, 0x00, 0x03, 0x03, 0x09, 0x02 },
.needs_tvaudio = 1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.pll = PLL_28,
.tuner_type = 5,
.audio_hook = pvbt878p9b_audio, // Note: not all cards have stereo
.has_radio = 1, // Note: not all cards have radio
/* GPIO wiring:
GPIO0: A0 hef4052
GPIO1: A1 hef4052
......@@ -1224,91 +1224,91 @@ struct tvcard bttv_tvcards[] = {
},{
/* Clay Kunz <ckunz@mail.arc.nasa.gov> */
/* you must jumper JP5 for the card to work */
name: "Sensoray 311",
video_inputs: 5,
audio_inputs: 0,
tuner: -1,
svhs: 4,
gpiomask: 0,
muxsel: { 2, 3, 1, 0, 0},
audiomux: { 0 },
needs_tvaudio: 0,
tuner_type: -1,
.name = "Sensoray 311",
.video_inputs = 5,
.audio_inputs = 0,
.tuner = -1,
.svhs = 4,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 0, 0},
.audiomux = { 0 },
.needs_tvaudio = 0,
.tuner_type = -1,
},{
/* Miguel Freitas <miguel@cetuc.puc-rio.br> */
name: "RemoteVision MX (RV605)",
video_inputs: 16,
audio_inputs: 0,
tuner: -1,
svhs: -1,
gpiomask: 0x00,
gpiomask2: 0x07ff,
muxsel: { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03,
.name = "RemoteVision MX (RV605)",
.video_inputs = 16,
.audio_inputs = 0,
.tuner = -1,
.svhs = -1,
.gpiomask = 0x00,
.gpiomask2 = 0x07ff,
.muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03,
0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
no_msp34xx: 1,
no_tda9875: 1,
tuner_type: -1,
muxsel_hook: rv605_muxsel,
},{
name: "Powercolor MTV878/ MTV878R/ MTV878F",
video_inputs: 3,
audio_inputs: 2,
tuner: 0,
svhs: 2,
gpiomask: 0x1C800F, // Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset
muxsel: { 2, 1, 1, },
audiomux: { 0, 1, 2, 2, 4 },
needs_tvaudio: 0,
tuner_type: TUNER_PHILIPS_PAL,
pll: PLL_28,
has_radio: 1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.tuner_type = -1,
.muxsel_hook = rv605_muxsel,
},{
.name = "Powercolor MTV878/ MTV878R/ MTV878F",
.video_inputs = 3,
.audio_inputs = 2,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x1C800F, // Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset
.muxsel = { 2, 1, 1, },
.audiomux = { 0, 1, 2, 2, 4 },
.needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL,
.pll = PLL_28,
.has_radio = 1,
},{
/* ---- card 0x4c ---------------------------------- */
/* Masaki Suzuki <masaki@btree.org> */
name: "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x140007,
muxsel: { 2, 3, 1, 1 },
audiomux: { 0, 1, 2, 3, 4, 0 },
tuner_type: TUNER_PHILIPS_NTSC,
audio_hook: windvr_audio,
},{
name: "GrandTec Multi Capture Card (Bt878)",
video_inputs: 4,
audio_inputs: 0,
tuner: -1,
svhs: -1,
gpiomask: 0,
muxsel: { 2, 3, 1, 0 },
audiomux: { 0 },
needs_tvaudio: 0,
no_msp34xx: 1,
pll: PLL_28,
tuner_type: -1,
},{
name: "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
video_inputs: 4,
audio_inputs: 3,
tuner: 0,
svhs: 2,
gpiomask: 7,
muxsel: { 2, 3, 1, 1 }, // Tuner, SVid, SVHS, SVid to SVHS connector
audiomux: { 0 ,0 ,4, 4,4,4},// Yes, this tuner uses the same audio output for TV and FM radio!
.name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x140007,
.muxsel = { 2, 3, 1, 1 },
.audiomux = { 0, 1, 2, 3, 4, 0 },
.tuner_type = TUNER_PHILIPS_NTSC,
.audio_hook = windvr_audio,
},{
.name = "GrandTec Multi Capture Card (Bt878)",
.video_inputs = 4,
.audio_inputs = 0,
.tuner = -1,
.svhs = -1,
.gpiomask = 0,
.muxsel = { 2, 3, 1, 0 },
.audiomux = { 0 },
.needs_tvaudio = 0,
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = -1,
},{
.name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
.video_inputs = 4,
.audio_inputs = 3,
.tuner = 0,
.svhs = 2,
.gpiomask = 7,
.muxsel = { 2, 3, 1, 1 }, // Tuner, SVid, SVHS, SVid to SVHS connector
.audiomux = { 0 ,0 ,4, 4,4,4},// Yes, this tuner uses the same audio output for TV and FM radio!
// This card lacks external Audio In, so we mute it on Ext. & Int.
// The PCB can take a sbx1637/sbx1673, wiring unknown.
// This card lacks PCI subsystem ID, sigh.
// audiomux=1: lower volume, 2+3: mute
// btwincap uses 0x80000/0x80003
needs_tvaudio: 0,
no_msp34xx: 1,
pll: PLL_28,
tuner_type: 5, // Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
.needs_tvaudio = 0,
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = 5, // Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
// radio signal strength indicators work fine.
has_radio: 1,
.has_radio = 1,
/* GPIO Info:
GPIO0,1: HEF4052 A0,A1
GPIO2: HEF4052 nENABLE
......@@ -1320,199 +1320,199 @@ struct tvcard bttv_tvcards[] = {
?? : mtu8b56ep microcontroller for IR (GPIO wiring unknown)*/
},{
/* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */
name: "DSP Design TCVIDEO",
video_inputs: 4,
svhs: -1,
muxsel: { 2, 3, 1, 0},
pll: PLL_28,
tuner_type: -1,
.name = "DSP Design TCVIDEO",
.video_inputs = 4,
.svhs = -1,
.muxsel = { 2, 3, 1, 0},
.pll = PLL_28,
.tuner_type = -1,
},{
/* ---- card 0x50 ---------------------------------- */
name: "Hauppauge WinTV PVR",
video_inputs: 4,
audio_inputs: 1,
tuner: 0,
svhs: 2,
muxsel: { 2, 0, 1, 1},
needs_tvaudio: 1,
pll: PLL_28,
tuner_type: -1,
gpiomask: 7,
audiomux: {7},
},{
name: "GV-BCTV5/PCI",
video_inputs: 3,
audio_inputs: 1,
tuner: 0,
svhs: 2,
gpiomask: 0x010f00,
muxsel: {2, 3, 1, 0},
audiomux: {0x10000, 0, 0x10000, 0, 0, 0},
no_msp34xx: 1,
pll: PLL_28,
tuner_type: TUNER_PHILIPS_NTSC_M,
audio_hook: gvbctv3pci_audio,
},{
name: "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
video_inputs: 4, /* id-inputs-clock */
audio_inputs: 0,
tuner: -1,
svhs: 3,
muxsel: { 3, 2, 0, 1 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
video_inputs: 3,
audio_inputs: 0,
tuner: -1,
svhs: 2,
muxsel: { 2, 3, 1 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
.name = "Hauppauge WinTV PVR",
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.muxsel = { 2, 0, 1, 1},
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = -1,
.gpiomask = 7,
.audiomux = {7},
},{
.name = "GV-BCTV5/PCI",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x010f00,
.muxsel = {2, 3, 1, 0},
.audiomux = {0x10000, 0, 0x10000, 0, 0, 0},
.no_msp34xx = 1,
.pll = PLL_28,
.tuner_type = TUNER_PHILIPS_NTSC_M,
.audio_hook = gvbctv3pci_audio,
},{
.name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
.video_inputs = 4, /* id-inputs-clock */
.audio_inputs = 0,
.tuner = -1,
.svhs = 3,
.muxsel = { 3, 2, 0, 1 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
.video_inputs = 3,
.audio_inputs = 0,
.tuner = -1,
.svhs = 2,
.muxsel = { 2, 3, 1 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
/* ---- card 0x54 ---------------------------------- */
name: "Osprey 101 (848)", /* 0x05-40C0-C1 */
video_inputs: 2,
audio_inputs: 0,
tuner: -1,
svhs: 1,
muxsel: { 3, 1 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
video_inputs: 1,
audio_inputs: 0,
tuner: -1,
svhs: -1,
muxsel: { 0 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
video_inputs: 2,
audio_inputs: 0,
tuner: -1,
svhs: 1,
muxsel: { 0, 1 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
video_inputs: 1,
audio_inputs: 1,
tuner: -1,
svhs: -1,
muxsel: { 0 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
.name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
.video_inputs = 2,
.audio_inputs = 0,
.tuner = -1,
.svhs = 1,
.muxsel = { 3, 1 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
.video_inputs = 1,
.audio_inputs = 0,
.tuner = -1,
.svhs = -1,
.muxsel = { 0 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
.video_inputs = 2,
.audio_inputs = 0,
.tuner = -1,
.svhs = 1,
.muxsel = { 0, 1 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
.video_inputs = 1,
.audio_inputs = 1,
.tuner = -1,
.svhs = -1,
.muxsel = { 0 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
/* ---- card 0x58 ---------------------------------- */
name: "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
video_inputs: 2,
audio_inputs: 1,
tuner: -1,
svhs: 1,
muxsel: { 0, 1 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 210/220", /* 0x1(A|B)-04C0-C1 */
video_inputs: 2,
audio_inputs: 1,
tuner: -1,
svhs: 1,
muxsel: { 2, 3 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 500", /* 500 */
video_inputs: 2,
audio_inputs: 1,
tuner: -1,
svhs: 1,
muxsel: { 2, 3 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
},{
name: "Osprey 540", /* 540 */
video_inputs: 4,
audio_inputs: 1,
tuner: -1,
.name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
.video_inputs = 2,
.audio_inputs = 1,
.tuner = -1,
.svhs = 1,
.muxsel = { 0, 1 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 210/220", /* 0x1(A|B)-04C0-C1 */
.video_inputs = 2,
.audio_inputs = 1,
.tuner = -1,
.svhs = 1,
.muxsel = { 2, 3 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 500", /* 500 */
.video_inputs = 2,
.audio_inputs = 1,
.tuner = -1,
.svhs = 1,
.muxsel = { 2, 3 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
.name = "Osprey 540", /* 540 */
.video_inputs = 4,
.audio_inputs = 1,
.tuner = -1,
#if 0 /* TODO ... */
svhs: OSPREY540_SVID_ANALOG,
muxsel: { [OSPREY540_COMP_ANALOG] = 2,
.svhs = OSPREY540_SVID_ANALOG,
.muxsel = { [OSPREY540_COMP_ANALOG] = 2,
[OSPREY540_SVID_ANALOG] = 3, },
#endif
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1,
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
#if 0 /* TODO ... */
muxsel_hook: osprey_540_muxsel,
picture_hook: osprey_540_set_picture,
.muxsel_hook = osprey_540_muxsel,
.picture_hook = osprey_540_set_picture,
#endif
},{
/* ---- card 0x5C ---------------------------------- */
name: "Osprey 2000", /* 2000 */
video_inputs: 2,
audio_inputs: 1,
tuner: -1,
svhs: 1,
muxsel: { 2, 3 },
pll: PLL_28,
tuner_type: -1,
no_msp34xx: 1,
no_tda9875: 1,
no_tda7432: 1, /* must avoid, conflicts with the bt860 */
.name = "Osprey 2000", /* 2000 */
.video_inputs = 2,
.audio_inputs = 1,
.tuner = -1,
.svhs = 1,
.muxsel = { 2, 3 },
.pll = PLL_28,
.tuner_type = -1,
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1, /* must avoid, conflicts with the bt860 */
},{
/* M G Berberich <berberic@forwiss.uni-passau.de> */
name: "IDS Eagle",
video_inputs: 4,
audio_inputs: 0,
tuner: -1,
tuner_type: -1,
svhs: -1,
gpiomask: 0,
muxsel: { 0, 1, 2, 3 },
muxsel_hook: eagle_muxsel,
no_msp34xx: 1,
no_tda9875: 1,
pll: PLL_28,
.name = "IDS Eagle",
.video_inputs = 4,
.audio_inputs = 0,
.tuner = -1,
.tuner_type = -1,
.svhs = -1,
.gpiomask = 0,
.muxsel = { 0, 1, 2, 3 },
.muxsel_hook = eagle_muxsel,
.no_msp34xx = 1,
.no_tda9875 = 1,
.pll = PLL_28,
}};
const int bttv_num_tvcards = (sizeof(bttv_tvcards)/sizeof(struct tvcard));
......
......@@ -274,154 +274,154 @@ const int BTTV_TVNORMS = (sizeof(bttv_tvnorms)/sizeof(struct bttv_tvnorm));
packed pixel formats must come first */
const struct bttv_format bttv_formats[] = {
{
name: "8 bpp, gray",
palette: VIDEO_PALETTE_GREY,
fourcc: V4L2_PIX_FMT_GREY,
btformat: BT848_COLOR_FMT_Y8,
depth: 8,
flags: FORMAT_FLAGS_PACKED,
.name = "8 bpp, gray",
.palette = VIDEO_PALETTE_GREY,
.fourcc = V4L2_PIX_FMT_GREY,
.btformat = BT848_COLOR_FMT_Y8,
.depth = 8,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "8 bpp, dithered color",
palette: VIDEO_PALETTE_HI240,
fourcc: V4L2_PIX_FMT_HI240,
btformat: BT848_COLOR_FMT_RGB8,
depth: 8,
flags: FORMAT_FLAGS_PACKED | FORMAT_FLAGS_DITHER,
.name = "8 bpp, dithered color",
.palette = VIDEO_PALETTE_HI240,
.fourcc = V4L2_PIX_FMT_HI240,
.btformat = BT848_COLOR_FMT_RGB8,
.depth = 8,
.flags = FORMAT_FLAGS_PACKED | FORMAT_FLAGS_DITHER,
},{
name: "15 bpp RGB, le",
palette: VIDEO_PALETTE_RGB555,
fourcc: V4L2_PIX_FMT_RGB555,
btformat: BT848_COLOR_FMT_RGB15,
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "15 bpp RGB, le",
.palette = VIDEO_PALETTE_RGB555,
.fourcc = V4L2_PIX_FMT_RGB555,
.btformat = BT848_COLOR_FMT_RGB15,
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "15 bpp RGB, be",
palette: -1,
fourcc: V4L2_PIX_FMT_RGB555X,
btformat: BT848_COLOR_FMT_RGB15,
btswap: 0x03, /* byteswap */
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "15 bpp RGB, be",
.palette = -1,
.fourcc = V4L2_PIX_FMT_RGB555X,
.btformat = BT848_COLOR_FMT_RGB15,
.btswap = 0x03, /* byteswap */
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "16 bpp RGB, le",
palette: VIDEO_PALETTE_RGB565,
fourcc: V4L2_PIX_FMT_RGB565,
btformat: BT848_COLOR_FMT_RGB16,
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "16 bpp RGB, le",
.palette = VIDEO_PALETTE_RGB565,
.fourcc = V4L2_PIX_FMT_RGB565,
.btformat = BT848_COLOR_FMT_RGB16,
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "16 bpp RGB, be",
palette: -1,
fourcc: V4L2_PIX_FMT_RGB565X,
btformat: BT848_COLOR_FMT_RGB16,
btswap: 0x03, /* byteswap */
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "16 bpp RGB, be",
.palette = -1,
.fourcc = V4L2_PIX_FMT_RGB565X,
.btformat = BT848_COLOR_FMT_RGB16,
.btswap = 0x03, /* byteswap */
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "24 bpp RGB, le",
palette: VIDEO_PALETTE_RGB24,
fourcc: V4L2_PIX_FMT_BGR24,
btformat: BT848_COLOR_FMT_RGB24,
depth: 24,
flags: FORMAT_FLAGS_PACKED,
.name = "24 bpp RGB, le",
.palette = VIDEO_PALETTE_RGB24,
.fourcc = V4L2_PIX_FMT_BGR24,
.btformat = BT848_COLOR_FMT_RGB24,
.depth = 24,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "32 bpp RGB, le",
palette: VIDEO_PALETTE_RGB32,
fourcc: V4L2_PIX_FMT_BGR32,
btformat: BT848_COLOR_FMT_RGB32,
depth: 32,
flags: FORMAT_FLAGS_PACKED,
.name = "32 bpp RGB, le",
.palette = VIDEO_PALETTE_RGB32,
.fourcc = V4L2_PIX_FMT_BGR32,
.btformat = BT848_COLOR_FMT_RGB32,
.depth = 32,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "32 bpp RGB, be",
palette: -1,
fourcc: V4L2_PIX_FMT_RGB32,
btformat: BT848_COLOR_FMT_RGB32,
btswap: 0x0f, /* byte+word swap */
depth: 32,
flags: FORMAT_FLAGS_PACKED,
.name = "32 bpp RGB, be",
.palette = -1,
.fourcc = V4L2_PIX_FMT_RGB32,
.btformat = BT848_COLOR_FMT_RGB32,
.btswap = 0x0f, /* byte+word swap */
.depth = 32,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "4:2:2, packed, YUYV",
palette: VIDEO_PALETTE_YUV422,
fourcc: V4L2_PIX_FMT_YUYV,
btformat: BT848_COLOR_FMT_YUY2,
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "4:2:2, packed, YUYV",
.palette = VIDEO_PALETTE_YUV422,
.fourcc = V4L2_PIX_FMT_YUYV,
.btformat = BT848_COLOR_FMT_YUY2,
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "4:2:2, packed, YUYV",
palette: VIDEO_PALETTE_YUYV,
fourcc: V4L2_PIX_FMT_YUYV,
btformat: BT848_COLOR_FMT_YUY2,
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "4:2:2, packed, YUYV",
.palette = VIDEO_PALETTE_YUYV,
.fourcc = V4L2_PIX_FMT_YUYV,
.btformat = BT848_COLOR_FMT_YUY2,
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "4:2:2, packed, UYVY",
palette: VIDEO_PALETTE_UYVY,
fourcc: V4L2_PIX_FMT_UYVY,
btformat: BT848_COLOR_FMT_YUY2,
btswap: 0x03, /* byteswap */
depth: 16,
flags: FORMAT_FLAGS_PACKED,
.name = "4:2:2, packed, UYVY",
.palette = VIDEO_PALETTE_UYVY,
.fourcc = V4L2_PIX_FMT_UYVY,
.btformat = BT848_COLOR_FMT_YUY2,
.btswap = 0x03, /* byteswap */
.depth = 16,
.flags = FORMAT_FLAGS_PACKED,
},{
name: "4:2:2, planar, Y-Cb-Cr",
palette: VIDEO_PALETTE_YUV422P,
fourcc: V4L2_PIX_FMT_YUV422P,
btformat: BT848_COLOR_FMT_YCrCb422,
depth: 16,
flags: FORMAT_FLAGS_PLANAR,
hshift: 1,
vshift: 0,
.name = "4:2:2, planar, Y-Cb-Cr",
.palette = VIDEO_PALETTE_YUV422P,
.fourcc = V4L2_PIX_FMT_YUV422P,
.btformat = BT848_COLOR_FMT_YCrCb422,
.depth = 16,
.flags = FORMAT_FLAGS_PLANAR,
.hshift = 1,
.vshift = 0,
},{
name: "4:2:0, planar, Y-Cb-Cr",
palette: VIDEO_PALETTE_YUV420P,
fourcc: V4L2_PIX_FMT_YUV420,
btformat: BT848_COLOR_FMT_YCrCb422,
depth: 12,
flags: FORMAT_FLAGS_PLANAR,
hshift: 1,
vshift: 1,
.name = "4:2:0, planar, Y-Cb-Cr",
.palette = VIDEO_PALETTE_YUV420P,
.fourcc = V4L2_PIX_FMT_YUV420,
.btformat = BT848_COLOR_FMT_YCrCb422,
.depth = 12,
.flags = FORMAT_FLAGS_PLANAR,
.hshift = 1,
.vshift = 1,
},{
name: "4:2:0, planar, Y-Cr-Cb",
palette: -1,
fourcc: V4L2_PIX_FMT_YVU420,
btformat: BT848_COLOR_FMT_YCrCb422,
depth: 12,
flags: FORMAT_FLAGS_PLANAR | FORMAT_FLAGS_CrCb,
hshift: 1,
vshift: 1,
.name = "4:2:0, planar, Y-Cr-Cb",
.palette = -1,
.fourcc = V4L2_PIX_FMT_YVU420,
.btformat = BT848_COLOR_FMT_YCrCb422,
.depth = 12,
.flags = FORMAT_FLAGS_PLANAR | FORMAT_FLAGS_CrCb,
.hshift = 1,
.vshift = 1,
},{
name: "4:1:1, planar, Y-Cb-Cr",
palette: VIDEO_PALETTE_YUV411P,
fourcc: V4L2_PIX_FMT_YUV411P,
btformat: BT848_COLOR_FMT_YCrCb411,
depth: 12,
flags: FORMAT_FLAGS_PLANAR,
hshift: 2,
vshift: 0,
.name = "4:1:1, planar, Y-Cb-Cr",
.palette = VIDEO_PALETTE_YUV411P,
.fourcc = V4L2_PIX_FMT_YUV411P,
.btformat = BT848_COLOR_FMT_YCrCb411,
.depth = 12,
.flags = FORMAT_FLAGS_PLANAR,
.hshift = 2,
.vshift = 0,
},{
name: "4:1:0, planar, Y-Cb-Cr",
palette: VIDEO_PALETTE_YUV410P,
fourcc: V4L2_PIX_FMT_YUV410,
btformat: BT848_COLOR_FMT_YCrCb411,
depth: 9,
flags: FORMAT_FLAGS_PLANAR,
hshift: 2,
vshift: 2,
.name = "4:1:0, planar, Y-Cb-Cr",
.palette = VIDEO_PALETTE_YUV410P,
.fourcc = V4L2_PIX_FMT_YUV410,
.btformat = BT848_COLOR_FMT_YCrCb411,
.depth = 9,
.flags = FORMAT_FLAGS_PLANAR,
.hshift = 2,
.vshift = 2,
},{
name: "4:1:0, planar, Y-Cr-Cb",
palette: -1,
fourcc: V4L2_PIX_FMT_YVU410,
btformat: BT848_COLOR_FMT_YCrCb411,
depth: 9,
flags: FORMAT_FLAGS_PLANAR | FORMAT_FLAGS_CrCb,
hshift: 2,
vshift: 2,
.name = "4:1:0, planar, Y-Cr-Cb",
.palette = -1,
.fourcc = V4L2_PIX_FMT_YVU410,
.btformat = BT848_COLOR_FMT_YCrCb411,
.depth = 9,
.flags = FORMAT_FLAGS_PLANAR | FORMAT_FLAGS_CrCb,
.hshift = 2,
.vshift = 2,
},{
name: "raw scanlines",
palette: VIDEO_PALETTE_RAW,
fourcc: -1,
btformat: BT848_COLOR_FMT_RAW,
depth: 8,
flags: FORMAT_FLAGS_RAW,
.name = "raw scanlines",
.palette = VIDEO_PALETTE_RAW,
.fourcc = -1,
.btformat = BT848_COLOR_FMT_RAW,
.depth = 8,
.flags = FORMAT_FLAGS_RAW,
}
};
const int BTTV_FORMATS = (sizeof(bttv_formats)/sizeof(struct bttv_format));
......@@ -436,115 +436,115 @@ const int BTTV_FORMATS = (sizeof(bttv_formats)/sizeof(struct bttv_format));
#define V4L2_CID_PRIVATE_LASTP1 (V4L2_CID_PRIVATE_BASE + 5)
static const struct v4l2_queryctrl no_ctl = {
name: "42",
flags: V4L2_CTRL_FLAG_DISABLED,
.name = "42",
.flags = V4L2_CTRL_FLAG_DISABLED,
};
static const struct v4l2_queryctrl bttv_ctls[] = {
/* --- video --- */
{
id: V4L2_CID_BRIGHTNESS,
name: "Brightness",
minimum: 0,
maximum: 65535,
step: 256,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_BRIGHTNESS,
.name = "Brightness",
.minimum = 0,
.maximum = 65535,
.step = 256,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_CONTRAST,
name: "Contrast",
minimum: 0,
maximum: 65535,
step: 128,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_CONTRAST,
.name = "Contrast",
.minimum = 0,
.maximum = 65535,
.step = 128,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_SATURATION,
name: "Saturation",
minimum: 0,
maximum: 65535,
step: 128,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_SATURATION,
.name = "Saturation",
.minimum = 0,
.maximum = 65535,
.step = 128,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_HUE,
name: "Hue",
minimum: 0,
maximum: 65535,
step: 256,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_HUE,
.name = "Hue",
.minimum = 0,
.maximum = 65535,
.step = 256,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},
/* --- audio --- */
{
id: V4L2_CID_AUDIO_MUTE,
name: "Mute",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_AUDIO_MUTE,
.name = "Mute",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
},{
id: V4L2_CID_AUDIO_VOLUME,
name: "Volume",
minimum: 0,
maximum: 65535,
step: 65535/100,
default_value: 65535,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_AUDIO_VOLUME,
.name = "Volume",
.minimum = 0,
.maximum = 65535,
.step = 65535/100,
.default_value = 65535,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_AUDIO_BALANCE,
name: "Balance",
minimum: 0,
maximum: 65535,
step: 65535/100,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_AUDIO_BALANCE,
.name = "Balance",
.minimum = 0,
.maximum = 65535,
.step = 65535/100,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_AUDIO_BASS,
name: "Bass",
minimum: 0,
maximum: 65535,
step: 65535/100,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_AUDIO_BASS,
.name = "Bass",
.minimum = 0,
.maximum = 65535,
.step = 65535/100,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},{
id: V4L2_CID_AUDIO_TREBLE,
name: "Treble",
minimum: 0,
maximum: 65535,
step: 65535/100,
default_value: 32768,
type: V4L2_CTRL_TYPE_INTEGER,
.id = V4L2_CID_AUDIO_TREBLE,
.name = "Treble",
.minimum = 0,
.maximum = 65535,
.step = 65535/100,
.default_value = 32768,
.type = V4L2_CTRL_TYPE_INTEGER,
},
/* --- private --- */
{
id: V4L2_CID_PRIVATE_CHROMA_AGC,
name: "chroma agc",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_PRIVATE_CHROMA_AGC,
.name = "chroma agc",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
},{
id: V4L2_CID_PRIVATE_COMBFILTER,
name: "combfilter",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_PRIVATE_COMBFILTER,
.name = "combfilter",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
},{
id: V4L2_CID_PRIVATE_AUTOMUTE,
name: "automute",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_PRIVATE_AUTOMUTE,
.name = "automute",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
},{
id: V4L2_CID_PRIVATE_LUMAFILTER,
name: "luma decimation filter",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_PRIVATE_LUMAFILTER,
.name = "luma decimation filter",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
},{
id: V4L2_CID_PRIVATE_AGC_CRUSH,
name: "agc crush",
minimum: 0,
maximum: 1,
type: V4L2_CTRL_TYPE_BOOLEAN,
.id = V4L2_CID_PRIVATE_AGC_CRUSH,
.name = "agc crush",
.minimum = 0,
.maximum = 1,
.type = V4L2_CTRL_TYPE_BOOLEAN,
}
};
const int BTTV_CTLS = (sizeof(bttv_ctls)/sizeof(struct v4l2_queryctrl));
......@@ -1314,10 +1314,10 @@ static void buffer_release(struct file *file, struct videobuf_buffer *vb)
}
static struct videobuf_queue_ops bttv_video_qops = {
buf_setup: buffer_setup,
buf_prepare: buffer_prepare,
buf_queue: buffer_queue,
buf_release: buffer_release,
.buf_setup = buffer_setup,
.buf_prepare = buffer_prepare,
.buf_queue = buffer_queue,
.buf_release = buffer_release,
};
static const char *v4l1_ioctls[] = {
......@@ -2706,33 +2706,33 @@ bttv_mmap(struct file *file, struct vm_area_struct *vma)
static struct file_operations bttv_fops =
{
owner: THIS_MODULE,
open: bttv_open,
release: bttv_release,
ioctl: bttv_ioctl,
llseek: no_llseek,
read: bttv_read,
mmap: bttv_mmap,
poll: bttv_poll,
.owner = THIS_MODULE,
.open = bttv_open,
.release = bttv_release,
.ioctl = bttv_ioctl,
.llseek = no_llseek,
.read = bttv_read,
.mmap = bttv_mmap,
.poll = bttv_poll,
};
static struct video_device bttv_video_template =
{
name: "UNSET",
type: VID_TYPE_CAPTURE|VID_TYPE_TUNER|VID_TYPE_OVERLAY|
.name = "UNSET",
.type = VID_TYPE_CAPTURE|VID_TYPE_TUNER|VID_TYPE_OVERLAY|
VID_TYPE_CLIPPING|VID_TYPE_SCALES,
hardware: VID_HARDWARE_BT848,
fops: &bttv_fops,
minor: -1,
.hardware = VID_HARDWARE_BT848,
.fops = &bttv_fops,
.minor = -1,
};
struct video_device bttv_vbi_template =
{
name: "bt848/878 vbi",
type: VID_TYPE_TUNER|VID_TYPE_TELETEXT,
hardware: VID_HARDWARE_BT848,
fops: &bttv_fops,
minor: -1,
.name = "bt848/878 vbi",
.type = VID_TYPE_TUNER|VID_TYPE_TELETEXT,
.hardware = VID_HARDWARE_BT848,
.fops = &bttv_fops,
.minor = -1,
};
/* ----------------------------------------------------------------------- */
......@@ -2841,20 +2841,20 @@ static int radio_ioctl(struct inode *inode, struct file *file,
static struct file_operations radio_fops =
{
owner: THIS_MODULE,
open: radio_open,
release: radio_release,
ioctl: radio_ioctl,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = radio_open,
.release = radio_release,
.ioctl = radio_ioctl,
.llseek = no_llseek,
};
static struct video_device radio_template =
{
name: "bt848/878 radio",
type: VID_TYPE_TUNER,
hardware: VID_HARDWARE_BT848,
fops: &radio_fops,
minor: -1,
.name = "bt848/878 radio",
.type = VID_TYPE_TUNER,
.hardware = VID_HARDWARE_BT848,
.fops = &radio_fops,
.minor = -1,
};
/* ----------------------------------------------------------------------- */
......@@ -3439,10 +3439,10 @@ static struct pci_device_id bttv_pci_tbl[] __devinitdata = {
MODULE_DEVICE_TABLE(pci, bttv_pci_tbl);
static struct pci_driver bttv_pci_driver = {
name: "bttv",
id_table: bttv_pci_tbl,
probe: bttv_probe,
remove: __devexit_p(bttv_remove),
.name = "bttv",
.id_table = bttv_pci_tbl,
.probe = bttv_probe,
.remove = __devexit_p(bttv_remove),
};
static int bttv_init_module(void)
......
......@@ -262,27 +262,27 @@ void bttv_i2c_call(unsigned int card, unsigned int cmd, void *arg)
}
static struct i2c_algo_bit_data bttv_i2c_algo_template = {
setsda: bttv_bit_setsda,
setscl: bttv_bit_setscl,
getsda: bttv_bit_getsda,
getscl: bttv_bit_getscl,
udelay: 16,
mdelay: 10,
timeout: 200,
.setsda = bttv_bit_setsda,
.setscl = bttv_bit_setscl,
.getsda = bttv_bit_getsda,
.getscl = bttv_bit_getscl,
.udelay = 16,
.mdelay = 10,
.timeout = 200,
};
static struct i2c_adapter bttv_i2c_adap_template = {
name: "bt848",
id: I2C_HW_B_BT848,
inc_use: bttv_inc_use,
dec_use: bttv_dec_use,
client_register: attach_inform,
client_unregister: detach_inform,
.name = "bt848",
.id = I2C_HW_B_BT848,
.inc_use = bttv_inc_use,
.dec_use = bttv_dec_use,
.client_register = attach_inform,
.client_unregister = detach_inform,
};
static struct i2c_client bttv_i2c_client_template = {
name: "bttv internal use only",
id: -1,
.name = "bttv internal use only",
.id = -1,
};
......
......@@ -123,10 +123,10 @@ static void vbi_buffer_release(struct file *file, struct videobuf_buffer *vb)
}
struct videobuf_queue_ops bttv_vbi_qops = {
buf_setup: vbi_buffer_setup,
buf_prepare: vbi_buffer_prepare,
buf_queue: vbi_buffer_queue,
buf_release: vbi_buffer_release,
.buf_setup = vbi_buffer_setup,
.buf_prepare = vbi_buffer_prepare,
.buf_queue = vbi_buffer_queue,
.buf_release = vbi_buffer_release,
};
/* ----------------------------------------------------------------------- */
......
......@@ -885,20 +885,20 @@ static int qcam_read(struct file *file, char *buf,
}
static struct file_operations qcam_fops = {
owner: THIS_MODULE,
open: video_exclusive_open,
release: video_exclusive_release,
ioctl: qcam_ioctl,
read: qcam_read,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = video_exclusive_open,
.release = video_exclusive_release,
.ioctl = qcam_ioctl,
.read = qcam_read,
.llseek = no_llseek,
};
static struct video_device qcam_template=
{
owner: THIS_MODULE,
name: "Connectix Quickcam",
type: VID_TYPE_CAPTURE,
hardware: VID_HARDWARE_QCAM_BW,
fops: &qcam_fops,
.owner = THIS_MODULE,
.name = "Connectix Quickcam",
.type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_QCAM_BW,
.fops = &qcam_fops,
};
#define MAX_CAMS 4
......
......@@ -686,21 +686,21 @@ static int qcam_read(struct file *file, char *buf,
/* video device template */
static struct file_operations qcam_fops = {
owner: THIS_MODULE,
open: video_exclusive_open,
release: video_exclusive_release,
ioctl: qcam_ioctl,
read: qcam_read,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = video_exclusive_open,
.release = video_exclusive_release,
.ioctl = qcam_ioctl,
.read = qcam_read,
.llseek = no_llseek,
};
static struct video_device qcam_template=
{
owner: THIS_MODULE,
name: "Colour QuickCam",
type: VID_TYPE_CAPTURE,
hardware: VID_HARDWARE_QCAM_C,
fops: &qcam_fops,
.owner = THIS_MODULE,
.name = "Colour QuickCam",
.type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_QCAM_C,
.fops = &qcam_fops,
};
/* Initialize the QuickCam driver control structure. */
......
......@@ -3783,21 +3783,21 @@ static int cpia_mmap(struct file *file, struct vm_area_struct *vma)
}
static struct file_operations cpia_fops = {
owner: THIS_MODULE,
open: cpia_open,
release: cpia_close,
read: cpia_read,
mmap: cpia_mmap,
ioctl: cpia_ioctl,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = cpia_open,
.release = cpia_close,
.read = cpia_read,
.mmap = cpia_mmap,
.ioctl = cpia_ioctl,
.llseek = no_llseek,
};
static struct video_device cpia_template = {
owner: THIS_MODULE,
name: "CPiA Camera",
type: VID_TYPE_CAPTURE,
hardware: VID_HARDWARE_CPIA,
fops: &cpia_fops,
.owner = THIS_MODULE,
.name = "CPiA Camera",
.type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_CPIA,
.fops = &cpia_fops,
};
/* initialise cam_data structure */
......
......@@ -582,10 +582,10 @@ MODULE_LICENSE("GPL");
static struct usb_driver cpia_driver = {
name: "cpia",
probe: cpia_probe,
disconnect: cpia_disconnect,
id_table: cpia_id_table,
.name = "cpia",
.probe = cpia_probe,
.disconnect = cpia_disconnect,
.id_table = cpia_id_table,
};
/* don't use dev, it may be NULL! (see usb_cpia_cleanup) */
......
......@@ -1213,19 +1213,19 @@ static int msp_probe(struct i2c_adapter *adap);
static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg);
static struct i2c_driver driver = {
name: "i2c msp3400 driver",
id: I2C_DRIVERID_MSP3400,
flags: I2C_DF_NOTIFY,
attach_adapter: msp_probe,
detach_client: msp_detach,
command: msp_command,
.name = "i2cmsp3400driver",
.id = I2C_DRIVERID_MSP3400,
.flags = I2C_DF_NOTIFY,
.attach_adapter = msp_probe,
.detach_client = msp_detach,
.command = msp_command,
};
static struct i2c_client client_template =
{
name: "(unset)",
flags: I2C_CLIENT_ALLOW_USE,
driver: &driver,
.name = "(unset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
};
static int msp_attach(struct i2c_adapter *adap, int addr,
......
......@@ -2020,16 +2020,16 @@ static int planb_mmap(struct vm_area_struct *vma, struct video_device *dev, cons
static struct video_device planb_template=
{
owner: THIS_MODULE,
name: PLANB_DEVICE_NAME,
type: VID_TYPE_OVERLAY,
hardware: VID_HARDWARE_PLANB,
open: planb_open,
close: planb_close,
read: planb_read,
write: planb_write,
ioctl: planb_ioctl,
mmap: planb_mmap, /* mmap? */
.owner = THIS_MODULE,
.name = PLANB_DEVICE_NAME,
.type = VID_TYPE_OVERLAY,
.hardware = VID_HARDWARE_PLANB,
.open = planb_open,
.close = planb_close,
.read = planb_read,
.write = planb_write,
.ioctl = planb_ioctl,
.mmap = planb_mmap, /* mmap? */
};
static int init_planb(struct planb *pb)
......
......@@ -875,21 +875,21 @@ static int pms_read(struct file *file, char *buf,
}
static struct file_operations pms_fops = {
owner: THIS_MODULE,
open: video_exclusive_open,
release: video_exclusive_release,
ioctl: pms_ioctl,
read: pms_read,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = video_exclusive_open,
.release = video_exclusive_release,
.ioctl = pms_ioctl,
.read = pms_read,
.llseek = no_llseek,
};
static struct video_device pms_template=
{
owner: THIS_MODULE,
name: "Mediavision PMS",
type: VID_TYPE_CAPTURE,
hardware: VID_HARDWARE_PMS,
fops: &pms_fops,
.owner = THIS_MODULE,
.name = "Mediavision PMS",
.type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_PMS,
.fops = &pms_fops,
};
struct pms_device pms_device;
......
......@@ -678,20 +678,20 @@ module_init(init_saa_5249);
module_exit(cleanup_saa_5249);
static struct file_operations saa_fops = {
owner: THIS_MODULE,
open: saa5249_open,
release: saa5249_release,
ioctl: saa5249_ioctl,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = saa5249_open,
.release = saa5249_release,
.ioctl = saa5249_ioctl,
.llseek = no_llseek,
};
static struct video_device saa_template =
{
owner: THIS_MODULE,
name: IF_NAME,
type: VID_TYPE_TELETEXT, /*| VID_TYPE_TUNER ?? */
hardware: VID_HARDWARE_SAA5249,
fops: &saa_fops,
.owner = THIS_MODULE,
.name = IF_NAME,
.type = VID_TYPE_TELETEXT, /*| VID_TYPE_TUNER ?? */
.hardware = VID_HARDWARE_SAA5249,
.fops = &saa_fops,
};
MODULE_LICENSE("GPL");
......@@ -1970,16 +1970,16 @@ static void saa_close(struct video_device *dev)
/* template for video_device-structure */
static struct video_device saa_template =
{
owner: THIS_MODULE,
name: "SAA7146A",
type: VID_TYPE_CAPTURE | VID_TYPE_OVERLAY,
hardware: VID_HARDWARE_SAA7146,
open: saa_open,
close: saa_close,
read: saa_read,
write: saa_write,
ioctl: saa_ioctl,
mmap: saa_mmap,
.owner = THIS_MODULE,
.name = "SAA7146A",
.type = VID_TYPE_CAPTURE | VID_TYPE_OVERLAY,
.hardware = VID_HARDWARE_SAA7146,
.open = saa_open,
.close = saa_close,
.read = saa_read,
.write = saa_write,
.ioctl = saa_ioctl,
.mmap = saa_mmap,
};
static int configure_saa7146(struct pci_dev *dev, int num)
......
......@@ -975,18 +975,18 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
/* ----------------------------------------------------------------------- */
static struct i2c_driver driver = {
name: "i2c TV tuner driver",
id: I2C_DRIVERID_TUNER,
flags: I2C_DF_NOTIFY,
attach_adapter: tuner_probe,
detach_client: tuner_detach,
command: tuner_command,
.name = "i2cTVtunerdriver",
.id = I2C_DRIVERID_TUNER,
.flags = I2C_DF_NOTIFY,
.attach_adapter = tuner_probe,
.detach_client = tuner_detach,
.command = tuner_command,
};
static struct i2c_client client_template =
static structi2c_clientclient_template =
{
name: "(tuner unset)",
flags: I2C_CLIENT_ALLOW_USE,
driver: &driver,
.name = "(tunerunset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
};
static int tuner_init_module(void)
......
......@@ -1156,167 +1156,167 @@ MODULE_PARM(pic16c54,"i");
static struct CHIPDESC chiplist[] = {
{
name: "tda9840",
id: I2C_DRIVERID_TDA9840,
insmodopt: &tda9840,
addr_lo: I2C_TDA9840 >> 1,
addr_hi: I2C_TDA9840 >> 1,
registers: 5,
getmode: tda9840_getmode,
setmode: tda9840_setmode,
checkmode: generic_checkmode,
init: { 2, { TDA9840_TEST, TDA9840_TEST_INT1SN
.name = "tda9840",
.id = I2C_DRIVERID_TDA9840,
.insmodopt = &tda9840,
.addr_lo = I2C_TDA9840 >> 1,
.addr_hi = I2C_TDA9840 >> 1,
.registers = 5,
.getmode = tda9840_getmode,
.setmode = tda9840_setmode,
.checkmode = generic_checkmode,
.init = { 2, { TDA9840_TEST, TDA9840_TEST_INT1SN
/* ,TDA9840_SW, TDA9840_MONO */} }
},
{
name: "tda9873h",
id: I2C_DRIVERID_TDA9873,
checkit: tda9873_checkit,
insmodopt: &tda9873,
addr_lo: I2C_TDA985x_L >> 1,
addr_hi: I2C_TDA985x_H >> 1,
registers: 3,
flags: CHIP_HAS_INPUTSEL,
getmode: tda9873_getmode,
setmode: tda9873_setmode,
checkmode: generic_checkmode,
init: { 4, { TDA9873_SW, 0xa4, 0x06, 0x03 } },
inputreg: TDA9873_SW,
inputmute: TDA9873_MUTE | TDA9873_AUTOMUTE,
inputmap: {0xa0, 0xa2, 0xa0, 0xa0, 0xc0},
inputmask: TDA9873_INP_MASK | TDA9873_MUTE | TDA9873_AUTOMUTE
.name = "tda9873h",
.id = I2C_DRIVERID_TDA9873,
.checkit = tda9873_checkit,
.insmodopt = &tda9873,
.addr_lo = I2C_TDA985x_L >> 1,
.addr_hi = I2C_TDA985x_H >> 1,
.registers = 3,
.flags = CHIP_HAS_INPUTSEL,
.getmode = tda9873_getmode,
.setmode = tda9873_setmode,
.checkmode = generic_checkmode,
.init = { 4, { TDA9873_SW, 0xa4, 0x06, 0x03 } },
.inputreg = TDA9873_SW,
.inputmute = TDA9873_MUTE | TDA9873_AUTOMUTE,
.inputmap = {0xa0, 0xa2, 0xa0, 0xa0, 0xc0},
.inputmask = TDA9873_INP_MASK | TDA9873_MUTE | TDA9873_AUTOMUTE
},
{
name: "tda9874h/a",
id: I2C_DRIVERID_TDA9874,
checkit: tda9874a_checkit,
initialize: tda9874a_initialize,
insmodopt: &tda9874a,
addr_lo: I2C_TDA9874 >> 1,
addr_hi: I2C_TDA9874 >> 1,
getmode: tda9874a_getmode,
setmode: tda9874a_setmode,
checkmode: generic_checkmode,
.name = "tda9874h/a",
.id = I2C_DRIVERID_TDA9874,
.checkit = tda9874a_checkit,
.initialize = tda9874a_initialize,
.insmodopt = &tda9874a,
.addr_lo = I2C_TDA9874 >> 1,
.addr_hi = I2C_TDA9874 >> 1,
.getmode = tda9874a_getmode,
.setmode = tda9874a_setmode,
.checkmode = generic_checkmode,
},
{
name: "tda9850",
id: I2C_DRIVERID_TDA9850,
insmodopt: &tda9850,
addr_lo: I2C_TDA985x_L >> 1,
addr_hi: I2C_TDA985x_H >> 1,
registers: 11,
.name = "tda9850",
.id = I2C_DRIVERID_TDA9850,
.insmodopt = &tda9850,
.addr_lo = I2C_TDA985x_L >> 1,
.addr_hi = I2C_TDA985x_H >> 1,
.registers = 11,
getmode: tda985x_getmode,
setmode: tda985x_setmode,
.getmode = tda985x_getmode,
.setmode = tda985x_setmode,
init: { 8, { TDA9850_C4, 0x08, 0x08, TDA985x_STEREO, 0x07, 0x10, 0x10, 0x03 } }
.init = { 8, { TDA9850_C4, 0x08, 0x08, TDA985x_STEREO, 0x07, 0x10, 0x10, 0x03 } }
},
{
name: "tda9855",
id: I2C_DRIVERID_TDA9855,
insmodopt: &tda9855,
addr_lo: I2C_TDA985x_L >> 1,
addr_hi: I2C_TDA985x_H >> 1,
registers: 11,
flags: CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE,
leftreg: TDA9855_VL,
rightreg: TDA9855_VR,
bassreg: TDA9855_BA,
treblereg: TDA9855_TR,
volfunc: tda9855_volume,
bassfunc: tda9855_bass,
treblefunc: tda9855_treble,
getmode: tda985x_getmode,
setmode: tda985x_setmode,
init: { 12, { 0, 0x6f, 0x6f, 0x0e, 0x07<<1, 0x8<<2,
.name = "tda9855",
.id = I2C_DRIVERID_TDA9855,
.insmodopt = &tda9855,
.addr_lo = I2C_TDA985x_L >> 1,
.addr_hi = I2C_TDA985x_H >> 1,
.registers = 11,
.flags = CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE,
.leftreg = TDA9855_VL,
.rightreg = TDA9855_VR,
.bassreg = TDA9855_BA,
.treblereg = TDA9855_TR,
.volfunc = tda9855_volume,
.bassfunc = tda9855_bass,
.treblefunc = tda9855_treble,
.getmode = tda985x_getmode,
.setmode = tda985x_setmode,
.init = { 12, { 0, 0x6f, 0x6f, 0x0e, 0x07<<1, 0x8<<2,
TDA9855_MUTE | TDA9855_AVL | TDA9855_LOUD | TDA9855_INT,
TDA985x_STEREO | TDA9855_LINEAR | TDA9855_TZCM | TDA9855_VZCM,
0x07, 0x10, 0x10, 0x03 }}
},
{
name: "tea6300",
id: I2C_DRIVERID_TEA6300,
insmodopt: &tea6300,
addr_lo: I2C_TEA6300 >> 1,
addr_hi: I2C_TEA6300 >> 1,
registers: 6,
flags: CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE | CHIP_HAS_INPUTSEL,
leftreg: TEA6300_VR,
rightreg: TEA6300_VL,
bassreg: TEA6300_BA,
treblereg: TEA6300_TR,
volfunc: tea6300_shift10,
bassfunc: tea6300_shift12,
treblefunc: tea6300_shift12,
inputreg: TEA6300_S,
inputmap: { TEA6300_S_SA, TEA6300_S_SB, TEA6300_S_SC },
inputmute: TEA6300_S_GMU,
.name = "tea6300",
.id = I2C_DRIVERID_TEA6300,
.insmodopt = &tea6300,
.addr_lo = I2C_TEA6300 >> 1,
.addr_hi = I2C_TEA6300 >> 1,
.registers = 6,
.flags = CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE | CHIP_HAS_INPUTSEL,
.leftreg = TEA6300_VR,
.rightreg = TEA6300_VL,
.bassreg = TEA6300_BA,
.treblereg = TEA6300_TR,
.volfunc = tea6300_shift10,
.bassfunc = tea6300_shift12,
.treblefunc = tea6300_shift12,
.inputreg = TEA6300_S,
.inputmap = { TEA6300_S_SA, TEA6300_S_SB, TEA6300_S_SC },
.inputmute = TEA6300_S_GMU,
},
{
name: "tea6420",
id: I2C_DRIVERID_TEA6420,
insmodopt: &tea6420,
addr_lo: I2C_TEA6420 >> 1,
addr_hi: I2C_TEA6420 >> 1,
registers: 1,
flags: CHIP_HAS_INPUTSEL,
inputreg: -1,
inputmap: { TEA6420_S_SA, TEA6420_S_SB, TEA6420_S_SC },
inputmute: TEA6300_S_GMU,
.name = "tea6420",
.id = I2C_DRIVERID_TEA6420,
.insmodopt = &tea6420,
.addr_lo = I2C_TEA6420 >> 1,
.addr_hi = I2C_TEA6420 >> 1,
.registers = 1,
.flags = CHIP_HAS_INPUTSEL,
.inputreg = -1,
.inputmap = { TEA6420_S_SA, TEA6420_S_SB, TEA6420_S_SC },
.inputmute = TEA6300_S_GMU,
},
{
name: "tda8425",
id: I2C_DRIVERID_TDA8425,
insmodopt: &tda8425,
addr_lo: I2C_TDA8425 >> 1,
addr_hi: I2C_TDA8425 >> 1,
registers: 9,
flags: CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE | CHIP_HAS_INPUTSEL,
leftreg: TDA8425_VR,
rightreg: TDA8425_VL,
bassreg: TDA8425_BA,
treblereg: TDA8425_TR,
volfunc: tda8425_shift10,
bassfunc: tda8425_shift12,
treblefunc: tda8425_shift12,
inputreg: TDA8425_S1,
inputmap: { TDA8425_S1_CH1, TDA8425_S1_CH1, TDA8425_S1_CH1 },
inputmute: TDA8425_S1_OFF,
setmode: tda8425_setmode,
.name = "tda8425",
.id = I2C_DRIVERID_TDA8425,
.insmodopt = &tda8425,
.addr_lo = I2C_TDA8425 >> 1,
.addr_hi = I2C_TDA8425 >> 1,
.registers = 9,
.flags = CHIP_HAS_VOLUME | CHIP_HAS_BASSTREBLE | CHIP_HAS_INPUTSEL,
.leftreg = TDA8425_VR,
.rightreg = TDA8425_VL,
.bassreg = TDA8425_BA,
.treblereg = TDA8425_TR,
.volfunc = tda8425_shift10,
.bassfunc = tda8425_shift12,
.treblefunc = tda8425_shift12,
.inputreg = TDA8425_S1,
.inputmap = { TDA8425_S1_CH1, TDA8425_S1_CH1, TDA8425_S1_CH1 },
.inputmute = TDA8425_S1_OFF,
.setmode = tda8425_setmode,
},
{
name: "pic16c54 (PV951)",
id: I2C_DRIVERID_PIC16C54_PV951,
insmodopt: &pic16c54,
addr_lo: I2C_PIC16C54 >> 1,
addr_hi: I2C_PIC16C54>> 1,
registers: 2,
flags: CHIP_HAS_INPUTSEL,
inputreg: PIC16C54_REG_MISC,
inputmap: {PIC16C54_MISC_SND_NOTMUTE|PIC16C54_MISC_SWITCH_TUNER,
.name = "pic16c54 (PV951)",
.id = I2C_DRIVERID_PIC16C54_PV951,
.insmodopt = &pic16c54,
.addr_lo = I2C_PIC16C54 >> 1,
.addr_hi = I2C_PIC16C54>> 1,
.registers = 2,
.flags = CHIP_HAS_INPUTSEL,
.inputreg = PIC16C54_REG_MISC,
.inputmap = {PIC16C54_MISC_SND_NOTMUTE|PIC16C54_MISC_SWITCH_TUNER,
PIC16C54_MISC_SND_NOTMUTE|PIC16C54_MISC_SWITCH_LINE,
PIC16C54_MISC_SND_NOTMUTE|PIC16C54_MISC_SWITCH_LINE,
PIC16C54_MISC_SND_MUTE,PIC16C54_MISC_SND_MUTE,
PIC16C54_MISC_SND_NOTMUTE},
inputmute: PIC16C54_MISC_SND_MUTE,
.inputmute = PIC16C54_MISC_SND_MUTE,
},
{ name: NULL } /* EOF */
{ .name = NULL } /* EOF */
};
......@@ -1544,19 +1544,19 @@ static int chip_command(struct i2c_client *client,
static struct i2c_driver driver = {
name: "generic i2c audio driver",
id: I2C_DRIVERID_TVAUDIO,
flags: I2C_DF_NOTIFY,
attach_adapter: chip_probe,
detach_client: chip_detach,
command: chip_command,
.name = "generic i2c audio driver",
.id = I2C_DRIVERID_TVAUDIO,
.flags = I2C_DF_NOTIFY,
.attach_adapter = chip_probe,
.detach_client = chip_detach,
.command = chip_command,
};
static struct i2c_client client_template =
{
name: "(unset)",
flags: I2C_CLIENT_ALLOW_USE,
driver: &driver,
.name = "(unset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
};
static int audiochip_init_module(void)
......
......@@ -217,19 +217,19 @@ static int tvmixer_release(struct inode *inode, struct file *file)
static struct i2c_driver driver = {
name: "tv card mixer driver",
id: I2C_DRIVERID_TVMIXER,
flags: I2C_DF_DUMMY,
attach_adapter: tvmixer_adapters,
detach_client: tvmixer_clients,
.name = "tv card mixer driver",
.id = I2C_DRIVERID_TVMIXER,
.flags = I2C_DF_DUMMY,
.attach_adapter = tvmixer_adapters,
.detach_client = tvmixer_clients,
};
static struct file_operations tvmixer_fops = {
owner: THIS_MODULE,
llseek: no_llseek,
ioctl: tvmixer_ioctl,
open: tvmixer_open,
release: tvmixer_release,
.owner = THIS_MODULE,
.llseek = no_llseek,
.ioctl = tvmixer_ioctl,
.open = tvmixer_open,
.release = tvmixer_release,
};
/* ----------------------------------------------------------------------- */
......
......@@ -926,9 +926,9 @@ videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
static struct vm_operations_struct videobuf_vm_ops =
{
open: videobuf_vm_open,
close: videobuf_vm_close,
nopage: videobuf_vm_nopage,
.open = videobuf_vm_open,
.close = videobuf_vm_close,
.nopage = videobuf_vm_nopage,
};
int videobuf_mmap_setup(struct file *file, struct videobuf_queue *q,
......
......@@ -472,9 +472,9 @@ void video_unregister_device(struct video_device *vfd)
static struct file_operations video_fops=
{
owner: THIS_MODULE,
llseek: no_llseek,
open: video_open,
.owner = THIS_MODULE,
.llseek = no_llseek,
.open = video_open,
};
/*
......
......@@ -222,14 +222,14 @@ static int vino_mmap(struct video_device *dev, const char *adr,
}
static struct video_device vino_dev = {
owner: THIS_MODULE,
name: "Vino IndyCam/TV",
type: VID_TYPE_CAPTURE,
hardware: VID_HARDWARE_VINO,
open: vino_open,
close: vino_close,
ioctl: vino_ioctl,
mmap: vino_mmap,
.owner = THIS_MODULE,
.name = "Vino IndyCam/TV",
.type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_VINO,
.open = vino_open,
.close = vino_close,
.ioctl = vino_ioctl,
.mmap = vino_mmap,
};
int __init init_vino(struct video_device *dev)
......
......@@ -179,19 +179,19 @@ static int w9966_v4l_read(struct file *file, char *buf,
size_t count, loff_t *ppos);
static struct file_operations w9966_fops = {
owner: THIS_MODULE,
open: video_exclusive_open,
release: video_exclusive_release,
ioctl: w9966_v4l_ioctl,
read: w9966_v4l_read,
llseek: no_llseek,
.owner = THIS_MODULE,
.open = video_exclusive_open,
.release = video_exclusive_release,
.ioctl = w9966_v4l_ioctl,
.read = w9966_v4l_read,
.llseek = no_llseek,
};
static struct video_device w9966_template = {
owner: THIS_MODULE,
name: W9966_DRIVERNAME,
type: VID_TYPE_CAPTURE | VID_TYPE_SCALES,
hardware: VID_HARDWARE_W9966,
fops: &w9966_fops,
.owner = THIS_MODULE,
.name = W9966_DRIVERNAME,
.type = VID_TYPE_CAPTURE | VID_TYPE_SCALES,
.hardware = VID_HARDWARE_W9966,
.fops = &w9966_fops,
};
/*
......@@ -710,14 +710,13 @@ static int w9966_v4l_do_ioctl(struct inode *inode, struct file *file,
case VIDIOCGCAP:
{
static struct video_capability vcap = {
name: W9966_DRIVERNAME,
type: VID_TYPE_CAPTURE | VID_TYPE_SCALES,
channels: 1,
audios: 0,
maxwidth: W9966_WND_MAX_W,
maxheight: W9966_WND_MAX_H,
minwidth: 2,
minheight: 1,
.name = W9966_DRIVERNAME,
.type = VID_TYPE_CAPTURE | VID_TYPE_SCALES,
.channels = 1,
.maxwidth = W9966_WND_MAX_W,
.maxheight = W9966_WND_MAX_H,
.minwidth = 2,
.minheight = 1,
};
struct video_capability *cap = arg;
*cap = vcap;
......
......@@ -4396,18 +4396,18 @@ static int zoran_init_done(struct video_device *dev)
}
static struct video_device zoran_template = {
owner: THIS_MODULE,
name: ZORAN_NAME,
type: VID_TYPE_CAPTURE | VID_TYPE_OVERLAY | VID_TYPE_CLIPPING |
.owner = THIS_MODULE,
.name = ZORAN_NAME,
.type = VID_TYPE_CAPTURE | VID_TYPE_OVERLAY | VID_TYPE_CLIPPING |
VID_TYPE_FRAMERAM | VID_TYPE_SCALES | VID_TYPE_SUBCAPTURE,
hardware: ZORAN_HARDWARE,
open: zoran_open,
close: zoran_close,
read: zoran_read,
write: zoran_write,
ioctl: zoran_ioctl,
mmap: zoran_mmap,
initialize: zoran_init_done,
.hardware = ZORAN_HARDWARE,
.open = zoran_open,
.close = zoran_close,
.read = zoran_read,
.write = zoran_write,
.ioctl = zoran_ioctl,
.mmap = zoran_mmap,
.initialize = zoran_init_done,
};
/*
......
......@@ -1490,18 +1490,18 @@ int zoran_mmap(struct vm_area_struct *vma, struct video_device* dev, const char*
static struct video_device zr36120_template=
{
owner: THIS_MODULE,
name: "UNSET",
type: VID_TYPE_TUNER|VID_TYPE_CAPTURE|VID_TYPE_OVERLAY,
hardware: VID_HARDWARE_ZR36120,
open: zoran_open,
close: zoran_close,
read: zoran_read,
write: zoran_write,
poll: zoran_poll,
ioctl: zoran_ioctl,
mmap: zoran_mmap,
minor: -1,
.owner = THIS_MODULE,
.name = "UNSET",
.type = VID_TYPE_TUNER|VID_TYPE_CAPTURE|VID_TYPE_OVERLAY,
.hardware = VID_HARDWARE_ZR36120,
.open = zoran_open,
.close = zoran_close,
.read = zoran_read,
.write = zoran_write,
.poll = zoran_poll,
.ioctl = zoran_ioctl,
.mmap = zoran_mmap,
.minor = -1,
};
static
......@@ -1826,17 +1826,17 @@ int vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
static struct video_device vbi_template=
{
owner: THIS_MODULE,
name: "UNSET",
type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT,
hardware: VID_HARDWARE_ZR36120,
open: vbi_open,
close: vbi_close,
read: vbi_read,
write: zoran_write,
poll: vbi_poll,
ioctl: vbi_ioctl,
minor: -1,
.owner = THIS_MODULE,
.name = "UNSET",
.type = VID_TYPE_CAPTURE|VID_TYPE_TELETEXT,
.hardware = VID_HARDWARE_ZR36120,
.open = vbi_open,
.close = vbi_close,
.read = vbi_read,
.write = zoran_write,
.poll = vbi_poll,
.ioctl = vbi_ioctl,
.minor = -1,
};
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment