From b35aedcbab8ac740c8e80b73b0ceebe2e15a0d95 Mon Sep 17 00:00:00 2001 From: ddl Date: Tue, 4 Jan 2011 10:36:44 +0800 Subject: [PATCH] camera:sensor i2c write and read repeat 3 times when return error --- drivers/media/video/ov2659.c | 8 ++++---- drivers/media/video/ov5642.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/media/video/ov2659.c b/drivers/media/video/ov2659.c index 2edfa5a076c1..8fc56a85df86 100755 --- a/drivers/media/video/ov2659.c +++ b/drivers/media/video/ov2659.c @@ -1263,10 +1263,10 @@ static int sensor_write(struct i2c_client *client, u16 reg, u8 val) msg->scl_rate = CONFIG_SENSOR_I2C_SPEED; /* ddl@rock-chips.com : 100kHz */ msg->read_type = 0; /* fpga i2c:0==I2C_NORMAL : direct use number not enum for don't want include spi_fpga.h */ - cnt = 1; + cnt = 3; err = -EAGAIN; - while ((cnt--) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ + while ((cnt-- > 0) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ err = i2c_transfer(client->adapter, msg, 1); if (err >= 0) { @@ -1304,9 +1304,9 @@ static int sensor_read(struct i2c_client *client, u16 reg, u8 *val) msg[1].scl_rate = CONFIG_SENSOR_I2C_SPEED; /* ddl@rock-chips.com : 100kHz */ msg[1].read_type = 2; /* fpga i2c:0==I2C_NO_STOP : direct use number not enum for don't want include spi_fpga.h */ - cnt = 1; + cnt = 3; err = -EAGAIN; - while ((cnt--) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ + while ((cnt-- > 0) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ err = i2c_transfer(client->adapter, msg, 2); if (err >= 0) { diff --git a/drivers/media/video/ov5642.c b/drivers/media/video/ov5642.c index d108cea03ef6..31df282cab7c 100755 --- a/drivers/media/video/ov5642.c +++ b/drivers/media/video/ov5642.c @@ -3179,10 +3179,10 @@ static int sensor_write(struct i2c_client *client, u16 reg, u8 val) msg->scl_rate = CONFIG_SENSOR_I2C_SPEED; /* ddl@rock-chips.com : 100kHz */ msg->read_type = 0; /* fpga i2c:0==I2C_NORMAL : direct use number not enum for don't want include spi_fpga.h */ - cnt = 1; + cnt = 3; err = -EAGAIN; - while ((cnt--) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ + while ((cnt-- > 0) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ err = i2c_transfer(client->adapter, msg, 1); if (err >= 0) { @@ -3220,9 +3220,9 @@ static int sensor_read(struct i2c_client *client, u16 reg, u8 *val) msg[1].scl_rate = CONFIG_SENSOR_I2C_SPEED; /* ddl@rock-chips.com : 100kHz */ msg[1].read_type = 2; /* fpga i2c:0==I2C_NO_STOP : direct use number not enum for don't want include spi_fpga.h */ - cnt = 1; + cnt = 3; err = -EAGAIN; - while ((cnt--) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ + while ((cnt-- > 0) && (err < 0)) { /* ddl@rock-chips.com : Transfer again if transent is failed */ err = i2c_transfer(client->adapter, msg, 2); if (err >= 0) { -- 2.34.1