Re: [PATCH v5 3/9] i2c: add support for filters optional properties
From: Peter Rosin
Date: Mon Oct 21 2019 - 11:20:55 EST
On 2019-09-11 10:24, Eugen.Hristev@xxxxxxxxxxxxx wrote:
> From: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx>
>
> i2c-digital-filter-width-ns:
> This optional timing property specifies the width of the spikes on the i2c
> lines (in ns) that can be filtered out by built-in digital filters which are
> embedded in some i2c controllers.
> i2c-analog-filter-cutoff-frequency:
> This optional timing property specifies the cutoff frequency of a low-pass
> analog filter built-in i2c controllers. This low pass filter is used to filter
> out high frequency noise on the i2c lines. Specified in Hz.
> Include these properties in the timings structure and read them as integers.
>
> Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx>
> ---
> drivers/i2c/i2c-core-base.c | 6 ++++++
> include/linux/i2c.h | 6 ++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
> index 9c440fa..c9fcb16 100644
> --- a/drivers/i2c/i2c-core-base.c
> +++ b/drivers/i2c/i2c-core-base.c
> @@ -1658,6 +1658,12 @@ void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_de
> t->sda_fall_ns = t->scl_fall_ns;
>
> device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns);
> +
> + device_property_read_u32(dev, "i2c-digital-filter-width-ns",
> + &t->digital_filter_width_ns);
> +
> + device_property_read_u32(dev, "i2c-analog-filter-cutoff-frequency",
> + &t->analog_filter_cutoff_freq_hz);
> }
> EXPORT_SYMBOL_GPL(i2c_parse_fw_timings);
>
> diff --git a/include/linux/i2c.h b/include/linux/i2c.h
> index fa5552c..26ce143 100644
> --- a/include/linux/i2c.h
> +++ b/include/linux/i2c.h
> @@ -575,6 +575,10 @@ struct i2c_lock_operations {
> * @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
> + * @digital_filter_width_ns: width in ns of spikes on i2c lines that the IP core
> + * digital filter can filter out
> + * @analog_filter_cutoff_freq_hz: threshold frequency for the low pass IP core
> + analog filter
The indentation is a little bit excessive and also off. Other comments in the
file just uses a single tab after the asterisk in this scenario. Also, the last
of the new lines is missing that leading asterisk.
Cheers,
Peter
> */
> struct i2c_timings {
> u32 bus_freq_hz;
> @@ -583,6 +587,8 @@ struct i2c_timings {
> u32 scl_int_delay_ns;
> u32 sda_fall_ns;
> u32 sda_hold_ns;
> + u32 digital_filter_width_ns;
> + u32 analog_filter_cutoff_freq_hz;
> };
>
> /**
>