aboutsummaryrefslogtreecommitdiff
path: root/lib/stm32/i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stm32/i2c.c')
-rw-r--r--lib/stm32/i2c.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/stm32/i2c.c b/lib/stm32/i2c.c
index e1a3b84..41670c3 100644
--- a/lib/stm32/i2c.c
+++ b/lib/stm32/i2c.c
@@ -18,6 +18,21 @@
*/
#include <libopencm3/stm32/i2c.h>
+#include <libopencm3/stm32/f4/rcc.h>
+
+void i2c_reset(u32 i2c)
+{
+ switch (i2c) {
+ case I2C1:
+ rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C1RST);
+ rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C1RST);
+ break;
+ case I2C2:
+ rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C2RST);
+ rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C2RST);
+ break;
+ }
+}
void i2c_peripheral_enable(u32 i2c)
{