[PATCH] v4l: 712: added analog support for ati hdtv wonder
- Added analog support for ATI HDTV Wonder Signed-off-by: Kirk Lapray <kirk.lapray@gmail.com> Signed-off-by: Michael Krufky <mkrufky@m1k.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
cf583ac40d
commit
e976f93725
|
@ -32,3 +32,4 @@
|
||||||
31 -> DViCO FusionHDTV 5 Gold [18ac:d500]
|
31 -> DViCO FusionHDTV 5 Gold [18ac:d500]
|
||||||
32 -> AverMedia UltraTV Media Center PCI 550 [1461:8011]
|
32 -> AverMedia UltraTV Media Center PCI 550 [1461:8011]
|
||||||
33 -> Kworld V-Stream Xpert DVD
|
33 -> Kworld V-Stream Xpert DVD
|
||||||
|
34 -> ATI HDTV Wonder [1002:a101]
|
||||||
|
|
|
@ -66,3 +66,4 @@ tuner=64 - LG TDVS-H062F/TUA6034
|
||||||
tuner=65 - Ymec TVF66T5-B/DFF
|
tuner=65 - Ymec TVF66T5-B/DFF
|
||||||
tuner=66 - LG NTSC (TALN mini series)
|
tuner=66 - LG NTSC (TALN mini series)
|
||||||
tuner=67 - Philips TD1316 Hybrid Tuner
|
tuner=67 - Philips TD1316 Hybrid Tuner
|
||||||
|
tuner=68 - Philips TUV1236D ATSC/NTSC dual in
|
||||||
|
|
|
@ -823,6 +823,35 @@ struct cx88_board cx88_boards[] = {
|
||||||
.gpio3 = 0x00100000,
|
.gpio3 = 0x00100000,
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
[CX88_BOARD_ATI_HDTVWONDER] = {
|
||||||
|
.name = "ATI HDTV Wonder",
|
||||||
|
.tuner_type = TUNER_PHILIPS_TUV1236D,
|
||||||
|
.radio_type = UNSET,
|
||||||
|
.tuner_addr = ADDR_UNSET,
|
||||||
|
.radio_addr = ADDR_UNSET,
|
||||||
|
.input = {{
|
||||||
|
.type = CX88_VMUX_TELEVISION,
|
||||||
|
.vmux = 0,
|
||||||
|
.gpio0 = 0x00000ff7,
|
||||||
|
.gpio1 = 0x000000ff,
|
||||||
|
.gpio2 = 0x00000001,
|
||||||
|
.gpio3 = 0x00000000,
|
||||||
|
},{
|
||||||
|
.type = CX88_VMUX_COMPOSITE1,
|
||||||
|
.vmux = 1,
|
||||||
|
.gpio0 = 0x00000ffe,
|
||||||
|
.gpio1 = 0x000000ff,
|
||||||
|
.gpio2 = 0x00000001,
|
||||||
|
.gpio3 = 0x00000000,
|
||||||
|
},{
|
||||||
|
.type = CX88_VMUX_SVIDEO,
|
||||||
|
.vmux = 2,
|
||||||
|
.gpio0 = 0x00000ffe,
|
||||||
|
.gpio1 = 0x000000ff,
|
||||||
|
.gpio2 = 0x00000001,
|
||||||
|
.gpio3 = 0x00000000,
|
||||||
|
}},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
|
const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
|
||||||
|
|
||||||
|
@ -958,6 +987,10 @@ struct cx88_subid cx88_subids[] = {
|
||||||
.subvendor = 0x1461,
|
.subvendor = 0x1461,
|
||||||
.subdevice = 0x8011,
|
.subdevice = 0x8011,
|
||||||
.card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550,
|
.card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550,
|
||||||
|
},{
|
||||||
|
.subvendor = PCI_VENDOR_ID_ATI,
|
||||||
|
.subdevice = 0xa101,
|
||||||
|
.card = CX88_BOARD_ATI_HDTVWONDER,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
|
const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
|
||||||
|
@ -1159,6 +1192,22 @@ void cx88_card_setup(struct cx88_core *core)
|
||||||
cx_clear(MO_GP0_IO, 0x00000007);
|
cx_clear(MO_GP0_IO, 0x00000007);
|
||||||
cx_set(MO_GP2_IO, 0x00000101);
|
cx_set(MO_GP2_IO, 0x00000101);
|
||||||
break;
|
break;
|
||||||
|
case CX88_BOARD_ATI_HDTVWONDER:
|
||||||
|
if (0 == core->i2c_rc) {
|
||||||
|
/* enable tuner */
|
||||||
|
int i;
|
||||||
|
u8 buffer[12];
|
||||||
|
core->i2c_client.addr = 0x0a;
|
||||||
|
buffer[0] = 0x10; buffer[1] = 0x12; buffer[2] = 0x13; buffer[3] = 0x04;
|
||||||
|
buffer[4] = 0x16; buffer[5] = 0x00; buffer[6] = 0x14; buffer[7] = 0x04;
|
||||||
|
buffer[8] = 0x14; buffer[9] = 0x00; buffer[10] = 0x17; buffer[11] = 0x00;
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2))
|
||||||
|
printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n",
|
||||||
|
core->name, i);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (cx88_boards[core->board].radio.type == CX88_RADIO)
|
if (cx88_boards[core->board].radio.type == CX88_RADIO)
|
||||||
core->has_radio = 1;
|
core->has_radio = 1;
|
||||||
|
|
|
@ -176,6 +176,7 @@ extern struct sram_channel cx88_sram_channels[];
|
||||||
#define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
|
#define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
|
||||||
#define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
|
#define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
|
||||||
#define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
|
#define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
|
||||||
|
#define CX88_BOARD_ATI_HDTVWONDER 34
|
||||||
|
|
||||||
enum cx88_itype {
|
enum cx88_itype {
|
||||||
CX88_VMUX_COMPOSITE1 = 1,
|
CX88_VMUX_COMPOSITE1 = 1,
|
||||||
|
|
|
@ -233,7 +233,7 @@ static struct tunertype tuners[] = {
|
||||||
{ "Ymec TVision TVF-5533MF", Philips, NTSC,
|
{ "Ymec TVision TVF-5533MF", Philips, NTSC,
|
||||||
16*160.00,16*454.00,0x01,0x02,0x04,0x8e,732},
|
16*160.00,16*454.00,0x01,0x02,0x04,0x8e,732},
|
||||||
|
|
||||||
/* 60-67 */
|
/* 60-68 */
|
||||||
{ "Thomson DDT 7611 (ATSC/NTSC)", THOMSON, ATSC,
|
{ "Thomson DDT 7611 (ATSC/NTSC)", THOMSON, ATSC,
|
||||||
16*157.25,16*454.00,0x39,0x3a,0x3c,0x8e,732},
|
16*157.25,16*454.00,0x39,0x3a,0x3c,0x8e,732},
|
||||||
{ "Tena TNF9533-D/IF/TNF9533-B/DF", Philips, PAL,
|
{ "Tena TNF9533-D/IF/TNF9533-B/DF", Philips, PAL,
|
||||||
|
@ -250,6 +250,8 @@ static struct tunertype tuners[] = {
|
||||||
16*137.25,16*373.25,0x01,0x02,0x08,0x8e,732 },
|
16*137.25,16*373.25,0x01,0x02,0x08,0x8e,732 },
|
||||||
{ "Philips TD1316 Hybrid Tuner", Philips, PAL,
|
{ "Philips TD1316 Hybrid Tuner", Philips, PAL,
|
||||||
16*160.00,16*442.00,0xa1,0xa2,0xa4,0xc8,623 },
|
16*160.00,16*442.00,0xa1,0xa2,0xa4,0xc8,623 },
|
||||||
|
{ "Philips TUV1236D ATSC/NTSC dual in", Philips, ATSC,
|
||||||
|
16*157.25,16*454.00,0x01,0x02,0x03,0xce,732 },
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned const int tuner_count = ARRAY_SIZE(tuners);
|
unsigned const int tuner_count = ARRAY_SIZE(tuners);
|
||||||
|
@ -375,6 +377,17 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq)
|
||||||
/* Set the charge pump for fast tuning */
|
/* Set the charge pump for fast tuning */
|
||||||
tun->config |= TUNER_CHARGE_PUMP;
|
tun->config |= TUNER_CHARGE_PUMP;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TUNER_PHILIPS_TUV1236D:
|
||||||
|
/* 0x40 -> ATSC antenna input 1 */
|
||||||
|
/* 0x48 -> ATSC antenna input 2 */
|
||||||
|
/* 0x00 -> NTSC antenna input 1 */
|
||||||
|
/* 0x08 -> NTSC antenna input 2 */
|
||||||
|
config &= ~0x40;
|
||||||
|
if (t->std & V4L2_STD_ATSC)
|
||||||
|
config |= 0x40;
|
||||||
|
/* FIXME: input */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -112,6 +112,8 @@
|
||||||
#define TUNER_LG_NTSC_TALN_MINI 66
|
#define TUNER_LG_NTSC_TALN_MINI 66
|
||||||
#define TUNER_PHILIPS_TD1316 67
|
#define TUNER_PHILIPS_TD1316 67
|
||||||
|
|
||||||
|
#define TUNER_PHILIPS_TUV1236D 68 /* ATI HDTV Wonder */
|
||||||
|
|
||||||
#define NOTUNER 0
|
#define NOTUNER 0
|
||||||
#define PAL 1 /* PAL_BG */
|
#define PAL 1 /* PAL_BG */
|
||||||
#define PAL_I 2
|
#define PAL_I 2
|
||||||
|
|
Loading…
Reference in New Issue