|
57 | 57 | #define STM32F7_I2C_CR1_RXDMAEN BIT(15)
|
58 | 58 | #define STM32F7_I2C_CR1_TXDMAEN BIT(14)
|
59 | 59 | #define STM32F7_I2C_CR1_ANFOFF BIT(12)
|
| 60 | +#define STM32F7_I2C_CR1_DNF_MASK GENMASK(11, 8) |
| 61 | +#define STM32F7_I2C_CR1_DNF(n) (((n) & 0xf) << 8) |
60 | 62 | #define STM32F7_I2C_CR1_ERRIE BIT(7)
|
61 | 63 | #define STM32F7_I2C_CR1_TCIE BIT(6)
|
62 | 64 | #define STM32F7_I2C_CR1_STOPIE BIT(5)
|
@@ -160,7 +162,7 @@ enum {
|
160 | 162 | };
|
161 | 163 |
|
162 | 164 | #define STM32F7_I2C_DNF_DEFAULT 0
|
163 |
| -#define STM32F7_I2C_DNF_MAX 16 |
| 165 | +#define STM32F7_I2C_DNF_MAX 15 |
164 | 166 |
|
165 | 167 | #define STM32F7_I2C_ANALOG_FILTER_ENABLE 1
|
166 | 168 | #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)
|
725 | 727 | else
|
726 | 728 | stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,
|
727 | 729 | STM32F7_I2C_CR1_ANFOFF);
|
| 730 | + |
| 731 | + /* Program the Digital Filter */ |
| 732 | + stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, |
| 733 | + STM32F7_I2C_CR1_DNF_MASK); |
| 734 | + stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, |
| 735 | + STM32F7_I2C_CR1_DNF(i2c_dev->setup.dnf)); |
| 736 | + |
728 | 737 | stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,
|
729 | 738 | STM32F7_I2C_CR1_PE);
|
730 | 739 | }
|
|
0 commit comments