From 6295f601720bef0e46622249f1779a415fa734b7 Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Wed, 13 Jul 2022 14:06:53 -0600 Subject: [PATCH] Fix smart charger values Fix all smart charger values by having boards provide the RSENSE values and perform the register calculations in the code. The galp3-c, galp5, gaze16, and gaze17 do not seem to have the same behavior as the rest of the boards, and further investigation is needed. In the mean time, reduce their charge current values to preserve current behavior. Ref: OZ26786-DS v1.0 Ref: bq24780S Rev. C datasheet Signed-off-by: Tim Crawford #include +// Registers +#define REG_CHARGE_CURRENT 0x14 +#define REG_CHARGE_VOLTAGE 0x15 +#define REG_DISCHARGE_CURRENT 0x39 +#define REG_INPUT_CURRENT 0x3F + // ChargeOption0 flags // Low Power Mode Enable #define SBC_EN_LWPWR ((uint16_t)(BIT(15))) @@ -18,6 +24,36 @@ // IDCHG Amplifier Gain #define SBC_IDCHC_GAIN ((uint16_t)(BIT(3))) +// Bits 0-5 are ignored. Bits 13-15 must be 0. +#define CHARGE_CURRENT_MASK 0x1FC0 + +#if CHARGER_BATTERY_RSENSE == 5 + #define CHARGE_CURRENT ((CHARGER_CHARGE_CURRENT >> 1) & CHARGE_CURRENT_MASK) +#elif CHARGER_BATTERY_RSENSE == 10 + #define CHARGE_CURRENT (CHARGER_CHARGE_CURRENT & CHARGE_CURRENT_MASK) +#elif CHARGER_BATTERY_RSENSE == 20 + #define CHARGE_CURRENT ((CHARGER_CHARGE_CURRENT << 1) & CHARGE_CURRENT_MASK) +#else + #error Invalid battery RSENSE value +#endif + +// Bits 0-3, 15 are ignored. +#define CHARGE_VOLTAGE_MASK 0x7FF0 +#define CHARGE_VOLTAGE (CHARGER_CHARGE_VOLTAGE & CHARGE_VOLTAGE_MASK) + +// Bits 0-6 are ignored. Bits 12-15 must be 0. +#define INPUT_CURRENT_MASK 0x0F80 + +#if CHARGER_ADAPTER_RSENSE == 5 + #define INPUT_CURRENT ((CHARGER_INPUT_CURRENT >> 1) & INPUT_CURRENT_MASK) +#elif CHARGER_ADAPTER_RSENSE == 10 + #define INPUT_CURRENT (CHARGER_INPUT_CURRENT & INPUT_CURRENT_MASK) +#elif CHARGER_ADAPTER_RSENSE == 20 + #define INPUT_CURRENT ((CHARGER_INPUT_CURRENT << 1) & INPUT_CURRENT_MASK) +#else + #error Invalid adapter RSENSE value +#endif + // XXX: Assumption: ac_last is initialized high. static bool charger_enabled = false; @@ -37,15 +73,15 @@ int16_t battery_charger_disable(void) { ); // Disable charge current - res = smbus_write(CHARGER_ADDRESS, 0x14, 0); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_CURRENT, 0); if (res < 0) return res; // Disable charge voltage - res = smbus_write(CHARGER_ADDRESS, 0x15, 0); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, 0); if (res < 0) return res; // Disable input current - res = smbus_write(CHARGER_ADDRESS, 0x3F, 0); + res = smbus_write(CHARGER_ADDRESS, REG_INPUT_CURRENT, 0); if (res < 0) return res; DEBUG("Charger disabled\n"); @@ -62,15 +98,15 @@ int16_t battery_charger_enable(void) { if (res < 0) return res; // Set charge current in mA - res = smbus_write(CHARGER_ADDRESS, 0x14, CHARGER_CHARGE_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_CURRENT, CHARGE_CURRENT); if (res < 0) return res; // Set charge voltage in mV - res = smbus_write(CHARGER_ADDRESS, 0x15, CHARGER_CHARGE_VOLTAGE); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, CHARGE_VOLTAGE); if (res < 0) return res; // Set input current in mA - res = smbus_write(CHARGER_ADDRESS, 0x3F, CHARGER_INPUT_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_INPUT_CURRENT, INPUT_CURRENT); if (res < 0) return res; // Set charge option 0 with watchdog disabled @@ -117,10 +153,10 @@ void battery_debug(void) { command(ChargeOption1, CHARGER_ADDRESS, 0x3B); command(ChargeOption2, CHARGER_ADDRESS, 0x38); command(ChargeOption3, CHARGER_ADDRESS, 0x37); - command(ChargeCurrent, CHARGER_ADDRESS, 0x14); - command(ChargeVoltage, CHARGER_ADDRESS, 0x15); - command(DishargeCurrent, CHARGER_ADDRESS, 0x39); - command(InputCurrent, CHARGER_ADDRESS, 0x3F); + command(ChargeCurrent, CHARGER_ADDRESS, REG_CHARGE_CURRENT); + command(ChargeVoltage, CHARGER_ADDRESS, REG_CHARGE_VOLTAGE); + command(DishargeCurrent, CHARGER_ADDRESS, REG_DISCHARGE_CURRENT); + command(InputCurrent, CHARGER_ADDRESS, REG_INPUT_CURRENT); command(ProchotOption0, CHARGER_ADDRESS, 0x3C); command(ProchotOption1, CHARGER_ADDRESS, 0x3D); command(ProchotStatus, CHARGER_ADDRESS, 0x3A); diff --git a/src/board/system76/common/charger/oz26786.c b/src/board/system76/common/charger/oz26786.c index a82fa87..c2db468 100644 --- a/src/board/system76/common/charger/oz26786.c +++ b/src/board/system76/common/charger/oz26786.c @@ -17,6 +17,50 @@ #define CHARGE_OPTION_2_PSYS_EN BIT(11) #define REG_ADAPTER_CURRENT 0x3F +// Bits 0-5, 13-15 are ignored. +#define CHARGE_CURRENT_MASK 0x1FC0 + +#if CHARGER_BATTERY_RSENSE == 5 + #define CHARGE_CURRENT ((CHARGER_CHARGE_CURRENT >> 1) & CHARGE_CURRENT_MASK) + // XXX: According to the datasheet, only 10 and 20 are valid. + #define BATTERY_RSENSE (RSENSE_10 << 8) +#elif CHARGER_BATTERY_RSENSE == 10 + #define CHARGE_CURRENT (CHARGER_CHARGE_CURRENT & CHARGE_CURRENT_MASK) + #define BATTERY_RSENSE (RSENSE_10 << 8) +#elif CHARGER_BATTERY_RSENSE == 20 + #define CHARGE_CURRENT ((CHARGER_CHARGE_CURRENT << 1) & CHARGE_CURRENT_MASK) + #define BATTERY_RSENSE (RSENSE_20 << 8) +#else + #error Invalid battery RSENSE value +#endif + +// Bits 0-3, 15 are ignored. +#define CHARGE_VOLTAGE_MASK 0x7FF0 +#define CHARGE_VOLTAGE (CHARGER_CHARGE_VOLTAGE & CHARGE_VOLTAGE_MASK) + +// Bits 0-6 are ignored. Bits 12-15 must be 0. +#define INPUT_CURRENT_MASK 0x0F80 + +#if CHARGER_ADAPTER_RSENSE == 5 + #define INPUT_CURRENT ((CHARGER_INPUT_CURRENT >> 2) & INPUT_CURRENT_MASK) + #define ADAPTER_RSENSE RSENSE_5 +#elif CHARGER_ADAPTER_RSENSE == 10 + #define INPUT_CURRENT ((CHARGER_INPUT_CURRENT >> 1) & INPUT_CURRENT_MASK) + #define ADAPTER_RSENSE RSENSE_10 +#elif CHARGER_ADAPTER_RSENSE == 20 + #define INPUT_CURRENT (CHARGER_INPUT_CURRENT & INPUT_CURRENT_MASK) + #define ADAPTER_RSENSE RSENSE_20 +#else + #error Invalid adapter RSENSE value +#endif + +// Sense resistor values in milliohms. +enum sense_resistor { + RSENSE_10 = 0, + RSENSE_20 = 1, + RSENSE_5 = 2, +}; + // XXX: Assumption: ac_last is initialized high. static bool charger_enabled = false; @@ -30,7 +74,7 @@ int16_t battery_charger_disable(void) { res = smbus_write( CHARGER_ADDRESS, REG_CHARGE_OPTION_1, - CHARGE_OPTION_1_600KHZ + CHARGE_OPTION_1_600KHZ | ADAPTER_RSENSE | BATTERY_RSENSE ); if (res < 0) return res; @@ -53,7 +97,7 @@ int16_t battery_charger_disable(void) { // Set input current in mA //TODO: needed when charging disabled? - res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, CHARGER_INPUT_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT); if (res < 0) return res; DEBUG("Charger disabled\n"); @@ -73,7 +117,7 @@ int16_t battery_charger_enable(void) { res = smbus_write( CHARGER_ADDRESS, REG_CHARGE_OPTION_1, - CHARGE_OPTION_1_600KHZ + CHARGE_OPTION_1_600KHZ | ADAPTER_RSENSE | BATTERY_RSENSE ); if (res < 0) return res; @@ -86,15 +130,15 @@ int16_t battery_charger_enable(void) { if (res < 0) return res; // Set charge current in mA - res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_CURRENT, CHARGER_CHARGE_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_CURRENT, CHARGE_CURRENT); if (res < 0) return res; // Set charge voltage in mV - res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, CHARGER_CHARGE_VOLTAGE); + res = smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, CHARGE_VOLTAGE); if (res < 0) return res; // Set input current in mA - res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, CHARGER_INPUT_CURRENT); + res = smbus_write(CHARGER_ADDRESS, REG_ADAPTER_CURRENT, INPUT_CURRENT); if (res < 0) return res; DEBUG("Charger enabled\n"); @@ -106,7 +150,7 @@ void battery_charger_event(void) { // Avoid watchdog timeout if (charger_enabled) { // Set charge voltage in mV - smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, CHARGER_CHARGE_VOLTAGE); + smbus_write(CHARGER_ADDRESS, REG_CHARGE_VOLTAGE, CHARGE_VOLTAGE); } } diff --git a/src/board/system76/darp5/board.mk b/src/board/system76/darp5/board.mk index 2b3e555..1e0c084 100644 --- a/src/board/system76/darp5/board.mk +++ b/src/board/system76/darp5/board.mk @@ -17,9 +17,11 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=17600 \ - -DCHARGER_INPUT_CURRENT=3200 + -DCHARGER_INPUT_CURRENT=3420 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/darp7/board.mk b/src/board/system76/darp7/board.mk index d95e4db..8357f14 100644 --- a/src/board/system76/darp7/board.mk +++ b/src/board/system76/darp7/board.mk @@ -18,11 +18,12 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -#TODO: Find out why input current must by divided by two CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=5 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=8800 \ - -DCHARGER_INPUT_CURRENT=1600 + -DCHARGER_INPUT_CURRENT=3420 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/darp8/board.mk b/src/board/system76/darp8/board.mk index 31c0aec..7ffc694 100644 --- a/src/board/system76/darp8/board.mk +++ b/src/board/system76/darp8/board.mk @@ -18,14 +18,13 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -# Adapter input current = 4.74A -# PRS1 = 0.010 ohm. Divide adapter input current by 2. -# PRS2 = 0.010 ohm. Use desired charge current. CHARGER=oz26786 CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=0xB80 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=8800 \ - -DCHARGER_INPUT_CURRENT=0x900 + -DCHARGER_INPUT_CURRENT=4740 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/galp3-c/board.mk b/src/board/system76/galp3-c/board.mk index 9daccfb..017172b 100644 --- a/src/board/system76/galp3-c/board.mk +++ b/src/board/system76/galp3-c/board.mk @@ -16,10 +16,13 @@ CFLAGS+=-DI2C_SMBUS=I2C_0 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters +# FIXME: Verify parts and values. CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=13056 \ - -DCHARGER_INPUT_CURRENT=1920 + -DCHARGER_INPUT_CURRENT=2100 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/galp5/board.mk b/src/board/system76/galp5/board.mk index 292a260..9ab5f9d 100644 --- a/src/board/system76/galp5/board.mk +++ b/src/board/system76/galp5/board.mk @@ -22,12 +22,14 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -#TODO: Find out why input current must by divided by two +# FIXME: Verify parts and values. CHARGER=oz26786 CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=17400 \ - -DCHARGER_INPUT_CURRENT=1600 + -DCHARGER_INPUT_CURRENT=3420 # Set CPU power limits in watts CFLAGS+=\ diff --git a/src/board/system76/gaze15/board.mk b/src/board/system76/gaze15/board.mk index 5a6874b..aaaa4b6 100644 --- a/src/board/system76/gaze15/board.mk +++ b/src/board/system76/gaze15/board.mk @@ -19,7 +19,9 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=5 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=16800 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/gaze16-3050/board.mk b/src/board/system76/gaze16-3050/board.mk index 738e49b..8372865 100644 --- a/src/board/system76/gaze16-3050/board.mk +++ b/src/board/system76/gaze16-3050/board.mk @@ -21,8 +21,11 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters +# FIXME: Verify parts and values. CHARGER=oz26786 CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=10 \ -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=16800 \ -DCHARGER_INPUT_CURRENT=7700 diff --git a/src/board/system76/gaze16-3060/board.mk b/src/board/system76/gaze16-3060/board.mk index 10480e1..297a4da 100644 --- a/src/board/system76/gaze16-3060/board.mk +++ b/src/board/system76/gaze16-3060/board.mk @@ -21,8 +21,11 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters +# FIXME: Verify parts and values. CHARGER=oz26786 CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=10 \ -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=16800 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/gaze17-3050/board.mk b/src/board/system76/gaze17-3050/board.mk index 9fab1a7..c844171 100644 --- a/src/board/system76/gaze17-3050/board.mk +++ b/src/board/system76/gaze17-3050/board.mk @@ -22,14 +22,14 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters # TODO: actually bq24800 -# Adapter input current = 7.5A -# PRS1 = 0.010 ohm. Use exact adapter input current. -# PRS2 = 0.010 ohm. Use desired charge current. +# FIXME: Verify parts and values. CHARGER=bq24780s CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=0xB80 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=17600 \ - -DCHARGER_INPUT_CURRENT=0x1D00 + -DCHARGER_INPUT_CURRENT=0x7500 # Set CPU power limits in watts CFLAGS+=\ diff --git a/src/board/system76/gaze17-3060/board.mk b/src/board/system76/gaze17-3060/board.mk index f168587..1813a21 100644 --- a/src/board/system76/gaze17-3060/board.mk +++ b/src/board/system76/gaze17-3060/board.mk @@ -21,9 +21,12 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -#TODO: actually bq24800 +# TODO: actually bq24800 +# FIXME: Verify parts and values. CHARGER=bq24780s CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=10 \ -DCHARGER_CHARGE_CURRENT=1536 \ -DCHARGER_CHARGE_VOLTAGE=17600 \ -DCHARGER_INPUT_CURRENT=7500 diff --git a/src/board/system76/lemp10/board.mk b/src/board/system76/lemp10/board.mk index 9d09b54..a9a9e3d 100644 --- a/src/board/system76/lemp10/board.mk +++ b/src/board/system76/lemp10/board.mk @@ -19,11 +19,12 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -#TODO: Find out why input current must by divided by two CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=5 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=8800 \ - -DCHARGER_INPUT_CURRENT=1600 + -DCHARGER_INPUT_CURRENT=3420 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/lemp11/board.mk b/src/board/system76/lemp11/board.mk index eed2be6..325e556 100644 --- a/src/board/system76/lemp11/board.mk +++ b/src/board/system76/lemp11/board.mk @@ -19,14 +19,13 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -# Adapter input current = 3.42A -# PRS1 = 0.005 ohm. Divide adapter input current by 4. -# PRS2 = 0.005 ohm. Divide charge current by 2. CHARGER=oz26786 CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=0x600 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=5 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=8800 \ - -DCHARGER_INPUT_CURRENT=0x300 + -DCHARGER_INPUT_CURRENT=3420 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/lemp9/board.mk b/src/board/system76/lemp9/board.mk index ccadf01..2f545f8 100644 --- a/src/board/system76/lemp9/board.mk +++ b/src/board/system76/lemp9/board.mk @@ -16,11 +16,12 @@ CFLAGS+=-DI2C_SMBUS=I2C_4 CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters -#TODO: Find out why input current must by divided by two CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=5 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=8800 \ - -DCHARGER_INPUT_CURRENT=1600 + -DCHARGER_INPUT_CURRENT=3420 # Add system76 common code include src/board/system76/common/common.mk diff --git a/src/board/system76/oryp5/board.mk b/src/board/system76/oryp5/board.mk index b5f07b2..abdda68 100644 --- a/src/board/system76/oryp5/board.mk +++ b/src/board/system76/oryp5/board.mk @@ -20,7 +20,9 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=17120 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/oryp6/board.mk b/src/board/system76/oryp6/board.mk index 9640ffd..2778951 100644 --- a/src/board/system76/oryp6/board.mk +++ b/src/board/system76/oryp6/board.mk @@ -19,7 +19,9 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=13050 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/oryp7/board.mk b/src/board/system76/oryp7/board.mk index 9640ffd..2778951 100644 --- a/src/board/system76/oryp7/board.mk +++ b/src/board/system76/oryp7/board.mk @@ -19,7 +19,9 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=13050 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/oryp8/board.mk b/src/board/system76/oryp8/board.mk index bf22ccc..29444c5 100644 --- a/src/board/system76/oryp8/board.mk +++ b/src/board/system76/oryp8/board.mk @@ -22,7 +22,9 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_ADAPTER_RSENSE=10 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=13050 \ -DCHARGER_INPUT_CURRENT=9230 diff --git a/src/board/system76/oryp9/board.mk b/src/board/system76/oryp9/board.mk index c9da51e..82b07a6 100644 --- a/src/board/system76/oryp9/board.mk +++ b/src/board/system76/oryp9/board.mk @@ -22,13 +22,13 @@ CFLAGS+=-DPS2_TOUCHPAD=PS2_3 # Set smart charger parameters # TODO: actually bq24800 -# Adapter input current = 11.5A -# PRS1 = 0.005 ohm. Divide adapter input current by 2. -# PRS2 = 0.010 ohm. Use desired charge current. +# FIXME: Verify parts and values. CFLAGS+=\ - -DCHARGER_CHARGE_CURRENT=0xB80 \ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=2048 \ -DCHARGER_CHARGE_VOLTAGE=13050 \ - -DCHARGER_INPUT_CURRENT=0x1600 + -DCHARGER_INPUT_CURRENT=11500 # Set CPU power limits in watts CFLAGS+=\