- i2c_hw_halfbitDelay(I2C_DEV(i2c));
- i2c_hw_sclHi(I2C_DEV(i2c));
- i2c_hw_halfbitDelay(I2C_DEV(i2c));
- i2c_hw_sclLo(I2C_DEV(i2c));
- i2c_hw_sdaHi(I2C_DEV(i2c));
+ /* Generate ACK/NACK */
+ if (i2c->xfer_size > 1)
+ i2c_sdaLo(I2C_DEV(i2c));
+ else
+ i2c_sdaHi(I2C_DEV(i2c));
+
+ i2c_halfbitDelay(I2C_DEV(i2c));
+ i2c_sclHi(I2C_DEV(i2c));
+ i2c_halfbitDelay(I2C_DEV(i2c));
+ i2c_sclLo(I2C_DEV(i2c));
+ i2c_sdaHi(I2C_DEV(i2c));
+ }