Re: [PATCH] mt9v032: Correct the logic for the auto-exposure setting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kartik,

On Tuesday 08 May 2012 11:51:29 Kartik Mohta wrote:
> On Tue, May 8, 2012 at 7:12 AM, Laurent Pinchart wrote:
> > On Wednesday 02 May 2012 18:19:08 Kartik Mohta wrote:
> >> The driver uses the ctrl value passed in as a bool to determine whether
> >> to enable auto-exposure, but the auto-exposure setting is defined as an
> >> enum where AUTO has a value of 0 and MANUAL has a value of 1. This leads
> >> to a reversed logic where if you send in AUTO, it actually sets manual
> >> exposure and vice-versa.
> >> 
> >> Signed-off-by: Kartik Mohta <kartikmohta@xxxxxxxxx>
> >> ---
> >>  drivers/media/video/mt9v032.c |    8 +++++++-
> >>  1 file changed, 7 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/drivers/media/video/mt9v032.c
> >> b/drivers/media/video/mt9v032.c
> >> index 75e253a..8ea8737 100644
> >> --- a/drivers/media/video/mt9v032.c
> >> +++ b/drivers/media/video/mt9v032.c
> >> @@ -470,6 +470,7 @@ static int mt9v032_s_ctrl(struct v4l2_ctrl *ctrl)
> >>                       container_of(ctrl->handler, struct mt9v032, ctrls);
> >>       struct i2c_client *client = v4l2_get_subdevdata(&mt9v032->subdev);
> >>       u16 data;
> >> +     int aec_value;
> >> 
> >>       switch (ctrl->id) {
> >>       case V4L2_CID_AUTOGAIN:
> >> @@ -480,8 +481,13 @@ static int mt9v032_s_ctrl(struct v4l2_ctrl *ctrl)
> >>               return mt9v032_write(client, MT9V032_ANALOG_GAIN,
> >> ctrl->val);
> >> 
> >>       case V4L2_CID_EXPOSURE_AUTO:
> >> +             if(ctrl->val == V4L2_EXPOSURE_MANUAL)
> >> +                     aec_value = 0;
> >> +             else
> >> +                     aec_value = 1;
> >> +
> >>               return mt9v032_update_aec_agc(mt9v032, MT9V032_AEC_ENABLE,
> >> -                                           ctrl->val);
> >> +                                           aec_value);
> > 
> > What about just
> > 
> >                return mt9v032_update_aec_agc(mt9v032, MT9V032_AEC_ENABLE,
> >                                              !ctrl->val);
> > 
> > If you're fine with that change I'll modify the patch accordingly, there's
> > no need to resubmit (I'll of course keep the patch attribution).
> 
> That should work since the only supported exposure modes are auto and manual
> with enum values 0 and 1 respectively, but then aren't you depending on the
> values of the enum to not change in the future?

The values are part of the V4L2 public API so they can't change.

> Also the change gives an impression that the value is a bool which it is
> not. If that is fine, you can change it.

OK thank you.

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux