Commit 28ad3321 authored by Kevin Wells's avatar Kevin Wells Committed by Ben Dooks

i2c-pnx: Add stop conditions for end of transfer

Add a stop condition bit flag to the last byte in the transfer.
This will generate an extra clock to handle the stop condition
and prevent devices from staying in an ACK'd state.
Signed-off-by: default avatarKevin Wells <wellsk40@gmail.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent be80dbaa
...@@ -173,6 +173,9 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data) ...@@ -173,6 +173,9 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data)
/* We still have something to talk about... */ /* We still have something to talk about... */
val = *alg_data->mif.buf++; val = *alg_data->mif.buf++;
if (alg_data->mif.len == 1)
val |= stop_bit;
alg_data->mif.len--; alg_data->mif.len--;
iowrite32(val, I2C_REG_TX(alg_data)); iowrite32(val, I2C_REG_TX(alg_data));
...@@ -246,6 +249,9 @@ static int i2c_pnx_master_rcv(struct i2c_pnx_algo_data *alg_data) ...@@ -246,6 +249,9 @@ static int i2c_pnx_master_rcv(struct i2c_pnx_algo_data *alg_data)
__func__); __func__);
if (alg_data->mif.len == 1) { if (alg_data->mif.len == 1) {
/* Last byte, do not acknowledge next rcv. */
val |= stop_bit;
/* /*
* Enable interrupt RFDAIE (data in Rx fifo), * Enable interrupt RFDAIE (data in Rx fifo),
* and disable DRMIE (need data for Tx) * and disable DRMIE (need data for Tx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment