• Wojciech Migda's avatar
    V4L/DVB (7294): : tuner and radio addresses are missing for the PixelView PlayTV card · 27dea3eb
    Wojciech Migda authored
    The PixelView PlayTV card definition structure was missing initialization of
    the tuner_addr and radio_addr fields. As a result it was impossible to have the
    tuner initialized using parameters specified while loading the bttv.ko module.
    
    This regression became visible after the v4l rearrangements introduced
    somewhere around 2.6.15 kernel version.
    
    The root cause for the tuner initialization failure is located in the
    attach_inform function in the bttv-i2c.c file.
    
    There at the very beginning the addr variable holding the tuner device address
    is initialized with the value taken from the bttv_tvcards array.
    
    For the PixelView PlayTV card the tuner address field (and the radio address as
    well) was uninitialized, and thus equal 0. Later in that function execution of
    the TUNER_SET_TYPE_ADDR tuner command is guarded with check for the tuner
    address either equal ADDR_UNSET, or client->addr.
    
    Since both are non-zero (the latter in case of the card owned by me at the
    runtime is equal 0x61) the TUNER_SET_TYPE_ADDR command is not executed, and
    consequently in the tuner_attach function in the tuner-core.c file call to
    i2c_attach_client does not result in assigning the tuner type variable with the
    requested value.
    
    Providing initialization of the tuner_addr and radio_addr with ADDR_UNSET
    values as it is already done for other tv cards defined in bttv-cards.c ensures
    that the tuner initialization is done correctly, just as it used to be in the
    2.6.14 kernel.
    Signed-off-by: default avatarWojciech Migda <wojtek.golf@interia.pl>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
    27dea3eb
bttv-cards.c 140 KB