summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2014-03-12 18:14:06 +0530
committerLaxman Dewangan <ldewangan@nvidia.com>2014-03-13 04:35:44 -0700
commitc3966ab367b88ae48a2a5d7222067d5f3014da23 (patch)
treeeaec3ddfd42b6de047026cfad390a8efe5ddbfe6 /drivers/i2c
parent02214d96fcc27701919408604a08e8fcb68f4e6b (diff)
i2c: tegra: do bitbanging xfer if atomic xfer is required
If atomic context transfer is required then only do bit-banging transfers. bug 1451967 bug 1469284 Change-Id: Icd516610918fc4c59aef32ad154b763dd5418172 Signed-off-by: Chaitanya Bandi <bandik@nvidia.com> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/380933
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-tegra.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index b1e69f0966df..64a58366d3b6 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -1235,9 +1235,13 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
if (i2c_dev->is_suspended)
return -EBUSY;
- if (i2c_dev->is_shutdown && i2c_dev->bit_banging_xfer_after_shutdown)
+ if ((i2c_dev->is_shutdown || adap->atomic_xfer_only)
+ && i2c_dev->bit_banging_xfer_after_shutdown)
return tegra_i2c_gpio_xfer(adap, msgs, num);
+ if (adap->atomic_xfer_only)
+ return -EBUSY;
+
i2c_dev->msgs = msgs;
i2c_dev->msgs_num = num;