Make INPUT_CURRENT a macro taking arguments

This commit is contained in:
Jeremy Soller
2023-03-22 09:13:14 -06:00
parent 5b55048ef3
commit edcfac1050
2 changed files with 10 additions and 11 deletions

View File

@ -63,11 +63,11 @@
#define INPUT_CURRENT_MASK 0x1F80 #define INPUT_CURRENT_MASK 0x1F80
#if CHARGER_ADAPTER_RSENSE == 5 #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 #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 #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 #else
#error Invalid adapter RSENSE value #error Invalid adapter RSENSE value
#endif #endif
@ -145,7 +145,7 @@ int16_t battery_charger_enable(void) {
return res; return res;
// Set input current in mA // 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) if (res < 0)
return res; return res;

View File

@ -44,13 +44,13 @@
#define INPUT_CURRENT_MASK 0x0F80 #define INPUT_CURRENT_MASK 0x0F80
#if CHARGER_ADAPTER_RSENSE == 5 #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 #define ADAPTER_RSENSE RSENSE_5
#elif CHARGER_ADAPTER_RSENSE == 10 #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 #define ADAPTER_RSENSE RSENSE_10
#elif CHARGER_ADAPTER_RSENSE == 20 #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 #define ADAPTER_RSENSE RSENSE_20
#else #else
#error Invalid adapter RSENSE value #error Invalid adapter RSENSE value
@ -100,9 +100,8 @@ int16_t battery_charger_disable(void) {
if (res < 0) if (res < 0)
return res; return res;
// Set input current in mA // Disable input current
//TODO: needed when charging disabled? res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, 0);
res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT);
if (res < 0) if (res < 0)
return res; return res;
@ -146,7 +145,7 @@ int16_t battery_charger_enable(void) {
return res; return res;
// Set input current in mA // 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) if (res < 0)
return res; return res;