All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrice Chotard <patrice.chotard@foss.st.com>
To: <u-boot@lists.denx.de>
Cc: Patrice CHOTARD <patrice.chotard@foss.st.com>,
	Patrick DELAUNAY <patrick.delaunay@foss.st.com>,
	U-Boot STM32 <uboot-stm32@st-md-mailman.stormreply.com>,
	Heiko Schocher <hs@denx.de>
Subject: [PATCH v1 6/7] i2c: stm32f7: add support for DNF i2c-digital-filter binding
Date: Tue, 3 Aug 2021 12:05:14 +0200	[thread overview]
Message-ID: <20210803100515.29383-7-patrice.chotard@foss.st.com> (raw)
In-Reply-To: <20210803100515.29383-1-patrice.chotard@foss.st.com>

From: Patrick Delaunay <patrick.delaunay@foss.st.com>

Add the support for the i2c-digital-filter binding, allowing to enable
the digital filter via the device-tree and indicate its value in the DT

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
---

 drivers/i2c/stm32f7_i2c.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/stm32f7_i2c.c b/drivers/i2c/stm32f7_i2c.c
index 7e6c65fadc..2b2dae67a3 100644
--- a/drivers/i2c/stm32f7_i2c.c
+++ b/drivers/i2c/stm32f7_i2c.c
@@ -107,7 +107,6 @@ struct stm32_i2c_regs {
 
 #define STM32_I2C_MAX_LEN			0xff
 
-#define STM32_I2C_DNF_DEFAULT			0
 #define STM32_I2C_DNF_MAX			15
 
 #define STM32_I2C_ANALOG_FILTER_DELAY_MIN	50	/* ns */
@@ -204,6 +203,7 @@ struct stm32_i2c_timings {
  * @regmap_sreg: register address for setting Fast Mode Plus bits
  * @regmap_creg: register address for clearing Fast Mode Plus bits
  * @regmap_mask: mask for Fast Mode Plus bits
+ * @dnf_dt: value of digital filter requested via dt
  */
 struct stm32_i2c_priv {
 	struct stm32_i2c_regs *regs;
@@ -214,6 +214,7 @@ struct stm32_i2c_priv {
 	u32 regmap_sreg;
 	u32 regmap_creg;
 	u32 regmap_mask;
+	u32 dnf_dt;
 };
 
 static const struct stm32_i2c_spec i2c_specs[] = {
@@ -684,6 +685,7 @@ static int stm32_i2c_compute_timing(struct stm32_i2c_priv *i2c_priv,
 	const struct stm32_i2c_spec *specs;
 	struct stm32_i2c_timings *v, *_v;
 	struct list_head solutions;
+	u32 i2cclk = DIV_ROUND_CLOSEST(STM32_NSEC_PER_SEC, setup->clock_src);
 	int ret;
 
 	specs = get_specs(setup->speed_freq);
@@ -701,6 +703,8 @@ static int stm32_i2c_compute_timing(struct stm32_i2c_priv *i2c_priv,
 		return -EINVAL;
 	}
 
+	/*  Analog and Digital Filters */
+	setup->dnf = DIV_ROUND_CLOSEST(i2c_priv->dnf_dt, i2cclk);
 	if (setup->dnf > STM32_I2C_DNF_MAX) {
 		log_err("DNF out of bound %d/%d\n",
 			setup->dnf, STM32_I2C_DNF_MAX);
@@ -923,7 +927,10 @@ static int stm32_of_to_plat(struct udevice *dev)
 	fall_time = dev_read_u32_default(dev, "i2c-scl-falling-time-ns",
 					 STM32_I2C_FALL_TIME_DEFAULT);
 
-	i2c_priv->setup.dnf = STM32_I2C_DNF_DEFAULT;
+	i2c_priv->dnf_dt = dev_read_u32_default(dev, "i2c-digital-filter-width-ns", 0);
+	if (!dev_read_bool(dev, "i2c-digital-filter"))
+		i2c_priv->dnf_dt = 0;
+
 	i2c_priv->setup.analog_filter = dev_read_bool(dev, "i2c-analog-filter");
 
 	/* Optional */
-- 
2.17.1


  parent reply	other threads:[~2021-08-03 10:07 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-03 10:05 [PATCH v1 0/7] i2c: stm32f7: driver update Patrice Chotard
2021-08-03 10:05 ` [PATCH v1 1/7] i2c: stm32f7: move driver data of each instance in a privdata Patrice Chotard
2021-08-19 11:46   ` Patrice CHOTARD
2021-10-08  6:43   ` Patrice CHOTARD
2021-08-03 10:05 ` [PATCH v1 2/7] arm: dts: stm32: Add i2c-analog-filter property in I2C nodes for stm32f746 Patrice Chotard
2021-08-19 11:46   ` Patrice CHOTARD
2021-10-08  6:43   ` Patrice CHOTARD
2021-08-03 10:05 ` [PATCH v1 3/7] arm: dts: stm32: Add i2c-analog-filter property in I2C nodes for stm32h743 Patrice Chotard
2021-08-19 11:47   ` Patrice CHOTARD
2021-10-08  6:43   ` Patrice CHOTARD
2021-08-03 10:05 ` [PATCH v1 4/7] i2c: stm32f7: support DT binding i2c-analog-filter Patrice Chotard
2021-08-19 11:47   ` Patrice CHOTARD
2021-10-08  6:43   ` Patrice CHOTARD
2021-08-03 10:05 ` [PATCH v1 5/7] i2c: stm32f7: fix configuration of the digital filter Patrice Chotard
2021-08-19 11:47   ` Patrice CHOTARD
2021-10-08  6:44   ` Patrice CHOTARD
2021-08-03 10:05 ` Patrice Chotard [this message]
2021-08-19 11:47   ` [PATCH v1 6/7] i2c: stm32f7: add support for DNF i2c-digital-filter binding Patrice CHOTARD
2021-10-08  6:44   ` Patrice CHOTARD
2021-10-08  6:44     ` Patrice CHOTARD
2021-08-03 10:05 ` [PATCH v1 7/7] i2c: stm32f7: compute i2cclk only one time Patrice Chotard
2021-08-19 11:47   ` Patrice CHOTARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210803100515.29383-7-patrice.chotard@foss.st.com \
    --to=patrice.chotard@foss.st.com \
    --cc=hs@denx.de \
    --cc=patrick.delaunay@foss.st.com \
    --cc=u-boot@lists.denx.de \
    --cc=uboot-stm32@st-md-mailman.stormreply.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.