From 7ff1d3aec0c331643e99abf5e7b2027288e9ecef Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Tue, 28 Apr 2020 20:20:59 +0200 Subject: [PATCH] refact(pmic): Use new style HW locks --- epicardium/modules/pmic.c | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c index f9deaff7c..1c996b231 100644 --- a/epicardium/modules/pmic.c +++ b/epicardium/modules/pmic.c @@ -18,8 +18,6 @@ #include <stdio.h> #include <string.h> -#define LOCK_WAIT portMAX_DELAY - /* Task ID for the pmic handler */ static TaskHandle_t pmic_task_id = NULL; @@ -46,23 +44,14 @@ void pmic_interrupt_callback(void *_) int pmic_read_amux(enum pmic_amux_signal sig, float *result) { - int ret = 0; - int i2c_ret = 0; + int ret = 0; if (sig > _PMIC_AMUX_MAX) { return -EINVAL; } - int adc_ret = hwlock_acquire_timeout(HWLOCK_ADC, LOCK_WAIT); - if (adc_ret < 0) { - ret = adc_ret; - goto done; - } - i2c_ret = hwlock_acquire_timeout(HWLOCK_I2C, LOCK_WAIT); - if (i2c_ret < 0) { - ret = i2c_ret; - goto done; - } + hwlock_acquire(HWLOCK_ADC); + hwlock_acquire(HWLOCK_I2C); /* Select the correct channel for this measurement. */ MAX77650_setMUX_SEL(sig); @@ -75,11 +64,7 @@ int pmic_read_amux(enum pmic_amux_signal sig, float *result) hwlock_release(HWLOCK_I2C); vTaskDelay(pdMS_TO_TICKS(5)); - i2c_ret = hwlock_acquire_timeout(HWLOCK_I2C, LOCK_WAIT); - if (i2c_ret < 0) { - ret = i2c_ret; - goto done; - } + hwlock_acquire(HWLOCK_I2C); uint16_t adc_data; ADC_StartConvert(ADC_CH_0, 0, 0); @@ -120,14 +105,8 @@ int pmic_read_amux(enum pmic_amux_signal sig, float *result) ret = -EINVAL; } -done: - if (i2c_ret == 0) { - hwlock_release(HWLOCK_I2C); - } - - if (adc_ret == 0) { - hwlock_release(HWLOCK_ADC); - } + hwlock_release(HWLOCK_I2C); + hwlock_release(HWLOCK_ADC); return ret; } @@ -138,10 +117,7 @@ done: */ static uint8_t pmic_poll_interrupts(void) { - while (hwlock_acquire_timeout(HWLOCK_I2C, LOCK_WAIT) < 0) { - LOG_WARN("pmic", "Failed to acquire I2C. Retrying ..."); - vTaskDelay(pdMS_TO_TICKS(100)); - } + hwlock_acquire(HWLOCK_I2C); uint8_t int_flag = MAX77650_getINT_GLBL(); hwlock_release(HWLOCK_I2C); -- GitLab