diff options
Diffstat (limited to 'drivers/i2c/busses/i2c-stm32f7.c')
| -rw-r--r-- | drivers/i2c/busses/i2c-stm32f7.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c index 9aa8e65b511e..473fbe144b7e 100644 --- a/drivers/i2c/busses/i2c-stm32f7.c +++ b/drivers/i2c/busses/i2c-stm32f7.c @@ -57,6 +57,8 @@  #define STM32F7_I2C_CR1_RXDMAEN			BIT(15)  #define STM32F7_I2C_CR1_TXDMAEN			BIT(14)  #define STM32F7_I2C_CR1_ANFOFF			BIT(12) +#define STM32F7_I2C_CR1_DNF_MASK		GENMASK(11, 8) +#define STM32F7_I2C_CR1_DNF(n)			(((n) & 0xf) << 8)  #define STM32F7_I2C_CR1_ERRIE			BIT(7)  #define STM32F7_I2C_CR1_TCIE			BIT(6)  #define STM32F7_I2C_CR1_STOPIE			BIT(5) @@ -160,7 +162,7 @@ enum {  };  #define STM32F7_I2C_DNF_DEFAULT			0 -#define STM32F7_I2C_DNF_MAX			16 +#define STM32F7_I2C_DNF_MAX			15  #define STM32F7_I2C_ANALOG_FILTER_ENABLE	1  #define STM32F7_I2C_ANALOG_FILTER_DELAY_MIN	50	/* ns */ @@ -725,6 +727,13 @@ static void stm32f7_i2c_hw_config(struct stm32f7_i2c_dev *i2c_dev)  	else  		stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,  				     STM32F7_I2C_CR1_ANFOFF); + +	/* Program the Digital Filter */ +	stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, +			     STM32F7_I2C_CR1_DNF_MASK); +	stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, +			     STM32F7_I2C_CR1_DNF(i2c_dev->setup.dnf)); +  	stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,  			     STM32F7_I2C_CR1_PE);  }  | 
