• Guennadi Liakhovetski's avatar
    [media] V4L2: soc-camera: work around unbalanced calls to .s_power() · 40f07533
    Guennadi Liakhovetski authored
    Some non soc-camera drivers, e.g. em28xx, use subdevice drivers, originally
    written for soc-camera, which use soc_camera_power_on() and
    soc_camera_power_off() helpers to implement their .s_power() methods. Those
    helpers in turn can enable and disable a clock, if it is supplied to them
    as a parameter. This works well when camera host drivers balance their
    calls to subdevices' .s_power() methods. However, some such drivers fail to
    do that, which leads to unbalanced calls to v4l2_clk_enable() /
    v4l2_clk_disable(), which then in turn produce kernel warnings. Such
    behaviour is wrong and should be fixed, however, sometimes it is difficult,
    because some of those drivers are rather old and use lots of subdevices,
    which all should be tested after such a fix. To support such drivers this
    patch adds a work-around, allowing host drivers or platforms to set a flag,
    in which case soc-camera helpers will only enable the clock, if it is
    disabled, and disable it only once on the first call to .s_power(0).
    Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
    Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
    40f07533
soc_camera.h 13.6 KB