From 9c5d80032e3b5ed8aeb262f502354b6e1944b59f Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Fri, 17 Jan 2020 19:59:10 +0100
Subject: [PATCH] fix(leds): Add a missing I2C bus-lock

leds_update_power() internally accesses the I2C bus so calls to this
function need to be inside an I2C lock section.

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/modules/leds.c           | 2 ++
 epicardium/modules/personal_state.c | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index db7157d09..dd2c20caf 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -17,10 +17,12 @@
 static void do_update(void)
 {
 	hwlock_acquire(HWLOCK_LED);
+	hwlock_acquire(HWLOCK_I2C);
 
 	leds_update_power();
 	leds_update();
 
+	hwlock_release(HWLOCK_I2C);
 	hwlock_release(HWLOCK_LED);
 }
 
diff --git a/epicardium/modules/personal_state.c b/epicardium/modules/personal_state.c
index 3aa5138ab..e9390bf82 100644
--- a/epicardium/modules/personal_state.c
+++ b/epicardium/modules/personal_state.c
@@ -125,9 +125,13 @@ void vLedTask(void *pvParameters)
 						(float)(1000 /
 							led_animation_rate))));
 			}
+
+			hwlock_acquire(HWLOCK_I2C);
+
 			leds_update_power();
 			leds_update();
 
+			hwlock_release(HWLOCK_I2C);
 			hwlock_release(HWLOCK_LED);
 		}
 
-- 
GitLab