From 76ca2c9bb32a4875b5d6ab4b9a0f4a7d9ea565b7 Mon Sep 17 00:00:00 2001 From: Bas Stottelaar Date: Tue, 30 Jan 2018 20:23:34 +0100 Subject: [PATCH] cpu: efm32: use static mutex initialization. --- cpu/efm32/periph/i2c.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/cpu/efm32/periph/i2c.c b/cpu/efm32/periph/i2c.c index b1a5970fd696..6d71fde9f920 100644 --- a/cpu/efm32/periph/i2c.c +++ b/cpu/efm32/periph/i2c.c @@ -34,7 +34,14 @@ static volatile I2C_TransferReturn_TypeDef i2c_progress[I2C_NUMOF]; -static mutex_t i2c_lock[I2C_NUMOF]; +/** + * @brief Initialized bus locks (we have a maximum of three devices) + */ +static mutex_t i2c_lock[] = { + MUTEX_INIT, + MUTEX_INIT, + MUTEX_INIT +}; /** * @brief Start and track an I2C transfer. @@ -63,14 +70,14 @@ static void _transfer(i2c_t dev, I2C_TransferSeq_TypeDef *transfer) int i2c_init_master(i2c_t dev, i2c_speed_t speed) { + /* assert number of locks */ + assert(I2C_NUMOF <= (sizeof(i2c_lock) / sizeof(i2c_lock[0]))); + /* check if device is valid */ if (dev >= I2C_NUMOF) { return -1; } - /* initialize lock */ - mutex_init(&i2c_lock[dev]); - /* enable clocks */ CMU_ClockEnable(cmuClock_HFPER, true); CMU_ClockEnable(i2c_config[dev].cmu, true);