• Laurent Pinchart's avatar
    v4l: tvp5150: Reset device at probe time, not in get/set format handlers · d25f9bfe
    Laurent Pinchart authored
    commit aff808e8 upstream.
    
    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.
    Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d25f9bfe
tvp5150.c 40.8 KB