From e87da7521f922e3d0f6aaa6b162e872f8f39c649 Mon Sep 17 00:00:00 2001 From: Nicolas Le Bayon Date: Thu, 18 Apr 2019 17:32:42 +0200 Subject: i2c: stm32f7: Fix SDADEL minimum formula It conforms with Reference Manual I2C timing section. Signed-off-by: Nicolas Le Bayon Reviewed-by: Patrick DELAUNAY Signed-off-by: Patrick Delaunay --- drivers/i2c/stm32f7_i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/i2c/stm32f7_i2c.c') diff --git a/drivers/i2c/stm32f7_i2c.c b/drivers/i2c/stm32f7_i2c.c index 3872364d6bf..e7e0268ebeb 100644 --- a/drivers/i2c/stm32f7_i2c.c +++ b/drivers/i2c/stm32f7_i2c.c @@ -500,7 +500,7 @@ static int stm32_i2c_compute_solutions(struct stm32_i2c_setup *setup, af_delay_max = setup->analog_filter ? STM32_I2C_ANALOG_FILTER_DELAY_MAX : 0; - sdadel_min = setup->fall_time - i2c_specs[setup->speed].hddat_min - + sdadel_min = i2c_specs[setup->speed].hddat_min + setup->fall_time - af_delay_min - (setup->dnf + 3) * i2cclk; sdadel_max = i2c_specs[setup->speed].vddat_max - setup->rise_time - -- cgit v1.2.3 From 5237f37e5c35052533588fe0a53febad2f047d70 Mon Sep 17 00:00:00 2001 From: Nicolas Le Bayon Date: Thu, 18 Apr 2019 17:32:43 +0200 Subject: i2c: stm32f7: improve loopback in timing algorithm This avoids useless loops inside the I2C timing algorithm. Actually, we support only one possible solution per prescaler value. So after finding a solution with a prescaler, the algorithm can switch directly to the next prescaler value. Signed-off-by: Nicolas Le Bayon Reviewed-by: Patrick DELAUNAY Signed-off-by: Patrick Delaunay --- drivers/i2c/stm32f7_i2c.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'drivers/i2c/stm32f7_i2c.c') diff --git a/drivers/i2c/stm32f7_i2c.c b/drivers/i2c/stm32f7_i2c.c index e7e0268ebeb..50c4fd0de23 100644 --- a/drivers/i2c/stm32f7_i2c.c +++ b/drivers/i2c/stm32f7_i2c.c @@ -540,8 +540,12 @@ static int stm32_i2c_compute_solutions(struct stm32_i2c_setup *setup, p_prev = p; list_add_tail(&v->node, solutions); + break; } } + + if (p_prev == p) + break; } } -- cgit v1.2.3