aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/i2c.c
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2012-06-21 16:04:18 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2012-06-22 14:06:10 -0400
commit4d133982271fd063779174d1695e14c7821c6da6 (patch)
treec08584759d953e6e1eed61d6af540a57903388d4 /libmaple/i2c.c
parent70f22b667a7d91c68d663c1bf9ef1c0bdcbdd377 (diff)
downloadlibrambutan-4d133982271fd063779174d1695e14c7821c6da6.tar.gz
librambutan-4d133982271fd063779174d1695e14c7821c6da6.zip
I2C: Deprecate I2C_REMAP flag.
This is ad-hoc and nonportable. If you really want I2C mapped elsewhere, then mess with the I2C device fields and call afio_remap() yourself. (This is also cleaner for F2). Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/i2c.c')
-rw-r--r--libmaple/i2c.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/libmaple/i2c.c b/libmaple/i2c.c
index 291bf16..d2447a4 100644
--- a/libmaple/i2c.c
+++ b/libmaple/i2c.c
@@ -153,6 +153,11 @@ void i2c_init(i2c_dev *dev) {
rcc_clk_enable(dev->clk_id);
}
+/* Hack for deprecated bit of STM32F1 functionality */
+#ifndef _I2C_HAVE_DEPRECATED_I2C_REMAP
+#define _i2c_handle_remap(dev, flags) ((void)0)
+#endif
+
/**
* @brief Initialize an I2C device as bus master
* @param dev Device to enable
@@ -163,7 +168,8 @@ void i2c_init(i2c_dev *dev) {
* I2C_BUS_RESET: Reset the bus and clock out any hung slaves on
* initialization,
* I2C_10BIT_ADDRESSING: Enable 10-bit addressing,
- * I2C_REMAP: Remap I2C1 to SCL/PB8 SDA/PB9.
+ * I2C_REMAP: (deprecated, STM32F1 only) Remap I2C1 to SCL/PB8
+ * SDA/PB9.
*/
void i2c_master_enable(i2c_dev *dev, uint32 flags) {
#define I2C_CLK (STM32_PCLK1/1000000)
@@ -173,11 +179,8 @@ void i2c_master_enable(i2c_dev *dev, uint32 flags) {
/* PE must be disabled to configure the device */
ASSERT(!(dev->regs->CR1 & I2C_CR1_PE));
- if ((dev == I2C1) && (flags & I2C_REMAP)) {
- afio_remap(AFIO_REMAP_I2C1);
- I2C1->sda_pin = 9;
- I2C1->scl_pin = 8;
- }
+ /* Ugh */
+ _i2c_handle_remap(dev, flags);
/* Reset the bus. Clock out any hung slaves. */
if (flags & I2C_BUS_RESET) {