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