• Anatolij Gustschin's avatar
    [media] mt9v022: fix the V4L2_CID_EXPOSURE control · 9bb047cd
    Anatolij Gustschin authored
    Since the MT9V022_TOTAL_SHUTTER_WIDTH register is controlled in manual
    mode by V4L2_CID_EXPOSURE control, it shouldn't be written directly in
    mt9v022_s_crop(). In manual mode this register should be set to the
    V4L2_CID_EXPOSURE control value. Changing this register directly and
    outside of the actual control function means that the register value
    is not in sync with the corresponding control value. Thus, the following
    problem is observed:
        - setting this control initially succeeds
        - VIDIOC_S_CROP ioctl() overwrites the MT9V022_TOTAL_SHUTTER_WIDTH
          register
        - setting this control to the same value again doesn't
          result in setting the register since the control value
          was previously cached and doesn't differ
    Remove MT9V022_TOTAL_SHUTTER_WIDTH register setting in mt9v022_s_crop()
    and add a comment explaining why it is not needed in manual mode.
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
    Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    9bb047cd
mt9v022.c 24.5 KB