lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 31 Aug 2018 17:11:10 +0200 From: Alexandre Belloni <alexandre.belloni@...tlin.com> To: Wolfram Sang <wsa@...-dreams.de>, Jarkko Nikula <jarkko.nikula@...ux.intel.com>, James Hogan <jhogan@...nel.org>, Paul Burton <paul.burton@...s.com> Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>, Mika Westerberg <mika.westerberg@...ux.intel.com>, linux-i2c@...r.kernel.org, devicetree@...r.kernel.org, linux-kernel@...r.kernel.org, linux-mips@...ux-mips.org, Thomas Petazzoni <thomas.petazzoni@...tlin.com>, Allan Nielsen <allan.nielsen@...rochip.com>, Alexandre Belloni <alexandre.belloni@...tlin.com> Subject: [PATCH v5 3/7] i2c: designware: allow IP specific sda_hold_time Because some old designware IPs were not supporting setting an SDA hold time, vendors developed their own solution. Add a way for the final driver to provide its own SDA hold time handling. Reviewed-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com> Tested-by: Jarkko Nikula <jarkko.nikula@...ux.intel.com> Acked-by: Jarkko Nikula <jarkko.nikula@...ux.intel.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@...tlin.com> --- drivers/i2c/busses/i2c-designware-common.c | 2 ++ drivers/i2c/busses/i2c-designware-core.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c index 69ec4a791f23..36271cd75342 100644 --- a/drivers/i2c/busses/i2c-designware-common.c +++ b/drivers/i2c/busses/i2c-designware-common.c @@ -201,6 +201,8 @@ int i2c_dw_set_sda_hold(struct dw_i2c_dev *dev) dev_dbg(dev->dev, "SDA Hold Time TX:RX = %d:%d\n", dev->sda_hold_time & ~(u32)DW_IC_SDA_HOLD_RX_MASK, dev->sda_hold_time >> DW_IC_SDA_HOLD_RX_SHIFT); + } else if (dev->set_sda_hold_time) { + dev->set_sda_hold_time(dev); } else if (dev->sda_hold_time) { dev_warn(dev->dev, "Hardware too old to adjust SDA hold time.\n"); diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h index e367b1af4ab2..f6cad20a86ff 100644 --- a/drivers/i2c/busses/i2c-designware-core.h +++ b/drivers/i2c/busses/i2c-designware-core.h @@ -269,6 +269,7 @@ struct dw_i2c_dev { void (*disable)(struct dw_i2c_dev *dev); void (*disable_int)(struct dw_i2c_dev *dev); int (*init)(struct dw_i2c_dev *dev); + int (*set_sda_hold_time)(struct dw_i2c_dev *dev); int mode; struct i2c_bus_recovery_info rinfo; }; -- 2.19.0.rc1
Powered by blists - more mailing lists