From e81a5353cb794b8d6c57317488e5db6a1c524755 Mon Sep 17 00:00:00 2001
From: Radomir Dopieralski <openstack@sheep.art.pl>
Date: Sun, 13 Nov 2016 21:18:07 +0100
Subject: [PATCH] extmod/machine_i2c: Release SDA on bus error

---
 extmod/machine_i2c.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/extmod/machine_i2c.c b/extmod/machine_i2c.c
index eacac15e6..dc16d78c5 100644
--- a/extmod/machine_i2c.c
+++ b/extmod/machine_i2c.c
@@ -117,6 +117,7 @@ STATIC int mp_hal_i2c_write_byte(machine_i2c_obj_t *self, uint8_t val) {
         }
         mp_hal_i2c_delay(self);
         if (!mp_hal_i2c_scl_release(self)) {
+            mp_hal_i2c_sda_release(self);
             return 0; // failure
         }
         mp_hal_i2c_scl_low(self);
@@ -157,6 +158,7 @@ STATIC int mp_hal_i2c_read_byte(machine_i2c_obj_t *self, uint8_t *val, int nack)
     }
     mp_hal_i2c_delay(self);
     if (!mp_hal_i2c_scl_release(self)) {
+        mp_hal_i2c_sda_release(self);
         return 0; // failure
     }
     mp_hal_i2c_scl_low(self);
-- 
GitLab