From 609e3947f93b8066c86686457ab7fc77e346bce9 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Thu, 3 Oct 2019 08:14:11 +0200
Subject: [PATCH] fix(portexpander): Fix only configuring with MXC_ASSERT
 enabled

When MXC_ASSERT is disabled, the portexpander_config() call is not
compiled into the bootloader which leads to the portexpander not being
setup correctly and thus neither the screen turns on nor does the button
to switch into MSC mode work correctly (bootloader always goes into MSC
mode).

Fix this by moving the portexpander_config() call outside the MXC_ASSERT
and only keep the return value check inside.  Additionally fix the
pull-up/pull-down selection in portexpander_config() not being set
correctly.

Ref #171

Signed-off-by: Rahix <rahix@rahix.de>
---
 lib/card10/portexpander.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib/card10/portexpander.c b/lib/card10/portexpander.c
index 52eb8897..8d4c3891 100644
--- a/lib/card10/portexpander.c
+++ b/lib/card10/portexpander.c
@@ -102,9 +102,8 @@ int portexpander_init(void)
 	// Enable outputs for the transistors, the LED and the LCD reset
 	for (int i = 0; i < sizeof(pe_pin_config) / sizeof(pe_pin_config[0]);
 	     i++) {
-		MXC_ASSERT(
-			portexpander_config(&pe_pin_config[i]) == E_NO_ERROR
-		);
+		ret = portexpander_config(&pe_pin_config[i]);
+		MXC_ASSERT(ret == E_NO_ERROR);
 	}
 
 	// Latch inputs so we can figure out whether an interrupt was caused by a rising or falling edge
@@ -161,7 +160,7 @@ int portexpander_config(const portexpander_cfg_t *cfg)
 		return E_BAD_PARAM;
 	}
 
-	portexpander_write(PE_C_PULL_ENABLE, pull_selection_state);
+	portexpander_write(PE_C_PULL_SEL, pull_selection_state);
 	portexpander_write(PE_C_PULL_ENABLE, pull_enable_state);
 
 	return E_NO_ERROR;
-- 
GitLab