• Laurent Pinchart's avatar
    [media] v4l: tvp5150: Reset device at probe time, not in get/set format handlers · aff808e8
    Laurent Pinchart authored
    The tvp5150 doesn't support format setting through the subdev pad API
    and thus implements the set format handler as a get format operation.
    The single handler, tvp5150_fill_fmt(), resets the device by calling
    tvp5150_reset(). This causes malfunction as the device can be reset at
    will, possibly from userspace when the subdev userspace API is enabled.
    
    The reset call was added in commit ec2c4f3f ("[media] media:
    tvp5150: Add mbus_fmt callbacks"), probably as an attempt to set the
    device to a known state before detecting the current TV standard.
    However, the get format handler doesn't access the hardware to get the
    TV standard since commit 963ddc63 ("[media] media: tvp5150: Add
    cropping support"). There is thus no need to reset the device when
    getting the format.
    
    However, removing the tvp5150_reset() from the get/set format handlers
    results in the function not being called at all if the bridge driver
    doesn't use the .reset() operation. The operation is nowadays abused and
    shouldn't be used, so shouldn't expect bridge drivers to call it. To
    make sure the device is properly initialize, move the reset call from
    the format handlers to the probe function.
    
    Cc: stable@vger.kernel.org # For Kernel 4.5 and upper
    Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    aff808e8
tvp5150.c 41.5 KB