diff mbox

[v7,1/4] i2c: tegra: disable clock before returning error

Message ID 1461591519-24602-1-git-send-email-smohammed@nvidia.com
State Accepted
Headers show

Commit Message

Shardar Shariff Md April 25, 2016, 1:38 p.m. UTC
Disable clock before returning error in tegra_i2c_init() as its leaves
i2c clock ON in case of error and never turns off again as it will have
unbalanced clock enable/disable

Signed-off-by: Shardar Shariff Md <smohammed@nvidia.com>

---
Changes in v5:
- Move current patch as separate patch

Changes in v6:
- Remove unnecessary line

Changes in v7
- Updated commit message with description of issue
---
 drivers/i2c/busses/i2c-tegra.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Wolfram Sang April 25, 2016, 1:54 p.m. UTC | #1
On Mon, Apr 25, 2016 at 07:08:36PM +0530, Shardar Shariff Md wrote:
> Disable clock before returning error in tegra_i2c_init() as its leaves
> i2c clock ON in case of error and never turns off again as it will have
> unbalanced clock enable/disable
> 
> Signed-off-by: Shardar Shariff Md <smohammed@nvidia.com>
> 
> ---
> Changes in v5:
> - Move current patch as separate patch
> 
> Changes in v6:
> - Remove unnecessary line
> 
> Changes in v7
> - Updated commit message with description of issue

I know 'release often' but maybe you could wait like a day and collect
review responses before submitting a new version? That would make my
life as a maintainer easier...
Wolfram Sang May 11, 2016, 2:33 p.m. UTC | #2
On Mon, Apr 25, 2016 at 07:08:36PM +0530, Shardar Shariff Md wrote:
> Disable clock before returning error in tegra_i2c_init() as its leaves
> i2c clock ON in case of error and never turns off again as it will have
> unbalanced clock enable/disable
> 
> Signed-off-by: Shardar Shariff Md <smohammed@nvidia.com>
> 

Applied to for-next, thanks!
diff mbox

Patch

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index d764d64..445398c3 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -483,19 +483,20 @@  static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev)
 			if (time_after(jiffies, timeout)) {
 				dev_warn(i2c_dev->dev,
 					"timeout waiting for config load\n");
-				return -ETIMEDOUT;
+				err = -ETIMEDOUT;
+				goto err;
 			}
 			msleep(1);
 		}
 	}
 
-	tegra_i2c_clock_disable(i2c_dev);
-
 	if (i2c_dev->irq_disabled) {
 		i2c_dev->irq_disabled = 0;
 		enable_irq(i2c_dev->irq);
 	}
 
+err:
+	tegra_i2c_clock_disable(i2c_dev);
 	return err;
 }