[PORT FROM R2] mt9e013: sometimes OTP memory initialized with error while sensor...
authorziyux.jiang <ziyux.jiang@intel.com>
Mon, 6 Feb 2012 16:17:19 +0000 (00:17 +0800)
committerbuildbot <buildbot@intel.com>
Mon, 13 Feb 2012 13:22:10 +0000 (05:22 -0800)
BZ: 23295

MT9E013_BYTE_MAX(that is, the block bytes for one times read) should be decreased
to 30 to not be bigger than rx fifo depth(=32), if MT9E013_BYTE_MAX >= 32, the OTP
data read from sensor via i2c may be corrupted.

Change-Id: Idbe3bf13ffcf194d8eec95268993afb5155fd488
Orig-Change-Id: Ic857285b0915ef9696345e94244531fe57fab7a2
Signed-off-by: ziyux.jiang <ziyux.jiang@intel.com>
Reviewed-on: http://android.intel.com:8080/34898
Reviewed-by: Koski, Anttu <anttu.koski@intel.com>
Tested-by: Koski, Anttu <anttu.koski@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/media/video/mt9e013.c
drivers/media/video/mt9e013.h

index fdba752..8ec50b0 100644 (file)
@@ -297,8 +297,11 @@ mt9e013_read_reg(struct i2c_client *client, u16 len, u16 reg, u16 *val)
        msg[1].buf = (u8 *)data;
 
        err = i2c_transfer(client->adapter, msg, 2);
-       if (err < 0)
+       if (err != 2) {
+               if (err >= 0)
+                       err = -EIO;
                goto error;
+       }
 
        /* high byte comes first */
        if (len == MT9E013_8BIT) {
index ab86d87..0d464d3 100644 (file)
 #define OTPM_COUNT 0x200
 
 /* Defines for register writes and register array processing */
-#define MT9E013_BYTE_MAX       32
+#define MT9E013_BYTE_MAX       30
 #define MT9E013_SHORT_MAX      16
 #define I2C_RETRY_COUNT                5
 #define MT9E013_TOK_MASK       0xfff0