"""Register definition for the MAX77960 USB battery charger.
Definition of registers, content masks and default values for the
above mentioined chip.
Externalized, just for clarity of the source code.
"""
__author__ = "Oliver Maye"
__version__ = "0.1"
__all__ = ["MAX77960_Reg"]
[docs]class MAX77960_Reg:
# Definition of registers and register content.
# TOP
REG_CID = 0x00
_CID_REVISION = 0xE0 # Silicon Revision
_CID_VERSION = 0x1F # OTP Recipe Version
_CID_REV_5 = 0xA0 # silicon revision = 5
_CID_REV_6 = 0xC0 # silicon revision = 6
_CID_REV_MIN = _CID_REV_5 # Minimum known silicon revision that this driver is made for.
_CID_REV_MAX = _CID_REV_6 # Maximum known silicon revision that this driver is made for.
_CID_MAX7796x = _CID_REV_5 # MAX77960
_CID_MAX7796xB = _CID_REV_6 # MAX77960B
_REG_SWRST = 0x01
_SWRST_TYPE_O = 0xA5 # Reset Type O registers
_SWRST_NONE = 0x00 # No reset
_SWRST_DEFAULT = _SWRST_NONE
_REG_TOP_INT = 0x02
_TSHDN_I = 0x04 # Thermal shutdown interrupt
_SYSOVLO_I = 0x02 # SYSOVLO interrupt
_SYSUVLO_I = 0x01 # SYSUVLO interrupt
_REG_TOP_INT_MASK = 0x03
_TSHDN_M = 0x04 # Thermal shutdown interrupt masked
_SYSOVLO_M = 0x02 # SYSOVLO interrupt masked
_SYSUVLO_M = 0x01 # SYSUVLO interrupt masked
_TOP_INT_MASK_ALL = 0x07
_TOP_INT_MASK_NONE= 0x00
_TOP_INT_MASK_DEFAULT = 0xFF
_REG_TOP_INT_OK = 0x04
_TSHDN_OK = 0x04 # Device in thermal shutdown
_SYSOVLO_OK = 0x02 # SYS voltage above (0) / below (1) SYSOVLO
_SYSUVLO_OK = 0x01 # SYS coltage below (0) / above (1) SYSUVLO
# CHARGER_FUNC
_REG_CHG_INT = 0x10
_AICL_I = 0x80 # AICL interrupt; AICL_OK changed since last read
_CHGIN_I = 0x40 # CHGIN interrupt; CHGIN_OK changed
_B2SOVRC_I = 0x20 # B2SOVRC interrupt; B2SOVRC changed
_CHG_I = 0x10 # Charger interrupt; CHG_OK changed
_BAT_I = 0x08 # Battery interrupt; BAT_OK changed
_CHGINLIM_I = 0x04 # CHGINLIM interrupt; CHGINLIM_OK changed
_DISQBAT_I = 0x02 # DISQBAT interrupt; DISQBAT_OK changed
_OTG_PLIM_I = 0x01 # OTG/PLIM interrupt; OTG_OK (Mode=0xA) or PLIM_OK changed
_REG_CHG_INT_MASK = 0x11
_AICL_M = 0x80 # AICL interrupt masked
_CHGIN_M = 0x40 # CHGIN interrupt masked
_B2SOVRC_M = 0x20 # B2SOVRC interrupt masked
_CHG_M = 0x10 # Charger interrupt masked
_BAT_M = 0x08 # Battery interrupt masked
_CHGINLIM_M = 0x04 # CHGINLIM interrupt masked
_DISQBAT_M = 0x02 # DISQBAT interrupt masked
_OTG_PLIM_M = 0x01 # OTG/PLIM interrupt masked
_CHG_INT_MASK_ALL = 0xFF
_CHG_INT_MASK_NONE= 0x00
_CHG_INT_MASK_DEFAULT = 0xFF
_REG_CHG_INT_OK = 0x12
_AICL_OK = 0x80 # Not in AICL mode
_CHGIN_OK = 0x40 # CHGIN input valid; CHGIN_DTLS=3
_B2SOVRC_OK = 0x20 # BATT to SYS within current limit
_CHG_OK = 0x10 # Charger OK or off
_BAT_OK = 0x08 # Battery OK; BAT_DTLS=0x03 or 0x07
_CHGINLIM_OK = 0x04 # CHGIN input within current limit
_DISQBAT_OK = 0x02 # DISQBAT low and DISIBS is 0 while QBAT is not disabled
_OTG_PLIM_OK = 0x01 # OTG operation OK (Mode=0x0A); Buck-boost within current limit.
_REG_CHG_DETAILS_00 = 0x13
_CHGIN_DTLS = 0x60 # CHGIN Details as follows:
_CHGIN_DTLS_TOO_LOW = 0x00 # VBUS is invalid; V_CHGIN < V_CHGIN_UVLO
_CHGIN_DTLS_RSVD = 0x20 # Reserved
_CHGIN_DTLS_TOO_HIGH= 0x40 # VBUS is invalid; V_CHGIN > V_CHGIN_OVLO
_CHGIN_DTLS_GOOD = 0x60 # VBUS is valid; V_CHGIN_UVLO < V_CHGIN < V_CHGIN_OVLO
_OTG_DTLS = 0x18 # OTG Details as follows:
_OTG_DTLS_UNDERVOLT = 0x00 # OTG output in undervoltage; V_CHGIN < V_OTG_UVLO
_OTG_DTLS_OTG_GOOD = 0x08 # OTG output within limit OTG_ILIM
_OTG_DTLS_OVERVOLT= 0x10 # OTG output in overvoltage; V_CHGIN > V_OTG_OVLO
_OTG_DTLS_ILIM = 0x18 # OTG disabled or output is valid but not in current limit.
_QB_DTLS = 0x01 # QBAT details
_QB_DTLS_ON = 0x01 # QBAT is on.
_QB_DTLS_OFF = 0x00 # QBAT is off.
_REG_CHG_DETAILS_01 = 0x14
_TREG = 0x80 # Temperature regulation status
_TREG_HIGH = 0x80 # Junction temperature higher than REGTEMP; folding back charge current
_TREG_GOOD = 0x00 # Junction temperature less than REGTEMP
_BAT_DTLS = 0x70 # Battery details as follows:
_BAT_DTLS_REMOVAL = 0x00 # Battery removal detected on THM pin.
_BAT_DTLS_BELOW_PREQ= 0x10 # V_BATT < V_PRECHG; below prequal.
_BAT_DTLS_TIME_OUT= 0x20 # Charging takes longer than expected. Possibly due to high system currents, old/damaged battery. Charging suspended.
_BAT_DTLS_OK = 0x30 # Battery OK and (VSYSMIN - 500mV) < VBATT, QBAT is on and VSYS is approximately equal to VBATT.
_BAT_DTLS_LOW_VOLT= 0x40 # Battery OK but its voltage is low: VPRECHG < VBATT < VSYSMIN - 500mV.
_BAT_DTLS_OVR_VOLT= 0x50 # Battery voltage has been greater than the battery overvoltage threshold (CHG_CV_PRM + 240mV/cell) for the last 30ms. Valid input.
_BAT_DTLS_OVR_CURR= 0x60 # Battery has been overcurrent for at least 3ms since the last time this register has been read.
_BAT_DTLS_NO_LEVEL= 0x70 # Battery level not available. In battery only mode, all battery comparators are off except for B2SOVRC.
_CHG_DTLS = 0x0F # Charger details as follows:
_CHG_DTLS_PRECHRG = 0x00 # Charger is in precharge or trickle charge mode CHG_OK = 1 and VBATT < VSYSMIN - 500mV and TJ < TSHDN
_CHG_DTLS_FAST_CURR = 0x01 # Charger is in fast-charge constant current mode CHG_OK = 1 and VBATT < VBATTREG and TJ < TSHDN
_CHG_DTLS_FAST_VOLT = 0x02 # Charger is in fast-charge constant voltage mode CHG_OK = 1 and VBATT = VBATTREG and TJ < TSHDN
_CHG_DTLS_TOP_OFF = 0x03 # Charger is in top-off mode CHG_OK = 1 and VBATT = VBATTREG and TJ < TSHDN
_CHG_DTLS_DONE = 0x04 # Charger is in done mode CHG_OK = 0 and VBATT > VBATTREG - VRSTRT and TJ < TSHDN
_CHG_DTLS_OFF_RESIST= 0x05 # Charger is off because at least one pin of INLIM, ITO, ISET, or VSET has invalid resistance. CHG_OK = 0
_CHG_DTLS_E_TIMER = 0x06 # Charger is in timer fault mode. CHG_OK = 0 and if BAT_DTLS = 0b001 then VBATT < VSYSMIN - 500mV or VBATT < VPRECHG and TJ < TSHDN
_CHG_DTLS_SUSP_QBAT = 0x07 # Charger is suspended because QBAT is disabled (DISQBAT = high or DISIBS = 1) CHG_OK = 0
_CHG_DTLS_OFF_CHGIN = 0x08 # Charger is off, charger input invalid and/or charger is disabled CHG_OK = 1
#_CHG_DTLS_RSV_9 = 0x09 # Reserved.
_CHG_DTLS_OFF_TEMP= 0x0A # Charger is off and the junction temperature is > TSHDN CHG_OK = 0
_CHG_DTLS_OFF_WDOG= 0x0B # Charger is off because the watchdog timer expired CHG_OK = 0
_CHG_DTLS_SUSP_JEITA= 0x0C # Charger is suspended or charge current or voltage is reduced based on JEITA control. This condition is also reported in THM_DTLS. CHG_OK = 0
_CHG_DTLS_SUSP_NOBAT= 0x0D # Charger is suspended because battery removal is detected on THM pin. This condition is also reported in THM_DTLS. CHG_OK = 0
#_CHG_DTLS_RSV_E = 0x0E # Reserved.
#_CHG_DTLS_RSV_F = 0x0F # Reserved.
_REG_CHG_DETAILS_02 = 0x15
_THM_DTLS = 0x70 # Thermistor status details as follows:
_THM_DTLS_COLD = 0x00 # Low temperature and charging suspended
_THM_DTLS_COOL = 0x10 # Low temperature charging
_THM_DTLS_NORMAL = 0x20 # Normal temperature charging
_THM_DTLS_WARM = 0x30 # High temperature charging
_THM_DTLS_HOT = 0x40 # High temperature and charging suspended
_THM_DTLS_BAT_RMVD= 0x50 # Battery removal detected on THM pin
_THM_DTLS_DISABLED= 0x60 # Thermistor monitoring is disabled
#_THM_DTLS_RSV_7 = 0x70 # Reserved.
_APP_MODE_DTLS = 0x08 # Application mode status as follows:
_APP_MODE_DTLS_CONV = 0x00 # Operate as a standalone DC-DC converter
_APP_MODE_DTLS_CHRG = 0x08 # Operate as a charger.
_FSW_DTLS = 0x06 # Programmed switching frequency details as follows:
_FSW_DTLS_600K = 0x00 # 600 kHz
_FSW_DTLS_1200K = 0x02 # 1.2 MHz; only from silicon rev. 6 on (MAX7796xB)
#_FSW_DTLS_RSV_2 = 0x04 # Reserved.
#_FSW_DTLS_RSV_3 = 0x06 # Reserved.
_NUM_CELL_DTLS = 0x01 # Number of serially connected battery cells as follows:
_NUM_CELL_DTLS_2 = 0x00 # 2-cell battery
_NUM_CELL_DTLS_3 = 0x01 # 3-cell battery
_REG_CHG_CNFG_00 = 0x16
_COMM_MODE = 0x80 # I2C enable
_COMM_MODE_AUTO = 0x00 # Autonomous Mode defined by external resistors on INLIM, ISET, VSET and ITO pins. Writing 0 to COMM_MODE is ignored.
_COMM_MODE_I2C = 0x80 # I2C enabled. CHGIN_ILIM, CHGCC, CHG_CV_PRM and TO_ITH registers are programmed by I2C. Writing 1 to COMM_MODE is allowed.
_COMM_MODE_DEFAULT = _COMM_MODE_AUTO
_DISIBS = 0x40 # BATT to SYS FET Disable Control Read back value of DISIBS register bit reflects the actual DISIBS command or DISQBAT PIN state.
_DISIBS_FET_PPSM = 0x00 # BATT to SYS FET is controlled by the power path state machine.
_DISIBS_FET_OFF = 0x40 # BATT to SYS FET is forced off.
_DISIBS_DEFAULT = _DISIBS_FET_PPSM
_STBY_EN = 0x20 # CHGIN Standby Enable Read back value of the STBY_EN register bit reflects the actual CHGIN standby setting.
_STBY_EN_DCDC_PPSM = 0x00 # DC-DC is controlled by the power path state machine.
_STBY_EN_DCDC_OFF = 0x20 # Force DC-DC off. Device goes to CHGIN low quiescent current standby.
_STBY_EN_DCDC_DEFAULT = _STBY_EN_DCDC_PPSM
_WDTEN = 0x10 # Watchdog Timer Enable.
_WDTEN_OFF = 0x00 # Watchdog timer disabled
_WDTEN_ON = 0x10 # Watchdog timer enabled
_WDTEN_DEFAULT = _WDTEN_OFF
_MODE = 0x0F # Smart Power Selector Configuration as follows:
_MODE_ALL_OFF = 0x00 # Charger = off, OTG = off, DC-DC = off. When the QBAT switch is on (DISQBAT = low and DISIBS = 0), the battery powers the system.
_MODE_ALL_OFF_1 = 0x01 # Same as 0x00
_MODE_ALL_OFF_2 = 0x02 # Same as 0x00
_MODE_ALL_OFF_3 = 0x03 # Same as 0x00
_MODE_DCDC_ONLY = 0x04 # Charger = off, OTG = off, DC-DC = on. When there is a valid input, the DC-DC converter regulates the system voltage to be the maximum of (VSYSMIN and VBATT + 4%).
_MODE_CHRG_DCDC = 0x05 # Charger = on,OTG = off, DC-DC = on. When there is a valid input, the battery is charging. VSYS is the larger of VSYSMIN and ~VBATT + IBATT x RBAT2SYS.
_MODE_CHRG_DCDC_6 = 0x06 # Same as 0x05
_MODE_CHRG_DCDC_7 = 0x07 # Same as 0x05
#_MODE_RSV_8 = 0x08 # Reserved.
#_MODE_RSV_9 = 0x09 # Reserved.
_MODE_OTG_ONLY = 0x0A # Charger = off, OTG = on, DC-DC = off. QBAT is on to allow the battery to support the system, the charger's DC-DC operates in reverse mode as a buck converter.
#_MODE_RSV_11 = 0x0B # Reserved.
#_MODE_RSV_12 = 0x0C # Reserved.
#_MODE_RSV_13 = 0x0D # Reserved.
#_MODE_RSV_14 = 0x0E # Reserved.
#_MODE_RSV_15 = 0x0F # Reserved.
_MODE_DEFAULT = _MODE_CHRG_DCDC
_REG_CHG_CNFG_01 = 0x17
_PQEN = 0x80 # Low-Battery Prequalification Mode Enable
_PQEN_OFF = 0x00 # Low-Battery Prequalification mode is disabled.
_PQEN_ON = 0x80 # Low-Battery Prequalification mode is enabled.
_PQEN_DEFAULT = _PQEN_ON
_LPM = 0x40 # Low Power Mode control
_LPM_NORMAL = 0x00 # QBAT charge pump runs in Normal mode.
_LPM_ON = 0x40 # QBAT charge pump is in Low Power Mode.
_LPM_DEFAULT = _LPM_NORMAL
_CHG_RSTRT = 0x30 # Charger Restart Threshold
_CHG_RSTRT_100 = 0x00 # 100mV/cell below the value programmed by CHG_CV_PRM
_CHG_RSTRT_150 = 0x10 # 150mV/cell below the value programmed by CHG_CV_PRM
_CHG_RSTRT_200 = 0x20 # 200mV/cell below the value programmed by CHG_CV_PRM
_CHG_RSTRT_DISABLED = 0x30 # Disabled.
_CHG_RSTRT_MIN = _CHG_RSTRT_100
_CHG_RSTRT_MAX = _CHG_RSTRT_200
_CHG_RSTRT_DEFAULT = _CHG_RSTRT_150
_STAT_EN = 0x08 # Charge Indicator Output Enable
_STAT_EN_OFF = 0x00 # Disable STAT output
_STAT_EN_ON = 0x08 # Enable STAT output
_STAT_EN_DEFAULT = _STAT_EN_ON
_FCHGTIME = 0x07 # Fast-Charge Timer setting (tFC, hrs)
_FCHGTIME_DISABLED = 0x00 # Disabled.
_FCHGTIME_3H = 0x01 # 3 hours.
_FCHGTIME_4H = 0x02 # 4 hours.
_FCHGTIME_5H = 0x03 # 5 hours.
_FCHGTIME_6H = 0x04 # 6 hours.
_FCHGTIME_7H = 0x05 # 7 hours.
_FCHGTIME_8H = 0x06 # 8 hours.
_FCHGTIME_10H = 0x07 # 10 hours.
_FCHGTIME_MIN = _FCHGTIME_3H
_FCHGTIME_MAX = _FCHGTIME_10H
_FCHGTIME_DEFAULT = _FCHGTIME_3H
_REG_CHG_CNFG_02 = 0x18
_CHGCC = 0x3F # Fast-Charge Current Selection (mA).
_CHGCC_100 = 0x00 # 100 mA
_CHGCC_150 = 0x01 # 150 mA
_CHGCC_200 = 0x02 # 200 mA
_CHGCC_250 = 0x03 # 250 mA
_CHGCC_300 = 0x04 # 300 mA
_CHGCC_350 = 0x05 # 350 mA
_CHGCC_400 = 0x06 # 400 mA
_CHGCC_450 = 0x07 # 450 mA
_CHGCC_500 = 0x08 # 500 mA
_CHGCC_600 = 0x09 # 600 mA
_CHGCC_700 = 0x0A # 700 mA
_CHGCC_800 = 0x0B # 800 mA
_CHGCC_900 = 0x0C # 900 mA
_CHGCC_1000 = 0x0D # 1000 mA
_CHGCC_1100 = 0x0E # 1100 mA
_CHGCC_1200 = 0x0F # 1200 mA
_CHGCC_1300 = 0x10 # 1300 mA
_CHGCC_1400 = 0x11 # 1400 mA
_CHGCC_1500 = 0x12 # 1500 mA
_CHGCC_1600 = 0x13 # 1600 mA
_CHGCC_1700 = 0x14 # 1700 mA
_CHGCC_1800 = 0x15 # 1800 mA
_CHGCC_1900 = 0x16 # 1900 mA
_CHGCC_2000 = 0x17 # 2000 mA
_CHGCC_2100 = 0x18 # 2100 mA
_CHGCC_2200 = 0x19 # 2200 mA
_CHGCC_2300 = 0x1A # 2300 mA
_CHGCC_2400 = 0x1B # 2400 mA
_CHGCC_2500 = 0x1C # 2500 mA
_CHGCC_2600 = 0x1D # 2600 mA
_CHGCC_2700 = 0x1E # 2700 mA
_CHGCC_2800 = 0x1F # 2800 mA
_CHGCC_2900 = 0x20 # 2900 mA
_CHGCC_3000 = 0x21 # 3000 mA
_CHGCC_3100 = 0x22 # 3100 mA
_CHGCC_3200 = 0x23 # 3200 mA
_CHGCC_3300 = 0x24 # 3300 mA
_CHGCC_3400 = 0x25 # 3400 mA
_CHGCC_3500 = 0x26 # 3500 mA
_CHGCC_3600 = 0x27 # 3600 mA
_CHGCC_3700 = 0x28 # 3700 mA
_CHGCC_3800 = 0x29 # 3800 mA
_CHGCC_3900 = 0x2A # 3900 mA
_CHGCC_4000 = 0x2B # 4000 mA
_CHGCC_4100 = 0x2C # 4100 mA
_CHGCC_4200 = 0x2D # 4200 mA
_CHGCC_4300 = 0x2E # 4300 mA
_CHGCC_4400 = 0x2F # 4400 mA
_CHGCC_4500 = 0x30 # 4500 mA
_CHGCC_4600 = 0x31 # 4600 mA
_CHGCC_4700 = 0x32 # 4700 mA
_CHGCC_4800 = 0x33 # 4800 mA
_CHGCC_4900 = 0x34 # 4900 mA
_CHGCC_5000 = 0x35 # 5000 mA
_CHGCC_5100 = 0x36 # 5100 mA
_CHGCC_5200 = 0x37 # 5200 mA
_CHGCC_5300 = 0x38 # 5300 mA
_CHGCC_5400 = 0x39 # 5400 mA
_CHGCC_5500 = 0x3A # 5500 mA
_CHGCC_5600 = 0x3B # 5600 mA
_CHGCC_5700 = 0x3C # 5700 mA
_CHGCC_5800 = 0x3D # 5800 mA
_CHGCC_5900 = 0x3E # 5900 mA
_CHGCC_6000 = 0x3F # 6000 mA
_CHGCC_MIN = _CHGCC_100
_CHGCC_MAX = _CHGCC_6000
_CHGCC_DEFAULT = _CHGCC_450
_REG_CHG_CNFG_03 = 0x19
_SYS_TRACK_DIS = 0x80 # SYS Tracking Disable Control
_SYS_TRACK_ENABLED = 0x00 # SYS tracking enabled. SYS regulated to MAX(VBATT + 4%, VSYSMIN), even in Charge Done state.
_SYS_TRACK_DISABLED = 0x80 # SYS tracking is disabled. SYS is regulated to VCHG_CV_PRM.
_SYS_TRACK_DEFAULT = _SYS_TRACK_DISABLED
_B2SOVRC_DTC = 0x40 # Battery to SYS Overcurrent Debounce Time Control.
_B2SOVRC_DTC_6_MS = 0x00 # tOCP = 6 ms
_B2SOVRC_DTC_100_MS = 0x40 # tOCP = 100 ms
_B2SOVRC_DTC_MIN = _B2SOVRC_DTC_6_MS
_B2SOVRC_DTC_MAX = _B2SOVRC_DTC_100_MS
_B2SOVRC_DTC_DEFAULT= _B2SOVRC_DTC_6_MS
_TO_TIME = 0x38 # Top-Off Timer Setting
_TO_TIME_30_SEC = 0x00 # 30 seconds
_TO_TIME_10_MIN = 0x08 # 10 minutes
_TO_TIME_20_MIN = 0x10 # 20 minutes
_TO_TIME_30_MIN = 0x18 # 30 minutes
_TO_TIME_40_MIN = 0x20 # 40 minutes
_TO_TIME_50_MIN = 0x28 # 50 minutes
_TO_TIME_60_MIN = 0x30 # 60 minutes
_TO_TIME_70_MIN = 0x38 # 70 minutes
_TO_TIME_MIN = _TO_TIME_30_SEC
_TO_TIME_MAX = _TO_TIME_70_MIN
_TO_TIME_DEFAULT = _TO_TIME_30_MIN
_TO_ITH = 0x07 # Top-Off Current Threshold (mA).
_TO_ITH_100 = 0x00 # 100 mA
_TO_ITH_200 = 0x01 # 200 mA
_TO_ITH_300 = 0x02 # 300 mA
_TO_ITH_400 = 0x03 # 400 mA
_TO_ITH_500 = 0x04 # 500 mA
_TO_ITH_600 = 0x05 # 600 mA
_TO_ITH_600_6 = 0x06 # 600 mA
_TO_ITH_600_7 = 0x07 # 600 mA
_TO_ITH_MIN = _TO_ITH_100
_TO_ITH_MAX = _TO_ITH_600
_TO_ITH_DEFAULT = _TO_ITH_100
_REG_CHG_CNFG_04 = 0x1A
_CHG_CV_PRM = 0x3F # Charge Termination Voltage Setting (mV).
# 2 cells:
_CHG_CV_PRM_2C_8000 = 0x00 # 8000 mV
_CHG_CV_PRM_2C_8020 = 0x01 # 8020 mV
_CHG_CV_PRM_2C_8040 = 0x02 # 8040 mV
_CHG_CV_PRM_2C_8060 = 0x03 # 8060 mV
_CHG_CV_PRM_2C_8080 = 0x04 # 8080 mV
_CHG_CV_PRM_2C_8100 = 0x05 # 8100 mV
_CHG_CV_PRM_2C_8120 = 0x06 # 8120 mV
_CHG_CV_PRM_2C_8140 = 0x07 # 8140 mV
_CHG_CV_PRM_2C_8160 = 0x08 # 8160 mV
_CHG_CV_PRM_2C_8180 = 0x09 # 8180 mV
_CHG_CV_PRM_2C_8200 = 0x0A # 8200 mV
_CHG_CV_PRM_2C_8220 = 0x0B # 8220 mV
_CHG_CV_PRM_2C_8240 = 0x0C # 8240 mV
_CHG_CV_PRM_2C_8260 = 0x0D # 8260 mV
_CHG_CV_PRM_2C_8280 = 0x0E # 8280 mV
_CHG_CV_PRM_2C_8300 = 0x0F # 8300 mV
_CHG_CV_PRM_2C_8320 = 0x10 # 8320 mV
_CHG_CV_PRM_2C_8340 = 0x11 # 8340 mV
_CHG_CV_PRM_2C_8360 = 0x12 # 8360 mV
_CHG_CV_PRM_2C_8380 = 0x13 # 8380 mV
_CHG_CV_PRM_2C_8400 = 0x14 # 8400 mV
_CHG_CV_PRM_2C_8420 = 0x15 # 8420 mV
_CHG_CV_PRM_2C_8440 = 0x16 # 8440 mV
_CHG_CV_PRM_2C_8460 = 0x17 # 8460 mV
_CHG_CV_PRM_2C_8480 = 0x18 # 8480 mV
_CHG_CV_PRM_2C_8500 = 0x19 # 8500 mV
_CHG_CV_PRM_2C_8520 = 0x1A # 8520 mV
_CHG_CV_PRM_2C_8540 = 0x1B # 8540 mV
_CHG_CV_PRM_2C_8560 = 0x1C # 8560 mV
_CHG_CV_PRM_2C_8580 = 0x1D # 8680 mV
_CHG_CV_PRM_2C_8600 = 0x1E # 8600 mV
_CHG_CV_PRM_2C_8620 = 0x1F # 8620 mV
_CHG_CV_PRM_2C_8640 = 0x20 # 8640 mV
_CHG_CV_PRM_2C_8660 = 0x21 # 8660 mV
_CHG_CV_PRM_2C_8680 = 0x22 # 8680 mV
_CHG_CV_PRM_2C_8700 = 0x23 # 8700 mV
_CHG_CV_PRM_2C_8720 = 0x24 # 8720 mV
_CHG_CV_PRM_2C_8740 = 0x25 # 8740 mV
_CHG_CV_PRM_2C_8760 = 0x26 # 8760 mV
_CHG_CV_PRM_2C_8780 = 0x27 # 8780 mV
_CHG_CV_PRM_2C_8800 = 0x28 # 8800 mV
_CHG_CV_PRM_2C_8820 = 0x29 # 8820 mV
_CHG_CV_PRM_2C_8840 = 0x2A # 8840 mV
_CHG_CV_PRM_2C_8860 = 0x2B # 8860 mV
_CHG_CV_PRM_2C_8880 = 0x2C # 8880 mV
_CHG_CV_PRM_2C_8900 = 0x2D # 8900 mV
_CHG_CV_PRM_2C_8920 = 0x2E # 8920 mV
_CHG_CV_PRM_2C_8940 = 0x2F # 8940 mV
_CHG_CV_PRM_2C_8960 = 0x30 # 8960 mV
_CHG_CV_PRM_2C_8980 = 0x31 # 8980 mV
_CHG_CV_PRM_2C_9000 = 0x32 # 9000 mV
_CHG_CV_PRM_2C_9020 = 0x33 # 9020 mV
_CHG_CV_PRM_2C_9040 = 0x34 # 9040 mV
_CHG_CV_PRM_2C_9060 = 0x35 # 9060 mV
_CHG_CV_PRM_2C_9080 = 0x36 # 9080 mV
_CHG_CV_PRM_2C_9100 = 0x37 # 9100 mV
_CHG_CV_PRM_2C_9120 = 0x38 # 9120 mV
_CHG_CV_PRM_2C_9140 = 0x39 # 9140 mV
_CHG_CV_PRM_2C_9160 = 0x3A # 9160 mV
_CHG_CV_PRM_2C_9180 = 0x3B # 9180 mV
_CHG_CV_PRM_2C_9200 = 0x3C # 9200 mV
_CHG_CV_PRM_2C_9220 = 0x3D # 9220 mV
_CHG_CV_PRM_2C_9240 = 0x3E # 9240 mV
_CHG_CV_PRM_2C_9260 = 0x3F # 9260 mV
_CHG_CV_PRM_2C_MIN = _CHG_CV_PRM_2C_8000
_CHG_CV_PRM_2C_MAX = _CHG_CV_PRM_2C_9260
_CHG_CV_PRM_2C_DEFAULT = _CHG_CV_PRM_2C_8000
# 3 cells:
_CHG_CV_PRM_3C_12000= 0x00 # 12000 mV
_CHG_CV_PRM_3C_12030= 0x01 # 12030 mV
_CHG_CV_PRM_3C_12060= 0x02 # 12060 mV
_CHG_CV_PRM_3C_12090= 0x03 # 12090 mV
_CHG_CV_PRM_3C_12120= 0x04 # 12120 mV
_CHG_CV_PRM_3C_12150= 0x05 # 12150 mV
_CHG_CV_PRM_3C_12180= 0x06 # 12180 mV
_CHG_CV_PRM_3C_12210= 0x07 # 12210 mV
_CHG_CV_PRM_3C_12240= 0x08 # 12240 mV
_CHG_CV_PRM_3C_12270= 0x09 # 12270 mV
_CHG_CV_PRM_3C_12300= 0x0A # 12300 mV
_CHG_CV_PRM_3C_12330= 0x0B # 12330 mV
_CHG_CV_PRM_3C_12360= 0x0C # 12360 mV
_CHG_CV_PRM_3C_12390= 0x0D # 12390 mV
_CHG_CV_PRM_3C_12420= 0x0E # 12420 mV
_CHG_CV_PRM_3C_12450= 0x0F # 12450 mV
_CHG_CV_PRM_3C_12480= 0x10 # 12480 mV
_CHG_CV_PRM_3C_12510= 0x11 # 12510 mV
_CHG_CV_PRM_3C_12540= 0x12 # 12540 mV
_CHG_CV_PRM_3C_12570= 0x13 # 12570 mV
_CHG_CV_PRM_3C_12600= 0x14 # 12600 mV
_CHG_CV_PRM_3C_12630= 0x15 # 12630 mV
_CHG_CV_PRM_3C_12660= 0x16 # 12660 mV
_CHG_CV_PRM_3C_12690= 0x17 # 12690 mV
_CHG_CV_PRM_3C_12720= 0x18 # 12720 mV
_CHG_CV_PRM_3C_12750= 0x19 # 12750 mV
_CHG_CV_PRM_3C_12780= 0x1A # 12780 mV
_CHG_CV_PRM_3C_12810= 0x1B # 12810 mV
_CHG_CV_PRM_3C_12840= 0x1C # 12840 mV
_CHG_CV_PRM_3C_12870= 0x1D # 12870 mV
_CHG_CV_PRM_3C_12900= 0x1E # 12900 mV
_CHG_CV_PRM_3C_12930= 0x1F # 12930 mV
_CHG_CV_PRM_3C_12960= 0x20 # 12960 mV
_CHG_CV_PRM_3C_12990= 0x21 # 12990 mV
_CHG_CV_PRM_3C_13020= 0x22 # 13020 mV
_CHG_CV_PRM_3C_13050= 0x23 # 13050 mV
_CHG_CV_PRM_3C_MIN = _CHG_CV_PRM_3C_12000
_CHG_CV_PRM_3C_MAX = _CHG_CV_PRM_3C_13050
_CHG_CV_PRM_3C_DEFAULT = _CHG_CV_PRM_3C_12000
_CHG_CV_PRM_DEFAULT = _CHG_CV_PRM_2C_DEFAULT
_REG_CHG_CNFG_05 = 0x1B
_ITRICKLE = 0x30 # Trickle Charge Current Selection (mA)
_ITRICKLE_100 = 0x00 # 100 mA
_ITRICKLE_200 = 0x10 # 200 mA
_ITRICKLE_300 = 0x20 # 300 mA
_ITRICKLE_400 = 0x30 # 400 mA
_ITRICKLE_MIN = _ITRICKLE_100
_ITRICKLE_MAX = _ITRICKLE_400
_ITRICKLE_DEFAULT = _ITRICKLE_100
_B2SOVRC = 0x0F # BATT to SYS Overcurrent Threshold (mA)
_B2SOVRC_DISABLED = 0x00 # Disabled
_B2SOVRC_3000 = 0x01 # 3000 mA
_B2SOVRC_3500 = 0x02 # 3500 mA
_B2SOVRC_4000 = 0x03 # 4000 mA
_B2SOVRC_4500 = 0x04 # 4500 mA
_B2SOVRC_5000 = 0x05 # 5000 mA
_B2SOVRC_5500 = 0x06 # 5500 mA
_B2SOVRC_6000 = 0x07 # 6000 mA
_B2SOVRC_6500 = 0x08 # 6500 mA
_B2SOVRC_7000 = 0x09 # 7000 mA
_B2SOVRC_7500 = 0x0A # 7500 mA
_B2SOVRC_8000 = 0x0B # 8000 mA
_B2SOVRC_8500 = 0x0C # 8500 mA
_B2SOVRC_9000 = 0x0D # 9000 mA
_B2SOVRC_9500 = 0x0E # 9500 mA
_B2SOVRC_10000 = 0x0F # 10000 mA
_B2SOVRC_MIN = _B2SOVRC_3000
_B2SOVRC_MAX = _B2SOVRC_10000
_B2SOVRC_DEFAULT = _B2SOVRC_4500
_REG_CHG_CNFG_06 = 0x1C
_CHGPROT = 0x0C # Charger Settings Protection Bits
_CHGPROT_LOCK = 0x00 # Write capability locked.
_CHGPROT_LOCK_4 = 0x04 # Write capability locked.
_CHGPROT_LOCK_8 = 0x08 # Write capability locked.
_CHGPROT_UNLOCK = 0x0C # Write capability unlocked.
_CHGPROT_DEFAULT = _CHGPROT_LOCK
_WDTCLR = 0x03 # Watchdog Timer Clear Bits
_WDTCLR_DO_NOT_TOUCH= 0x00 # Watchdog is not cleared.
_WDTCLR_DO_CLEAR = 0x01 # Watchdog is cleared.
_WDTCLR_DO_NOT_TOUCH_2= 0x02 # Watchdog is not cleared.
_WDTCLR_DO_NOT_TOUCH_3= 0x03 # Watchdog is not cleared.
_WDTCLR_DEFAULT = _WDTCLR_DO_NOT_TOUCH
_REG_CHG_CNFG_07 = 0x1D
_JEITA_EN = 0x80 # JEITA Enable
_JEITA_EN_OFF = 0x00 # JEITA disabled. Fast-charge current and charge termination voltage do not change based on thermistor temperature.
_JEITA_EN_ON = 0x80 # JEITA enabled. Fast-charge current and charge termination voltage change based on thermistor temperature.
_JEITA_EN_DEFAULT = _JEITA_EN_OFF
_REGTEMP = 0x78 # Junction Temperature Thermal Regulation (deg. C).
_REGTEMP_85 = 0x00 # 85 deg. Celsius
_REGTEMP_90 = 0x08 # 90 deg. Celsius
_REGTEMP_95 = 0x10 # 95 deg. Celsius
_REGTEMP_100 = 0x18 # 100 deg. Celsius
_REGTEMP_105 = 0x20 # 105 deg. Celsius
_REGTEMP_110 = 0x28 # 110 deg. Celsius
_REGTEMP_115 = 0x30 # 115 deg. Celsius
_REGTEMP_120 = 0x38 # 120 deg. Celsius
_REGTEMP_125 = 0x40 # 125 deg. Celsius
_REGTEMP_130 = 0x48 # 130 deg. Celsius
_REGTEMP_MIN = _REGTEMP_85
_REGTEMP_MAX = _REGTEMP_130
_REGTEMP_DEFAULT = _REGTEMP_115
_VCHGCV_COOL = 0x04 # JEITA-Controlled Battery Termination Voltage When Thermistor Temperature is Between TCOLD and TCOOL
_VCHGCV_COOL_NORMAL = 0x00 # Battery termination voltage is set by CHG_CV_PRM.
_VCHGCV_COOL_REDUCED= 0x04 # Battery termination voltage is set by (CHG_CV_PRM - 180mV/cell).
_VCHGCV_COOL_DEFAULT= _VCHGCV_COOL_NORMAL
_ICHGCC_COOL = 0x02 # JEITA-Controlled Battery Fast-Charge Current When Thermistor Temperature is Between TCOLD and TCOOL
_ICHGCC_COOL_NORMAL = 0x00 # Battery fast-charge current is set by CHGCC
_ICHGCC_COOL_REDUCED= 0x02 # Battery fast-charge current is reduced to 50% of CHGCC
_ICHGCC_COOL_DEFAULT= _ICHGCC_COOL_REDUCED
_FSHIP_MODE = 0x01 # Factory Ship Mode Enable
_FSHIP_MODE_OFF = 0x00 # Disable factory ship mode
_FSHIP_MODE_ON = 0x01 # Enable factory ship mode
_FSHIP_MODE_DEFAULT = _FSHIP_MODE_OFF
_REG_CHG_CNFG_08 = 0x1E
_CHGIN_ILIM = 0x7F # CHGIN Input Current Limit (mA).
_CHGIN_ILIM_100 = 0x00 # 100 mA
_CHGIN_ILIM_100_1 = 0x01 # 100 mA
_CHGIN_ILIM_100_2 = 0x02 # 100 mA
_CHGIN_ILIM_100_3 = 0x03 # 100 mA
_CHGIN_ILIM_150 = 0x04 # 150 mA
_CHGIN_ILIM_200 = 0x05 # 200 mA
_CHGIN_ILIM_250 = 0x06 # 250 mA
_CHGIN_ILIM_300 = 0x07 # 300 mA
_CHGIN_ILIM_350 = 0x08 # 350 mA
_CHGIN_ILIM_400 = 0x09 # 400 mA
_CHGIN_ILIM_450 = 0x0A # 450 mA
_CHGIN_ILIM_500 = 0x0B # 500 mA
_CHGIN_ILIM_550 = 0x0C # 550 mA
_CHGIN_ILIM_600 = 0x0D # 600 mA
_CHGIN_ILIM_650 = 0x0E # 650 mA
_CHGIN_ILIM_700 = 0x0F # 700 mA
_CHGIN_ILIM_750 = 0x10 # 750 mA
_CHGIN_ILIM_800 = 0x11 # 800 mA
_CHGIN_ILIM_850 = 0x12 # 850 mA
_CHGIN_ILIM_900 = 0x13 # 900 mA
_CHGIN_ILIM_950 = 0x14 # 950 mA
_CHGIN_ILIM_1000 = 0x15 # 1000 mA
_CHGIN_ILIM_1050 = 0x16 # 1050 mA
_CHGIN_ILIM_1100 = 0x17 # 1100 mA
_CHGIN_ILIM_1150 = 0x18 # 1150 mA
_CHGIN_ILIM_1200 = 0x19 # 1200 mA
_CHGIN_ILIM_1250 = 0x1A # 1250 mA
_CHGIN_ILIM_1300 = 0x1B # 1300 mA
_CHGIN_ILIM_1350 = 0x1C # 1350 mA
_CHGIN_ILIM_1400 = 0x1D # 1400 mA
_CHGIN_ILIM_1450 = 0x1E # 1450 mA
_CHGIN_ILIM_1500 = 0x1F # 1500 mA
_CHGIN_ILIM_1550 = 0x20 # 1550 mA
_CHGIN_ILIM_1600 = 0x21 # 1600 mA
_CHGIN_ILIM_1650 = 0x22 # 1650 mA
_CHGIN_ILIM_1700 = 0x23 # 1700 mA
_CHGIN_ILIM_1750 = 0x24 # 1750 mA
_CHGIN_ILIM_1800 = 0x25 # 1800 mA
_CHGIN_ILIM_1850 = 0x26 # 1850 mA
_CHGIN_ILIM_1900 = 0x27 # 1900 mA
_CHGIN_ILIM_1950 = 0x28 # 1950 mA
_CHGIN_ILIM_2000 = 0x29 # 2000 mA
_CHGIN_ILIM_2050 = 0x2A # 2050 mA
_CHGIN_ILIM_2100 = 0x2B # 2100 mA
_CHGIN_ILIM_2150 = 0x2C # 2150 mA
_CHGIN_ILIM_2200 = 0x2D # 2200 mA
_CHGIN_ILIM_2250 = 0x2E # 2250 mA
_CHGIN_ILIM_2300 = 0x2F # 2300 mA
_CHGIN_ILIM_2350 = 0x30 # 2350 mA
_CHGIN_ILIM_2400 = 0x31 # 2400 mA
_CHGIN_ILIM_2450 = 0x32 # 2450 mA
_CHGIN_ILIM_2500 = 0x33 # 2500 mA
_CHGIN_ILIM_2550 = 0x34 # 2550 mA
_CHGIN_ILIM_2600 = 0x35 # 2600 mA
_CHGIN_ILIM_2650 = 0x36 # 2650 mA
_CHGIN_ILIM_2700 = 0x37 # 2700 mA
_CHGIN_ILIM_2750 = 0x38 # 2750 mA
_CHGIN_ILIM_2800 = 0x39 # 2800 mA
_CHGIN_ILIM_2850 = 0x3A # 2850 mA
_CHGIN_ILIM_2900 = 0x3B # 2900 mA
_CHGIN_ILIM_2950 = 0x3C # 2950 mA
_CHGIN_ILIM_3000 = 0x3D # 3000 mA
_CHGIN_ILIM_3050 = 0x3E # 3050 mA
_CHGIN_ILIM_3100 = 0x3F # 3100 mA
_CHGIN_ILIM_3150 = 0x40 # 3150 mA
_CHGIN_ILIM_3200 = 0x41 # 3200 mA
_CHGIN_ILIM_3250 = 0x42 # 3250 mA
_CHGIN_ILIM_3300 = 0x43 # 3300 mA
_CHGIN_ILIM_3350 = 0x44 # 3350 mA
_CHGIN_ILIM_3400 = 0x45 # 3400 mA
_CHGIN_ILIM_3450 = 0x46 # 3450 mA
_CHGIN_ILIM_3500 = 0x47 # 3500 mA
_CHGIN_ILIM_3550 = 0x48 # 3550 mA
_CHGIN_ILIM_3600 = 0x49 # 3600 mA
_CHGIN_ILIM_3650 = 0x4A # 3650 mA
_CHGIN_ILIM_3700 = 0x4B # 3700 mA
_CHGIN_ILIM_3750 = 0x4C # 3750 mA
_CHGIN_ILIM_3800 = 0x4D # 3800 mA
_CHGIN_ILIM_3850 = 0x4E # 3850 mA
_CHGIN_ILIM_3900 = 0x4F # 3900 mA
_CHGIN_ILIM_3950 = 0x50 # 3950 mA
_CHGIN_ILIM_4000 = 0x51 # 4000 mA
_CHGIN_ILIM_4050 = 0x52 # 4050 mA
_CHGIN_ILIM_4100 = 0x53 # 4100 mA
_CHGIN_ILIM_4150 = 0x54 # 4150 mA
_CHGIN_ILIM_4200 = 0x55 # 4200 mA
_CHGIN_ILIM_4250 = 0x56 # 4250 mA
_CHGIN_ILIM_4300 = 0x57 # 4300 mA
_CHGIN_ILIM_4350 = 0x58 # 4350 mA
_CHGIN_ILIM_4400 = 0x59 # 4400 mA
_CHGIN_ILIM_4450 = 0x5A # 4450 mA
_CHGIN_ILIM_4500 = 0x5B # 4500 mA
_CHGIN_ILIM_4550 = 0x5C # 4550 mA
_CHGIN_ILIM_4600 = 0x5D # 4600 mA
_CHGIN_ILIM_4650 = 0x5E # 4650 mA
_CHGIN_ILIM_4700 = 0x5F # 4700 mA
_CHGIN_ILIM_4750 = 0x60 # 4750 mA
_CHGIN_ILIM_4800 = 0x61 # 4800 mA
_CHGIN_ILIM_4850 = 0x62 # 4850 mA
_CHGIN_ILIM_4900 = 0x63 # 4900 mA
_CHGIN_ILIM_4950 = 0x64 # 4950 mA
_CHGIN_ILIM_5000 = 0x65 # 5000 mA
_CHGIN_ILIM_5050 = 0x66 # 5050 mA
_CHGIN_ILIM_5100 = 0x67 # 5100 mA
_CHGIN_ILIM_5150 = 0x68 # 5150 mA
_CHGIN_ILIM_5200 = 0x69 # 5200 mA
_CHGIN_ILIM_5250 = 0x6A # 5250 mA
_CHGIN_ILIM_5300 = 0x6B # 5300 mA
_CHGIN_ILIM_5350 = 0x6C # 5350 mA
_CHGIN_ILIM_5400 = 0x6D # 5400 mA
_CHGIN_ILIM_5450 = 0x6E # 5450 mA
_CHGIN_ILIM_5500 = 0x6F # 5500 mA
_CHGIN_ILIM_5550 = 0x70 # 5550 mA
_CHGIN_ILIM_5600 = 0x71 # 5600 mA
_CHGIN_ILIM_5650 = 0x72 # 5650 mA
_CHGIN_ILIM_5700 = 0x73 # 5700 mA
_CHGIN_ILIM_5750 = 0x74 # 5750 mA
_CHGIN_ILIM_5800 = 0x75 # 5800 mA
_CHGIN_ILIM_5850 = 0x76 # 5850 mA
_CHGIN_ILIM_5900 = 0x77 # 5900 mA
_CHGIN_ILIM_5950 = 0x78 # 5950 mA
_CHGIN_ILIM_6000 = 0x79 # 6000 mA
_CHGIN_ILIM_6050 = 0x7A # 6050 mA
_CHGIN_ILIM_6100 = 0x7B # 6100 mA
_CHGIN_ILIM_6150 = 0x7C # 6150 mA
_CHGIN_ILIM_6200 = 0x7D # 6200 mA
_CHGIN_ILIM_6250 = 0x7E # 6250 mA
_CHGIN_ILIM_6300 = 0x7F # 6300 mA
_CHGIN_ILIM_MIN = _CHGIN_ILIM_100
_CHGIN_ILIM_MAX = _CHGIN_ILIM_6300
_CHGIN_ILIM_DEFAULT = _CHGIN_ILIM_500
_CHGIN_ILIM_DEFAULT_VALUE = 500
_REG_CHG_CNFG_09 = 0x1F
_INLIM_CLK = 0xC0 # Input Current Limit Soft-Start Period (micro seconds) Between Consecutive Increments of 25mA
_INLIM_CLK_8 = 0x00 # 8 us
_INLIM_CLK_256 = 0x40 # 256 us
_INLIM_CLK_1024 = 0x80 # 1024 us ~ 1 ms
_INLIM_CLK_4096 = 0xC0 # 4096 us ~ 4 ms
_INLIM_CLK_MIN = _INLIM_CLK_8
_INLIM_CLK_MAX = _INLIM_CLK_4096
_INLIM_CLK_DEFAULT = _INLIM_CLK_1024
_OTG_ILIM = 0x38 # OTG Mode Current Limit Setting (mA)
_OTG_ILIM_500 = 0x00 # 500 mA
_OTG_ILIM_900 = 0x08 # 900 mA
_OTG_ILIM_1200 = 0x10 # 1200 mA
_OTG_ILIM_1500 = 0x18 # 1500 mA
_OTG_ILIM_2000 = 0x20 # 2000 mA
_OTG_ILIM_2250 = 0x28 # 2250 mA
_OTG_ILIM_2500 = 0x30 # 2500 mA
_OTG_ILIM_3000 = 0x38 # 3000 mA
_OTG_ILIM_MIN = _OTG_ILIM_500
_OTG_ILIM_MAX = _OTG_ILIM_3000
_OTG_ILIM_DEFAULT = _OTG_ILIM_1500
_MINVSYS = 0x07 # Minimum System Regulation Voltage (mV)
# 2 cells:
_MINVSYS_2C_5535 = 0x00 # 5535 mV
_MINVSYS_2C_5740 = 0x01 # 5740 mV
_MINVSYS_2C_5945 = 0x02 # 5945 mV
_MINVSYS_2C_6150 = 0x03 # 6150 mV
_MINVSYS_2C_6355 = 0x04 # 6355 mV
_MINVSYS_2C_6560 = 0x05 # 6560 mV
_MINVSYS_2C_6765 = 0x06 # 6765 mV
_MINVSYS_2C_6970 = 0x07 # 6970 mV
_MINVSYS_2C_MIN = _MINVSYS_2C_5535
_MINVSYS_2C_MAX = _MINVSYS_2C_6970
_MINVSYS_2C_DEFAULT = _MINVSYS_2C_6150
# 3 cells:
_MINVSYS_3C_8303 = 0x00 # 8303 mV
_MINVSYS_3C_8610 = 0x01 # 8610 mV
_MINVSYS_3C_8918 = 0x02 # 8918 mV
_MINVSYS_3C_9225 = 0x03 # 9225 mV
_MINVSYS_3C_9533 = 0x04 # 9533 mV
_MINVSYS_3C_9840 = 0x05 # 9840 mV
_MINVSYS_3C_10148 = 0x06 # 10148 mV
_MINVSYS_3C_10455 = 0x07 # 10455 mV
_MINVSYS_3C_MIN = _MINVSYS_3C_8303
_MINVSYS_3C_MAX = _MINVSYS_3C_10455
_MINVSYS_3C_DEFAULT = _MINVSYS_3C_9225
_MINVSYS_DEFAULT = _MINVSYS_2C_DEFAULT
_REG_CHG_CNFG_10 = 0x20
_VCHGIN_REG = 0x3E # CHGIN Voltage Regulation Threshold (mV)
_VCHGIN_REG_4025 = 0x00 # 4025 mV
_VCHGIN_REG_4200 = 0x02 # 4200 mV
_VCHGIN_REG_4375 = 0x04 # 4375 mV
_VCHGIN_REG_4550 = 0x06 # 4550 mV
_VCHGIN_REG_4725 = 0x08 # 4725 mV
_VCHGIN_REG_4900 = 0x0A # 4900 mV
_VCHGIN_REG_5425 = 0x0C # 5425 mV
_VCHGIN_REG_5950 = 0x0E # 5950 mV
_VCHGIN_REG_6475 = 0x10 # 6475 mV
_VCHGIN_REG_7000 = 0x12 # 7000 mV
_VCHGIN_REG_7525 = 0x14 # 7525 mV
_VCHGIN_REG_8050 = 0x16 # 8050 mV
_VCHGIN_REG_8575 = 0x18 # 8575 mV
_VCHGIN_REG_9100 = 0x1A # 9100 mV
_VCHGIN_REG_9625 = 0x1C # 9625 mV
_VCHGIN_REG_10150 = 0x1E # 10150 mV
_VCHGIN_REG_10675 = 0x20 # 10675 mV
_VCHGIN_REG_10950 = 0x22 # 10950 mV
_VCHGIN_REG_11550 = 0x24 # 11550 mV
_VCHGIN_REG_12150 = 0x26 # 12150 mV
_VCHGIN_REG_12750 = 0x28 # 12750 mV
_VCHGIN_REG_13350 = 0x2A # 13350 mV
_VCHGIN_REG_13950 = 0x2C # 13950 mV
_VCHGIN_REG_14550 = 0x2E # 14550 mV
_VCHGIN_REG_15150 = 0x30 # 15150 mV
_VCHGIN_REG_15750 = 0x32 # 15750 mV
_VCHGIN_REG_16350 = 0x34 # 16350 mV
_VCHGIN_REG_16950 = 0x36 # 16950 mV
_VCHGIN_REG_17550 = 0x38 # 17550 mV
_VCHGIN_REG_18150 = 0x3A # 18150 mV
_VCHGIN_REG_18750 = 0x3C # 18750 mV
_VCHGIN_REG_19050 = 0x3E # 19050 mV
_VCHGIN_REG_MIN = _VCHGIN_REG_4025
_VCHGIN_REG_MAX = _VCHGIN_REG_19050
_VCHGIN_REG_DEFAULT = _VCHGIN_REG_4725
_DISKIP = 0x01 # Charger Skip Mode Disable
_DISKIP_AUTO = 0x00 # Autoskip mode
_DISKIP_DISABLED = 0x01 # Disable skip mode
_DISKIP_DEFAULT = _DISKIP_AUTO
#
# Register / Content descriptions
#
_registerMap = [
[REG_CID, 'CID', ([_CID_REVISION, 'REV'], [_CID_VERSION, 'VER'], [0xFF, 'ID'])],
[_REG_SWRST, 'SWRST', ()],
[_REG_TOP_INT, 'TOP_INT', ([_TSHDN_I, 'TSHDN_I'], [_SYSOVLO_I, 'SYSOVLO_I'], [_SYSUVLO_I, 'SYSUVLO_I'])],
[_REG_TOP_INT_MASK, 'TOP_INT_MASK', ([_TSHDN_M, 'TSHDN_M'], [_SYSOVLO_M, 'SYSOVLO_M'], [_SYSUVLO_M, 'SYSUVLO_M'])],
[_REG_TOP_INT_OK, 'TOP_INT_OK', ([_TSHDN_OK, 'TSHDN_OK'], [_SYSOVLO_OK, 'SYSOVLO_OK'], [_SYSUVLO_OK, 'SYSUVLO_OK'])],
[_REG_CHG_INT, 'CHG_INT', ([_AICL_I, 'AICL_I'], [_CHGIN_I, 'CHGIN_I'], [_B2SOVRC_I, 'B2SOVRC_I'], [_CHG_I, '_CHG_I'],
[_BAT_I, 'BAT_I'], [_CHGINLIM_I, 'CHGINLIM_I'], [_DISQBAT_I, 'DISQBAT_I'], [_OTG_PLIM_I, 'OTG_PLIM_I'])],
[_REG_CHG_INT_MASK, 'CHG_INT_MASK', ([_AICL_M, 'AICL_M'], [_CHGIN_M, 'CHGIN_M'], [_B2SOVRC_M, 'B2SOVRC_M'],
[_CHG_M, 'CHG_M'], [_BAT_M, 'BAT_M'], [_CHGINLIM_M, 'CHGINLIM_M'], [_DISQBAT_M, 'DISQBAT_M'], [_OTG_PLIM_M, 'OTG_PLIM_M'])],
[_REG_CHG_INT_OK, 'CHG_INT_OK', ([_AICL_OK, 'AICL_OK'], [_CHGIN_OK, 'CHGIN_OK'], [_B2SOVRC_OK, 'B2SOVRC_OK'],
[_CHG_OK, 'CHG_OK'], [_BAT_OK, 'BAT_OK'], [_CHGINLIM_OK, 'CHGINLIM_OK'], [_DISQBAT_OK, 'DISQBAT_OK'],
[_OTG_PLIM_OK, 'OTG_PLIM_OK'])],
[_REG_CHG_DETAILS_00, 'CHG_DETAILS_00', ([_CHGIN_DTLS, 'CHGIN_DTLS'], [_OTG_DTLS, 'OTG_DTLS'], [_QB_DTLS, 'QB_DTLS'])],
[_REG_CHG_DETAILS_01, 'CHG_DETAILS_01', ([_TREG, 'TREG'], [_BAT_DTLS, 'BAT_DTLS'], [_CHG_DTLS, 'CHG_DTLS'])],
[_REG_CHG_DETAILS_02, 'CHG_DETAILS_02', ([_THM_DTLS, 'THM_DTLS'], [_APP_MODE_DTLS, 'APP_MODE_DTLS'],
[_FSW_DTLS, 'FSW_DTLS'], [_NUM_CELL_DTLS, 'NUM_CELL_DTLS'])],
[_REG_CHG_CNFG_00, 'CHG_CNFG_00', ([_COMM_MODE, 'COMM_MODE'], [_DISIBS, 'DISIBS'], [_STBY_EN, 'STBY_EN'],
[_WDTEN, 'WDTEN'], [_MODE, 'MODE'])],
[_REG_CHG_CNFG_01, 'CHG_CNFG_01', ([_PQEN, 'PQEN'], [_LPM, 'LPM'], [_CHG_RSTRT, 'CHG_RSTRT'],
[_STAT_EN, 'STAT_EN'], [_FCHGTIME, 'FCHGTIME'])],
[_REG_CHG_CNFG_02, 'CHG_CNFG_02', ([_CHGCC, 'CHGCC'],)],
[_REG_CHG_CNFG_03, 'CHG_CNFG_03', ([_SYS_TRACK_DIS, 'SYS_TRACK_DIS'], [_B2SOVRC_DTC, 'B2SOVRC_DTC'],
[_TO_TIME, 'TO_TIME'], [_TO_ITH, 'TO_ITH'])],
[_REG_CHG_CNFG_04, 'CHG_CNFG_04', ([_CHG_CV_PRM, 'CHG_CV_PRM'],)],
[_REG_CHG_CNFG_05, 'CHG_CNFG_05', ([_ITRICKLE, 'ITRICKLE'], [_B2SOVRC, 'B2SOVRC'])],
[_REG_CHG_CNFG_06, 'CHG_CNFG_06', ([_CHGPROT, 'CHGPROT'], [_WDTCLR, 'WDTCLR'])],
[_REG_CHG_CNFG_07, 'CHG_CNFG_07', ([_JEITA_EN, 'JEITA_EN'], [_REGTEMP, 'REGTEMP'], [_VCHGCV_COOL, 'VCHGCV_COOL'],
[_ICHGCC_COOL, 'ICHGCC_COOL'], [_FSHIP_MODE, 'FSHIP_MODE'])],
[_REG_CHG_CNFG_08, 'CHG_CNFG_08', ([_CHGIN_ILIM, 'CHGIN_ILIM'],)],
[_REG_CHG_CNFG_09, 'CHG_CNFG_09', ([_INLIM_CLK, 'INLIM_CLK'], [_OTG_ILIM, 'OTG_ILIM'], [_MINVSYS, 'MINVSYS'])],
[_REG_CHG_CNFG_10, 'CHG_CNFG_10', ([_VCHGIN_REG, 'VCHGIN_REG'], [_DISKIP, 'DISKIP'])],
]