]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
i2c: tegra: do bitbanging xfer if atomic xfer is required
authorLaxman Dewangan <ldewangan@nvidia.com>
Wed, 12 Mar 2014 12:44:06 +0000 (18:14 +0530)
committerLaxman Dewangan <ldewangan@nvidia.com>
Thu, 13 Mar 2014 11:35:44 +0000 (04:35 -0700)
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

drivers/i2c/busses/i2c-tegra.c

index b1e69f0966df3d2e0ccca105fa8e9ee5db49cef1..64a58366d3b6766bbce8bc39bdf6af1c8039a01c 100644 (file)
@@ -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;