diff --git a/doc/adding-a-new-board.md b/doc/adding-a-new-board.md index db63237..107f7c9 100644 --- a/doc/adding-a-new-board.md +++ b/doc/adding-a-new-board.md @@ -2,7 +2,9 @@ ## Charger parameters -- `CHARGER_CHARGE_CURRENT`: Currently the same for all boards (1536). +- `CHARGER_ADAPTER_RSENSE`: The adapter RSENSE value in milliohms. +- `CHARGER_BATTERY_RSENSE`: The battery RSENSE value in milliohms. +- `CHARGER_CHARGE_CURRENT`: The desired charge current in milliamps. - `CHARGER_CHARGE_VOLTAGE`: On the battery, look for 充电限制电压 (charge limit voltage). Convert this from volts to millivolts. - `CHARGER_INPUT_CURRENT`: On the charger, look for DC output. Convert the @@ -10,23 +12,28 @@ #### Example -The gaze15 battery has +The gaze15 battery has: ``` 充电限制电压: 16.8Vdc ``` -and its charger has +Its charger has: ``` DC OUTPUT (输出/輸出): 19.5V⎓9.23A 180W ``` -This gives +The schematics show it uses a 0.005 ohm sense resistor for both the adapter and +the battery. + +This gives: ``` 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/addw1/board.mk b/src/board/system76/addw1/board.mk index be916b1..eff3e59 100644 --- a/src/board/system76/addw1/board.mk +++ b/src/board/system76/addw1/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=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=12600 \ -DCHARGER_INPUT_CURRENT=11800 diff --git a/src/board/system76/addw2/board.mk b/src/board/system76/addw2/board.mk index dc808f8..fda2357 100644 --- a/src/board/system76/addw2/board.mk +++ b/src/board/system76/addw2/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=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=12600 \ -DCHARGER_INPUT_CURRENT=11800 diff --git a/src/board/system76/bonw14/board.mk b/src/board/system76/bonw14/board.mk index b4288f2..0709d19 100644 --- a/src/board/system76/bonw14/board.mk +++ b/src/board/system76/bonw14/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=10 \ + -DCHARGER_CHARGE_CURRENT=3072 \ -DCHARGER_CHARGE_VOLTAGE=16800 \ -DCHARGER_INPUT_CURRENT=14000 diff --git a/src/board/system76/common/charger/bq24780s.c b/src/board/system76/common/charger/bq24780s.c index 3f1676d..29a4e2d 100644 --- a/src/board/system76/common/charger/bq24780s.c +++ b/src/board/system76/common/charger/bq24780s.c @@ -8,6 +8,12 @@ #include #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+=\