• Andrey Konovalov's avatar
    media: camss: use v4l2_get_link_freq() to calculate the relevant clocks · 78c2cc28
    Andrey Konovalov authored
    There are places in the camss driver where camss_get_pixel_clock() is
    called to get the pixel rate (using V4L2_CID_PIXEL_RATE control) and to
    calculate the link frequency from it. There is a case when this would
    not work: when V4L2_CID_PIXEL_RATE gets the rate at which the pixels are
    read (sampled) from the sensor's pixel array, and this rate is different
    from the pixel transmission rate over the CSI link, the link frequency
    value can't be calculated from the pixel rate. One needs to use
    V4L2_CID_LINK_FREQ to get the link frequency in this case.
    
    Replace such calls to camss_get_pixel_clock() with calls to a wrapper
    around v4l2_get_link_freq(). v4l2_get_link_freq() tries V4L2_CID_LINK_FREQ
    first, and if it is not implemented by the camera sensor driver, falls
    back to V4L2_CID_PIXEL_RATE to calculate the link frequency value from.
    
    Calls to camss_get_pixel_clock() from vfe_[check,set]_clock_rates()
    are left intact as it looks like this VFE clock does depend on the
    rate the pixel samples comes out of the camera sensor, not on the
    frequency at which the link between the sensor and the CSI receiver
    operates.
    Signed-off-by: default avatarAndrey Konovalov <andrey.konovalov@linaro.org>
    Acked-by: default avatarRobert Foss <robert.foss@linaro.org>
    Reviewed-by: default avatarJacopo Mondi <jacopo@jmondi.org>
    Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
    78c2cc28
camss.h 2.81 KB