aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/i2c.c
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2012-06-21 15:04:39 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2012-06-22 14:06:10 -0400
commitbaf9dd6a8275160fdf5a4ff63efa2678f16b1cc3 (patch)
tree1ea72208adc17873ab2287f25cc3720cf40576bf /libmaple/i2c.c
parentf34ba402c9a39acc43828918313a30d2fbc4e186 (diff)
downloadlibrambutan-baf9dd6a8275160fdf5a4ff63efa2678f16b1cc3.tar.gz
librambutan-baf9dd6a8275160fdf5a4ff63efa2678f16b1cc3.zip
I2C: Add i2c_config_gpios(), i2c_master_release_bus().
These are necessary to pull out some calls to gpio_set_mode(). Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/i2c.c')
-rw-r--r--libmaple/i2c.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/libmaple/i2c.c b/libmaple/i2c.c
index 1618586..f54be47 100644
--- a/libmaple/i2c.c
+++ b/libmaple/i2c.c
@@ -299,10 +299,7 @@ void _i2c_irq_error_handler(i2c_dev *dev) {
*/
void i2c_bus_reset(const i2c_dev *dev) {
/* Release both lines */
- gpio_write_bit(dev->gpio_port, dev->scl_pin, 1);
- gpio_write_bit(dev->gpio_port, dev->sda_pin, 1);
- gpio_set_mode(dev->gpio_port, dev->scl_pin, GPIO_OUTPUT_OD);
- gpio_set_mode(dev->gpio_port, dev->sda_pin, GPIO_OUTPUT_OD);
+ i2c_master_release_bus(dev);
/*
* Make sure the bus is free by clocking it until any slaves release the
@@ -376,8 +373,7 @@ void i2c_master_enable(i2c_dev *dev, uint32 flags) {
/* Turn on clock and set GPIO modes */
i2c_init(dev);
- gpio_set_mode(dev->gpio_port, dev->sda_pin, GPIO_AF_OUTPUT_OD);
- gpio_set_mode(dev->gpio_port, dev->scl_pin, GPIO_AF_OUTPUT_OD);
+ i2c_config_gpios(dev);
/* I2C1 and I2C2 are fed from APB1, clocked at 36MHz */
i2c_set_input_clk(dev, I2C_CLK);