On 25/07/2018 17:39:25+0300, Andy Shevchenko wrote: > There are two drivers already using the SDA hold time setting. > It might be more in the future, thus, make I2C core to parse the setting > for us if provided by firmware. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Reviewed-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > --- > drivers/i2c/i2c-core-base.c | 2 ++ > include/linux/i2c.h | 2 ++ > 2 files changed, 4 insertions(+) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 02d6f27b19e4..667e32aa96a9 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -1576,6 +1576,8 @@ void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_de > ret = device_property_read_u32(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns); > if (ret && use_defaults) > t->sda_fall_ns = t->scl_fall_ns; > + > + device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns); > } > EXPORT_SYMBOL_GPL(i2c_parse_fw_timings); > > diff --git a/include/linux/i2c.h b/include/linux/i2c.h > index bc8d42f8544f..8c44be056f28 100644 > --- a/include/linux/i2c.h > +++ b/include/linux/i2c.h > @@ -564,6 +564,7 @@ struct i2c_lock_operations { > * @scl_fall_ns: time SCL signal takes to fall in ns; t(f) in the I2C specification > * @scl_int_delay_ns: time IP core additionally needs to setup SCL in ns > * @sda_fall_ns: time SDA signal takes to fall in ns; t(f) in the I2C specification > + * @sda_hold_ns: time IP core additionally needs to hold SDA in ns > */ > struct i2c_timings { > u32 bus_freq_hz; > @@ -571,6 +572,7 @@ struct i2c_timings { > u32 scl_fall_ns; > u32 scl_int_delay_ns; > u32 sda_fall_ns; > + u32 sda_hold_ns; > }; > > /** > -- > 2.18.0 > -- Alexandre Belloni, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com