|
@@ -324,7 +324,7 @@ static int i2c_transfer(struct s3c24x0_i2c *i2c,
|
|
|
writel(I2C_MODE_MT | I2C_TXRX_ENA | I2C_START_STOP,
|
|
|
&i2c->iicstat);
|
|
|
i = 0;
|
|
|
- while ((i < data_len) && (result = I2C_OK)) {
|
|
|
+ while ((i < data_len) && (result == I2C_OK)) {
|
|
|
result = WaitForXfer(i2c);
|
|
|
writel(data[i], &i2c->iicds);
|
|
|
ReadWriteByte(i2c);
|
|
@@ -336,17 +336,16 @@ static int i2c_transfer(struct s3c24x0_i2c *i2c,
|
|
|
result = WaitForXfer(i2c);
|
|
|
|
|
|
/* send STOP */
|
|
|
- writel(I2C_MODE_MR | I2C_TXRX_ENA, &i2c->iicstat);
|
|
|
+ writel(I2C_MODE_MT | I2C_TXRX_ENA, &i2c->iicstat);
|
|
|
ReadWriteByte(i2c);
|
|
|
break;
|
|
|
|
|
|
case I2C_READ:
|
|
|
if (addr && addr_len) {
|
|
|
- writel(I2C_MODE_MT | I2C_TXRX_ENA, &i2c->iicstat);
|
|
|
writel(chip, &i2c->iicds);
|
|
|
/* send START */
|
|
|
- writel(readl(&i2c->iicstat) | I2C_START_STOP,
|
|
|
- &i2c->iicstat);
|
|
|
+ writel(I2C_MODE_MT | I2C_TXRX_ENA | I2C_START_STOP,
|
|
|
+ &i2c->iicstat);
|
|
|
result = WaitForXfer(i2c);
|
|
|
if (IsACK(i2c)) {
|
|
|
i = 0;
|
|
@@ -380,11 +379,10 @@ static int i2c_transfer(struct s3c24x0_i2c *i2c,
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- writel(I2C_MODE_MR | I2C_TXRX_ENA, &i2c->iicstat);
|
|
|
writel(chip, &i2c->iicds);
|
|
|
/* send START */
|
|
|
- writel(readl(&i2c->iicstat) | I2C_START_STOP,
|
|
|
- &i2c->iicstat);
|
|
|
+ writel(I2C_MODE_MR | I2C_TXRX_ENA | I2C_START_STOP,
|
|
|
+ &i2c->iicstat);
|
|
|
result = WaitForXfer(i2c);
|
|
|
|
|
|
if (IsACK(i2c)) {
|