V4L/DVB (9023): cx88: HVR3000 / 4000 GPIO related changes

Patch by Darron Broad.

Signed-off-by: Steven Toth <stoth@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Steven Toth 2008-09-22 01:48:13 -03:00 committed by Mauro Carvalho Chehab
parent 1cbd89dbde
commit 2491fbb7d5

View file

@ -1349,27 +1349,30 @@ static const struct cx88_board cx88_boards[] = {
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT,
.audio_chip = V4L2_IDENT_WM8775, .audio_chip = V4L2_IDENT_WM8775,
/*
* gpio0 as reported by Mike Crash <mike AT mikecrash.com>
*/
.input = {{ .input = {{
.type = CX88_VMUX_TELEVISION, .type = CX88_VMUX_TELEVISION,
.vmux = 0, .vmux = 0,
.gpio0 = 0xe780, .gpio0 = 0xef88,
.audioroute = 1, .audioroute = 1,
},{ },{
.type = CX88_VMUX_COMPOSITE1, .type = CX88_VMUX_COMPOSITE1,
.vmux = 1, .vmux = 1,
.gpio0 = 0xe780, .gpio0 = 0xef88,
.audioroute = 2, .audioroute = 2,
},{ },{
.type = CX88_VMUX_SVIDEO, .type = CX88_VMUX_SVIDEO,
.vmux = 2, .vmux = 2,
.gpio0 = 0xe780, .gpio0 = 0xef88,
.audioroute = 2, .audioroute = 2,
}}, }},
/* fixme: Add radio support */ /* fixme: Add radio support */
.mpeg = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD, .mpeg = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD,
.radio = { .radio = {
.type = CX88_RADIO, .type = CX88_RADIO,
.gpio0 = 0xe780, .gpio0 = 0xef88,
}, },
}, },
[CX88_BOARD_ADSTECH_PTV_390] = { [CX88_BOARD_ADSTECH_PTV_390] = {
@ -1680,6 +1683,26 @@ static const struct cx88_board cx88_boards[] = {
* S-Video 0xc4bf 0xc4bb * S-Video 0xc4bf 0xc4bb
* Composite1 0xc4ff 0xc4fb * Composite1 0xc4ff 0xc4fb
* S-Video1 0xc4ff 0xc4fb * S-Video1 0xc4ff 0xc4fb
*
* BIT VALUE FUNCTION GP{x}_IO
* 0 1 I:?
* 1 1 I:?
* 2 1 O:DVB-T DEMOD ENABLE LOW/ANALOG DEMOD ENABLE HIGH
* 3 1 I:?
* 4 1 I:?
* 5 1 I:?
* 6 0 O:INPUT SELECTOR 0=INTERNAL 1=EXPANSION
* 7 1 O:DVB-T DEMOD RESET LOW
*
* BIT VALUE FUNCTION GP{x}_OE
* 8 0 I
* 9 0 I
* a 1 O
* b 0 I
* c 0 I
* d 0 I
* e 1 O
* f 1 O
*/ */
.input = {{ .input = {{
.type = CX88_VMUX_TELEVISION, .type = CX88_VMUX_TELEVISION,
@ -2512,13 +2535,18 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
{ {
switch (core->boardnr) { switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300: case CX88_BOARD_HAUPPAUGE_HVR1300:
/* Bring the 702 demod up before i2c scanning/attach or devices are hidden */ /*
/* We leave here with the 702 on the bus */ * Bring the 702 demod up before i2c scanning/attach or devices are hidden
cx_write(MO_GP0_IO, 0x0000e780); * We leave here with the 702 on the bus
*
* "reset the IR receiver on GPIO[3]"
* Reported by Mike Crash <mike AT mikecrash.com>
*/
cx_write(MO_GP0_IO, 0x0000ef88);
udelay(1000); udelay(1000);
cx_clear(MO_GP0_IO, 0x00000080); cx_clear(MO_GP0_IO, 0x00000088);
udelay(50); udelay(50);
cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */ cx_set(MO_GP0_IO, 0x00000088); /* 702 out of reset */
udelay(1000); udelay(1000);
break; break;
@ -2531,15 +2559,18 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
msleep(10); msleep(10);
break; break;
case CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD: case CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD:
/* Enable the xc5000 tuner */ /* Enable the xc5000 tuner */
cx_set(MO_GP0_IO, 0x00001010); cx_set(MO_GP0_IO, 0x00001010);
break; break;
case CX88_BOARD_HAUPPAUGE_HVR3000:
case CX88_BOARD_HAUPPAUGE_HVR4000: case CX88_BOARD_HAUPPAUGE_HVR4000:
case CX88_BOARD_HAUPPAUGE_HVR4000LITE: case CX88_BOARD_HAUPPAUGE_HVR4000LITE:
/* Init GPIO to allow tuner to attach */ /* Init GPIO */
cx_write(MO_GP0_IO, 0x0000c4bf); cx_write(MO_GP0_IO, core->board.input[0].gpio0);
udelay(1000); udelay(1000);
break;
} }
} }