Bitbang I2C could do with delay after last stop before next back-back 
transaction

Signed-off-by: Andy Green <[EMAIL PROTECTED]>
---

 include/i2c-bitbang.h     |    3 ++-
 src/drivers/i2c-bitbang.c |    5 +++++
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/include/i2c-bitbang.h b/include/i2c-bitbang.h
index 0873b3b..f5b86ef 100644
--- a/include/i2c-bitbang.h
+++ b/include/i2c-bitbang.h
@@ -53,7 +53,8 @@ enum i2c_bitbang_states {
 
        IBS_STOP1,
        IBS_STOP2,
-       IBS_STOP3
+       IBS_STOP3,
+       IBS_STOP4
 };
 
 /* context for bitbang GPIO pins and transaction */
diff --git a/src/drivers/i2c-bitbang.c b/src/drivers/i2c-bitbang.c
index 9762415..eef28a6 100644
--- a/src/drivers/i2c-bitbang.c
+++ b/src/drivers/i2c-bitbang.c
@@ -194,6 +194,11 @@ int i2c_next_state(struct i2c_bitbang * bb)
 
        case IBS_STOP3:
                (bb->set)(1, 1);
+               bb->state = IBS_STOP4;
+               break;
+
+       case IBS_STOP4:
+               (bb->set)(1, 1);
                return 1; /* done */
        }
 


Reply via email to