diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2014-03-12 18:14:06 +0530 |
---|---|---|
committer | Laxman Dewangan <ldewangan@nvidia.com> | 2014-03-13 04:35:44 -0700 |
commit | c3966ab367b88ae48a2a5d7222067d5f3014da23 (patch) | |
tree | eaec3ddfd42b6de047026cfad390a8efe5ddbfe6 /drivers/i2c | |
parent | 02214d96fcc27701919408604a08e8fcb68f4e6b (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.c | 6 |
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; |