diff options
author | Chaitanya Bandi <bandik@nvidia.com> | 2012-12-31 16:41:22 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 12:58:47 -0700 |
commit | 662c97036f0aeb7e36df92e8c84360950f05b095 (patch) | |
tree | 9a4d38428b1cd2c4362aebd92f0892b7e05500d3 /drivers/i2c | |
parent | e9d9a80460be927ca67652b7822d390a1d8b3f0d (diff) |
i2c: tegra: Use IMMEDIATE option for I2C Bus Clear
Use Immediate option instead of Threshold in case of
I2C bus clear logic.
Bug 1210176
Change-Id: Idc1bd977cd0ac79092117ace5f3283d9219b1eb1
Signed-off-by: Chaitanya Bandi <bandik@nvidia.com>
Reviewed-on: http://git-master/r/188220
(cherry picked from commit 3bf0ba5303b976bf94f147300b5a9132a8d8195b)
Reviewed-on: http://git-master/r/194668
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-tegra.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index e6a2e27b9cac..bdb1399fd157 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -115,6 +115,9 @@ #define I2C_HEADER_SLAVE_ADDR_SHIFT 1 #define I2C_BUS_CLEAR_CNFG 0x084 +#define I2C_BC_SCLK_THRESHOLD (9<<16) +#define I2C_BC_STOP_COND (1<<2) +#define I2C_BC_TERMINATE (1<<1) #define I2C_BC_ENABLE (1<<0) #define I2C_BUS_CLEAR_STATUS 0x088 @@ -900,7 +903,11 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, if (i2c_dev->msg_err == I2C_ERR_ARBITRATION_LOST) { if (i2c_dev->chipdata->has_hw_arb_support) { INIT_COMPLETION(i2c_dev->msg_complete); - i2c_writel(i2c_dev, I2C_BC_ENABLE, I2C_BUS_CLEAR_CNFG); + i2c_writel(i2c_dev, I2C_BC_ENABLE + | I2C_BC_SCLK_THRESHOLD + | I2C_BC_STOP_COND + | I2C_BC_TERMINATE + , I2C_BUS_CLEAR_CNFG); tegra_i2c_unmask_irq(i2c_dev, I2C_INT_BUS_CLEAR_DONE); wait_for_completion_timeout(&i2c_dev->msg_complete, |