| /* |
| * Copyright 2020 Google LLC |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_DRIVERS_SENSOR_BATTERY_MAX17055_H_ |
| #define ZEPHYR_DRIVERS_SENSOR_BATTERY_MAX17055_H_ |
| |
| /* Register addresses */ |
| enum { |
| STATUS = 0x0, |
| REP_CAP = 0x5, |
| REP_SOC = 0x6, |
| INT_TEMP = 0x8, |
| VCELL = 0x9, |
| AVG_CURRENT = 0xb, |
| FULL_CAP_REP = 0x10, |
| TTE = 0x11, |
| ICHG_TERM = 0x1e, |
| CYCLES = 0x17, |
| DESIGN_CAP = 0x18, |
| TTF = 0x20, |
| V_EMPTY = 0x3a, |
| FSTAT = 0x3d, |
| D_QACC = 0x45, |
| D_PACC = 0x46, |
| SOFT_WAKEUP = 0x60, |
| HIB_CFG = 0xba, |
| MODEL_CFG = 0xdb, |
| }; |
| |
| /* Masks */ |
| enum { |
| FSTAT_DNR = 0x0001, |
| HIB_CFG_CLEAR = 0x0000, |
| MODELCFG_REFRESH = 0x8000, |
| SOFT_WAKEUP_CLEAR = 0x0000, |
| SOFT_WAKEUP_WAKEUP = 0x0090, |
| STATUS_POR = 0x0002, |
| }; |
| |
| struct max17055_data { |
| const struct device *i2c; |
| /* Current cell voltage in units of 1.25/16mV */ |
| uint16_t voltage; |
| /* Average current in units of 1.5625uV / Rsense */ |
| int16_t avg_current; |
| /* Remaining capacity as a %age */ |
| uint16_t state_of_charge; |
| /* Internal temperature in units of 1/256 degrees C */ |
| int16_t internal_temp; |
| /* Full charge capacity in 5/Rsense uA */ |
| uint16_t full_cap; |
| /* Remaining capacity in 5/Rsense uA */ |
| uint16_t remaining_cap; |
| /* Time to empty in seconds */ |
| uint16_t time_to_empty; |
| /* Time to full in seconds */ |
| uint16_t time_to_full; |
| /* Cycle count in 1/100ths (number of charge/discharge cycles) */ |
| uint16_t cycle_count; |
| /* Design capacity in 5/Rsense uA */ |
| uint16_t design_cap; |
| }; |
| |
| struct max17055_config { |
| char *bus_name; |
| /* Value of Rsense resistor in milliohms (typically 5 or 10) */ |
| uint16_t rsense_mohms; |
| /* The design capacity (aka label capacity) of the cell in mAh */ |
| uint16_t design_capacity; |
| /* Design voltage of cell in mV */ |
| uint16_t design_voltage; |
| /* Desired voltage of cell in mV */ |
| uint16_t desired_voltage; |
| /* Desired charging current in mA */ |
| uint16_t desired_charging_current; |
| /* The charge termination current in uA */ |
| uint16_t i_chg_term; |
| /* The empty voltage of the cell in mV */ |
| uint16_t v_empty; |
| }; |
| |
| #endif |