diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2012-07-17 19:58:16 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-07-19 15:38:52 -0700 |
commit | 31d11e3ffeed7f7573bac147913941e815c20636 (patch) | |
tree | b4724c4778a1955df878e0772b7f3a418591f144 /drivers/i2c | |
parent | 300f256fc517fe77fa85aaf2345925c5b1ed4aad (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>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-tegra.c | 12 |
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); |