summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-07-17 19:58:16 +0530
committerSimone Willett <swillett@nvidia.com>2012-07-19 15:38:52 -0700
commit31d11e3ffeed7f7573bac147913941e815c20636 (patch)
treeb4724c4778a1955df878e0772b7f3a418591f144
parent300f256fc517fe77fa85aaf2345925c5b1ed4aad (diff)
i2c: tegra: enable/disable clock unconditionally during xfer
Do the clock control for enable/disable during each transfer regardless of whether clock is always on or not. If clock is always on then in probe the reference count of the clock incremented and doing again enable will just increment reference and disable will decrement the reference count and so there is no harm on calling enable/disable always during transfer. Change-Id: Ibf67413fb84f826f04e890fe3dd2a20cd0469922 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/116473 Tested-by: Bandi Krishna Chaitanya <bandik@nvidia.com>
-rw-r--r--drivers/i2c/busses/i2c-tegra.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 9990a79922bd..735780fdf40f 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -466,8 +466,7 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev)
u32 val;
int err = 0;
- if (!i2c_dev->is_clkon_always)
- tegra_i2c_clock_enable(i2c_dev);
+ tegra_i2c_clock_enable(i2c_dev);
/* Interrupt generated before sending stop signal so
* wait for some time so that stop signal can be send proerly */
@@ -506,8 +505,7 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev)
if (tegra_i2c_flush_fifos(i2c_dev))
err = -ETIMEDOUT;
- if (!i2c_dev->is_clkon_always)
- tegra_i2c_clock_disable(i2c_dev);
+ tegra_i2c_clock_disable(i2c_dev);
if (i2c_dev->irq_disabled) {
i2c_dev->irq_disabled = 0;
@@ -797,8 +795,7 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
i2c_dev->msgs = msgs;
i2c_dev->msgs_num = num;
- if (!i2c_dev->is_clkon_always)
- tegra_i2c_clock_enable(i2c_dev);
+ tegra_i2c_clock_enable(i2c_dev);
for (i = 0; i < num; i++) {
enum msg_end_type end_type = MSG_END_STOP;
@@ -813,8 +810,7 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
break;
}
- if (!i2c_dev->is_clkon_always)
- tegra_i2c_clock_disable(i2c_dev);
+ tegra_i2c_clock_disable(i2c_dev);
rt_mutex_unlock(&i2c_dev->dev_lock);