Commit 4717be73 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Wolfram Sang

i2c: core: Parse SDA hold time from firmware

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: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
Reviewed-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: default avatarLudovic Desroches <ludovic.desroches@microchip.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 1c02cbf7
...@@ -1576,6 +1576,8 @@ void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_de ...@@ -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); ret = device_property_read_u32(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns);
if (ret && use_defaults) if (ret && use_defaults)
t->sda_fall_ns = t->scl_fall_ns; 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); EXPORT_SYMBOL_GPL(i2c_parse_fw_timings);
......
...@@ -564,6 +564,7 @@ struct i2c_lock_operations { ...@@ -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_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 * @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_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 { struct i2c_timings {
u32 bus_freq_hz; u32 bus_freq_hz;
...@@ -571,6 +572,7 @@ struct i2c_timings { ...@@ -571,6 +572,7 @@ struct i2c_timings {
u32 scl_fall_ns; u32 scl_fall_ns;
u32 scl_int_delay_ns; u32 scl_int_delay_ns;
u32 sda_fall_ns; u32 sda_fall_ns;
u32 sda_hold_ns;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment