media: video: tegra: update focuser working range
Sudhir Vyas [Thu, 16 May 2013 08:58:09 +0000 (13:58 +0530)]
Update ad5816 focuser calibrated working range.
Current settings do not give better results for
macro mode specifically.

Bug 1238213

Change-Id: Ic8b60081bda75ecf3158d98796c979528767dfcd
Signed-off-by: Sudhir Vyas <svyas@nvidia.com>
Reviewed-on: http://git-master/r/229267
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Sachin Nikam <snikam@nvidia.com>

drivers/media/video/tegra/ad5816.c

index 4741e1f..3db0c46 100644 (file)
 #define AD5816_FNUMBER                         (0x40333333) /* 2.8f */
 #define AD5816_SLEW_RATE               1
 #define AD5816_ACTUATOR_RANGE          1023
-#define AD5816_SETTLETIME              30
-#define AD5816_FOCUS_MACRO             620
-#define AD5816_FOCUS_INFINITY          70
+#define AD5816_SETTLETIME              20
+#define AD5816_FOCUS_MACRO             510
+#define AD5816_FOCUS_INFINITY          220
 #define AD5816_POS_LOW_DEFAULT         0
 #define AD5816_POS_HIGH_DEFAULT                1023
 #define AD5816_POS_CLAMP               0x03ff
 /* Need to decide exact value of VCM_THRESHOLD and its use */
 /* define AD5816_VCM_THRESHOLD 20 */
 
+/* Registers values */
+#define SCL_LOW_REG_VAL                        0xB6
+#define CONTROL_REG_VAL                        0x02
+#define MODE_REG_VAL                   0x42
+#define VCM_FREQ_REG_VAL               0x54
+
 static u8 ad5816_ids[] = {
        0x04,
 };
@@ -245,25 +251,25 @@ void ad5816_set_arc_mode(struct ad5816_info *info)
        int err;
 
        /* disable SCL low detection */
-       err = ad5816_i2c_wr8(info, SCL_LOW_DETECTION, 0xB6);
+       err = ad5816_i2c_wr8(info, SCL_LOW_DETECTION, SCL_LOW_REG_VAL);
        if (err)
                dev_err(&info->i2c_client->dev, "%s: Low detect write failed\n",
                        __func__);
 
        /* set ARC enable */
-       err = ad5816_i2c_wr8(info, CONTROL, 0x02);
+       err = ad5816_i2c_wr8(info, CONTROL, CONTROL_REG_VAL);
        if (err)
                dev_err(&info->i2c_client->dev,
                "%s: CONTROL reg write failed\n", __func__);
 
        /* set the ARC RES2 */
-       err = ad5816_i2c_wr8(info, MODE, 0x42);
+       err = ad5816_i2c_wr8(info, MODE, MODE_REG_VAL);
        if (err)
                dev_err(&info->i2c_client->dev,
                "%s: MODE reg write failed\n", __func__);
 
-       /* set the VCM_FREQ to 12.8mS */
-       err = ad5816_i2c_wr8(info, VCM_FREQ, 0x4B);
+       /* set the VCM_FREQ : Tres = 10.86ms fres = 92Hz */
+       err = ad5816_i2c_wr8(info, VCM_FREQ, VCM_FREQ_REG_VAL);
        if (err)
                dev_err(&info->i2c_client->dev,
                "%s: VCM_FREQ reg write failed\n", __func__);