From edcfac105099ced1c2e1b0200b633e64ca873432 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 22 Mar 2023 09:13:14 -0600 Subject: [PATCH] Make INPUT_CURRENT a macro taking arguments --- src/board/system76/common/charger/bq24780s.c | 8 ++++---- src/board/system76/common/charger/oz26786.c | 13 ++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/board/system76/common/charger/bq24780s.c b/src/board/system76/common/charger/bq24780s.c index a8a854d..8ab8afd 100644 --- a/src/board/system76/common/charger/bq24780s.c +++ b/src/board/system76/common/charger/bq24780s.c @@ -63,11 +63,11 @@ #define INPUT_CURRENT_MASK 0x1F80 #if CHARGER_ADAPTER_RSENSE == 5 - #define INPUT_CURRENT (MIN((CHARGER_INPUT_CURRENT >> 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN(((X) >> 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #elif CHARGER_ADAPTER_RSENSE == 10 - #define INPUT_CURRENT (MIN(CHARGER_INPUT_CURRENT, INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN((X), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #elif CHARGER_ADAPTER_RSENSE == 20 - #define INPUT_CURRENT (MIN((CHARGER_INPUT_CURRENT << 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN(((X) << 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #else #error Invalid adapter RSENSE value #endif @@ -145,7 +145,7 @@ int16_t battery_charger_enable(void) { return res; // Set input current in mA - res = smbus_write(CHARGER_ADDRESS, REG_INPUT_CURRENT, INPUT_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_INPUT_CURRENT, INPUT_CURRENT(CHARGER_INPUT_CURRENT)); if (res < 0) return res; diff --git a/src/board/system76/common/charger/oz26786.c b/src/board/system76/common/charger/oz26786.c index 41f606d..f8ec9ab 100644 --- a/src/board/system76/common/charger/oz26786.c +++ b/src/board/system76/common/charger/oz26786.c @@ -44,13 +44,13 @@ #define INPUT_CURRENT_MASK 0x0F80 #if CHARGER_ADAPTER_RSENSE == 5 - #define INPUT_CURRENT (MIN((CHARGER_INPUT_CURRENT >> 2), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN(((X) >> 2), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #define ADAPTER_RSENSE RSENSE_5 #elif CHARGER_ADAPTER_RSENSE == 10 - #define INPUT_CURRENT (MIN((CHARGER_INPUT_CURRENT >> 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN(((X) >> 1), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #define ADAPTER_RSENSE RSENSE_10 #elif CHARGER_ADAPTER_RSENSE == 20 - #define INPUT_CURRENT (MIN(CHARGER_INPUT_CURRENT, INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) + #define INPUT_CURRENT(X) (MIN((X), INPUT_CURRENT_MASK) & INPUT_CURRENT_MASK) #define ADAPTER_RSENSE RSENSE_20 #else #error Invalid adapter RSENSE value @@ -100,9 +100,8 @@ int16_t battery_charger_disable(void) { if (res < 0) return res; - // Set input current in mA - //TODO: needed when charging disabled? - res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT); + // Disable input current + res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, 0); if (res < 0) return res; @@ -146,7 +145,7 @@ int16_t battery_charger_enable(void) { return res; // Set input current in mA - res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT(CHARGER_INPUT_CURRENT)); if (res < 0) return res;