From e6b8eb4c420f132ff0bfafc0719b3f0261a209ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 3 May 2023 10:41:36 -0600 Subject: [PATCH] charger/oz26786: support different PSYS current gains --- src/board/system76/common/charger/oz26786.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/board/system76/common/charger/oz26786.c b/src/board/system76/common/charger/oz26786.c index 81e92a2..c1b9f84 100644 --- a/src/board/system76/common/charger/oz26786.c +++ b/src/board/system76/common/charger/oz26786.c @@ -56,6 +56,21 @@ #error Invalid adapter RSENSE value #endif +// PSYS gain in nA/W +#ifndef CHARGER_PSYS_GAIN + #define CHARGER_PSYS_GAIN 1000 +#endif +#if CHARGER_PSYS_GAIN == 1000 + #define CHARGE_OPTION_2_PSYS_GAIN (0 << 8) +#elif CHARGER_PSYS_GAIN == 500 + #define CHARGE_OPTION_2_PSYS_GAIN (1 << 8) +#elif CHARGER_PSYS_GAIN == 250 + #define CHARGE_OPTION_2_PSYS_GAIN (2 << 8) +#elif CHARGER_PSYS_GAIN == 2000 + #define CHARGE_OPTION_2_PSYS_GAIN (3 << 8) +#else + #error Invalid CHARGER_PSYS_GAIN value +#endif // clang-format on // Sense resistor values in milliohms. @@ -86,7 +101,7 @@ int16_t battery_charger_disable(void) { // Set charge option 2 to PSYS enable //TODO: needed when charging disabled? - res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_OPTION_2, CHARGE_OPTION_2_PSYS_EN); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_OPTION_2, CHARGE_OPTION_2_PSYS_EN | CHARGE_OPTION_2_PSYS_GAIN); if (res < 0) return res; @@ -130,7 +145,7 @@ int16_t battery_charger_enable(void) { return res; // Set charge option 2 to PSYS enable - res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_OPTION_2, CHARGE_OPTION_2_PSYS_EN); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_OPTION_2, CHARGE_OPTION_2_PSYS_EN | CHARGE_OPTION_2_PSYS_GAIN); if (res < 0) return res;