[media] mt9v022: fix the V4L2_CID_EXPOSURE control
authorAnatolij Gustschin <agust@denx.de>
Thu, 27 Sep 2012 22:04:34 +0000 (19:04 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 22 Nov 2012 12:59:49 +0000 (10:59 -0200)
commit9bb047cd1a7efc162205ce48013ef3a2287b0e9f
tree8522444989866fb82338641339cdc3b9ccaf3380
parentf1ccccaf23132a2eda036dd3978ebe3f020c5af9
[media] mt9v022: fix the V4L2_CID_EXPOSURE control

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: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/i2c/soc_camera/mt9v022.c