Skip to content
  • Mike Isely's avatar
    V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840 · e17d787c
    Mike Isely authored
    
    
    The cx25840 module requires that its VBI initialization entry point be
    called in order for hardware-scaled video capture to work properly -
    even if we don't care about VBI.  Making this behavior even more
    subtle is that if the capture resolution is set to 720x480 - which is
    the default that the pvrusb2 driver sets up - then the cx25840
    bypasses the hardware scaler.  Therefore this problem does not
    manifest itself until some other resolution, e.g. 640x480, is tried.
    MythTV typically defaults to 640x480 or 480x480, which means that
    things break whenever the driver is used with MythTV.
    
    This all has been known for a while (since at least Nov 2006), but
    recent changes in the pvrusb2 driver (specifically in regards to
    sub-device support) caused this to break again.  VBI initialization
    must happen *after* the chip's firmware is loaded, not before.  With
    this fix, 24xxx devices work correctly again.
    
    A related fix that is part of this changeset is that now we
    re-initialize VBI any time after we issue a reset to the cx25840
    driver.  Issuing a chip reset erases the state that the VBI setup
    previously did.  Until the HVR-1950 came along this subtlety went
    unnoticed, because the pvrusb2 driver previously never issued such a
    reset.  But with the HVR-1950 we have to do that reset in order to
    correctly transition from digital back to analog mode - and since the
    HVR-1950 always starts in digital mode (required for the DVB side to
    initialize correctly) then this device has never had a chance to work
    correctly in analog mode!  Analog capture on the HVR-1950 has been
    broken this *ENTIRE* time.  I had missed it until now because I've
    usually been testing at the default 720x480 resolution which does not
    require scaling...  What fun.  By re-initializing VBI after a cx25840
    chip reset, correct behavior is restored.
    
    Signed-off-by: default avatarMike Isely <isely@pobox.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    e17d787c