aboutsummaryrefslogtreecommitdiff
path: root/lib/stm32/i2c.c
diff options
context:
space:
mode:
authorPiotr Esden-Tempski2012-02-24 17:14:50 -0800
committerPiotr Esden-Tempski2012-02-24 17:14:50 -0800
commit2b3f07ee08c722f28cbf480dbcc5276707f78ec4 (patch)
treecb880905323f0db331c467c02885ac68648f3d72 /lib/stm32/i2c.c
parentcbef43ddd830bd3292b05d12fe4a3f7e6c0b7a17 (diff)
Added reset function to i2c convenience functions.
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)
{