From a357a3f6237e273f19fde614b6af26fe13014351 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Tue, 20 Aug 2019 15:24:49 +0200
Subject: [PATCH] feat(lifecycle): Properly reset hardware

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/modules/hardware.c  | 20 +++++++++++++++++++-
 epicardium/modules/lifecycle.c |  8 +++++---
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c
index f753d85a..a93c8c6d 100644
--- a/epicardium/modules/hardware.c
+++ b/epicardium/modules/hardware.c
@@ -173,6 +173,24 @@ int hardware_init(void)
  */
 int hardware_reset(void)
 {
-	card10_init();
+	/*
+	 * API Dispatcher & API Interrupts
+	 */
+	api_interrupt_init();
+	api_dispatcher_init();
+
+	/*
+	 * LEDs
+	 */
+	leds_init();
+	epic_leds_set_rocket(0, 0);
+	epic_leds_set_rocket(1, 0);
+	epic_leds_set_rocket(2, 0);
+
+	/*
+	 * Display
+	 */
+	display_init_slim();
+
 	return 0;
 }
diff --git a/epicardium/modules/lifecycle.c b/epicardium/modules/lifecycle.c
index b3ce83c1..992b0d5f 100644
--- a/epicardium/modules/lifecycle.c
+++ b/epicardium/modules/lifecycle.c
@@ -114,10 +114,12 @@ static int do_load(struct load_info *info)
 	core1_wait_ready();
 
 	/*
-	 * Reinitialize API
+	 * Reinitialize Hardware & Drivers
 	 */
-	api_dispatcher_init();
-	api_interrupt_init();
+	res = hardware_reset();
+	if (res < 0) {
+		return res;
+	}
 
 	switch (info->type) {
 	case PL_PYTHON_SCRIPT:
-- 
GitLab