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