[linux-dvb] Fix for HVR1300 remote

Mike Crash mike at mikecrash.com
Tue Nov 13 22:05:29 CET 2007


There are some bugs that prevent working of remote control with
Hauppauge HVR1300 cards. I don't know what a convention for submitting
bugs and patches here, so i simply post to mailing list.

First, there is missing break statement in probe of Z8F0811 controller
in ir-kbd-i2c.c in function ir_probe, line 552:

...
    case I2C_HW_B_CX2388x:
        probe = probe_cx88;
        break;
    case I2C_HW_B_CX23885:
...

Second "bug" is related to initialization of Z8F0811 controller. Reset
of this 8-bit microcontroller is connected to GPIO[3] of CX23882 chip,
it was previously configured as input, so the reset pin was floating
which mostly was 0(=reset), but sometimes in 1 (and then the controller
was working). So we must initialize this GPIO pin to output and reset
Z8F0811correctly. We can use the code for reseting CX22702 here - it
makes the same.
So in cx88-cards.c we replace the code in function
cx88_card_setup_pre_i2c line 1923 to:

....
static void cx88_card_setup_pre_i2c(struct cx88_core *core)
{
    switch (core->boardnr) {
    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 */
        /* also reset the IR receiver on GPIO[3] */
        cx_write(MO_GP0_IO, 0x0000ef88);
        udelay(1000);
        cx_clear(MO_GP0_IO, 0x00000088);
        udelay(50);
        cx_set(MO_GP0_IO, 0x00000088); /* 702 out of reset */
        udelay(1000);
        break;
    }
}
....


and also in card init structures, line 1372, change .gpio0  from  0xe780
to 0xef88

.....
    [CX88_BOARD_HAUPPAUGE_HVR1300] = {
        .name        = "Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder",
        .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
        .radio_type    = UNSET,
        .tuner_addr    = ADDR_UNSET,
        .radio_addr    = ADDR_UNSET,
        .tda9887_conf   = TDA9887_PRESENT,
        .audio_chip     = AUDIO_CHIP_WM8775,
        .input        = {{
            .type   = CX88_VMUX_TELEVISION,
            .vmux   = 0,
            .gpio0    = 0xef88,
            .audioroute = 1,
        },{
            .type    = CX88_VMUX_COMPOSITE1,
            .vmux    = 1,
            .gpio0    = 0xef88,
            .audioroute = 2,
        },{
            .type    = CX88_VMUX_SVIDEO,
            .vmux    = 2,
            .gpio0    = 0xef88,
            .audioroute = 2,
        }},
        /* fixme: Add radio support */
        .mpeg           = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD,
    },
.....


Now the card works good in DVB and analog, but there is still one bug:
the tuner is not recognized properly before demodulator and pll
initialization. This should be done by this card in analog parts too,
not only dvb. But i am missing some information - datasheets for the
tuner FMD1216ME and CX22702, is there somebody to send it to me? (Trent
Piepho, Steven Toth talked about this problem here:
http://www.linuxtv.org/pipermail/linux-dvb/2007-March/016585.html)

Thanks for applying patches and for help





More information about the linux-dvb mailing list