diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2016-10-06 10:56:43 +0300 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2016-10-06 10:56:43 +0300 |
commit | 301a36fa700f9add6e14f5a95c7573e01578343a (patch) | |
tree | 6ff94ff3b08b838353b9127eb5f8055b3de6b25f /drivers/i2c/busses/i2c-designware-core.c | |
parent | b828f960215f02e5d2c88bbd27565c694254a15a (diff) | |
parent | b60752f2b20c167859943e001727f0d4da419b23 (diff) | |
download | linux-301a36fa700f9add6e14f5a95c7573e01578343a.tar.xz |
Merge branches 'misc' and 'sa1111-base' into for-linus
Diffstat (limited to 'drivers/i2c/busses/i2c-designware-core.c')
-rw-r--r-- | drivers/i2c/busses/i2c-designware-core.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c index c6922b806fb7..fcd973d5131e 100644 --- a/drivers/i2c/busses/i2c-designware-core.c +++ b/drivers/i2c/busses/i2c-designware-core.c @@ -367,13 +367,17 @@ int i2c_dw_init(struct dw_i2c_dev *dev) dev_dbg(dev->dev, "Fast-mode HCNT:LCNT = %d:%d\n", hcnt, lcnt); /* Configure SDA Hold Time if required */ - if (dev->sda_hold_time) { - reg = dw_readl(dev, DW_IC_COMP_VERSION); - if (reg >= DW_IC_SDA_HOLD_MIN_VERS) + reg = dw_readl(dev, DW_IC_COMP_VERSION); + if (reg >= DW_IC_SDA_HOLD_MIN_VERS) { + if (dev->sda_hold_time) { dw_writel(dev, dev->sda_hold_time, DW_IC_SDA_HOLD); - else - dev_warn(dev->dev, - "Hardware too old to adjust SDA hold time."); + } else { + /* Keep previous hold time setting if no one set it */ + dev->sda_hold_time = dw_readl(dev, DW_IC_SDA_HOLD); + } + } else { + dev_warn(dev->dev, + "Hardware too old to adjust SDA hold time.\n"); } /* Configure Tx/Rx FIFO threshold levels */ |