MAX77658 Ultra-Low Power PMIC Mbed Driver

Committer:
Okan Sahin
Date:
Fri Aug 26 15:03:09 2022 +0300
Revision:
2:70a11f46a913
Parent:
0:00d2a8670533
fix interrupt_handler_list

use number of interrupts as a size of array.
initialize with NULL.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
metin.ozkan@analog.com 0:00d2a8670533 1 /*******************************************************************************
metin.ozkan@analog.com 0:00d2a8670533 2 * Copyright(C) Analog Devices Inc., All Rights Reserved.
metin.ozkan@analog.com 0:00d2a8670533 3 *
metin.ozkan@analog.com 0:00d2a8670533 4 * Permission is hereby granted, free of charge, to any person obtaining a
metin.ozkan@analog.com 0:00d2a8670533 5 * copy of this software and associated documentation files(the "Software"),
metin.ozkan@analog.com 0:00d2a8670533 6 * to deal in the Software without restriction, including without limitation
metin.ozkan@analog.com 0:00d2a8670533 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
metin.ozkan@analog.com 0:00d2a8670533 8 * and/or sell copies of the Software, and to permit persons to whom the
metin.ozkan@analog.com 0:00d2a8670533 9 * Software is furnished to do so, subject to the following conditions:
metin.ozkan@analog.com 0:00d2a8670533 10 *
metin.ozkan@analog.com 0:00d2a8670533 11 * The above copyright notice and this permission notice shall be included
metin.ozkan@analog.com 0:00d2a8670533 12 * in all copies or substantial portions of the Software.
metin.ozkan@analog.com 0:00d2a8670533 13 *
metin.ozkan@analog.com 0:00d2a8670533 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
metin.ozkan@analog.com 0:00d2a8670533 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
metin.ozkan@analog.com 0:00d2a8670533 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
metin.ozkan@analog.com 0:00d2a8670533 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
metin.ozkan@analog.com 0:00d2a8670533 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
metin.ozkan@analog.com 0:00d2a8670533 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
metin.ozkan@analog.com 0:00d2a8670533 20 * OTHER DEALINGS IN THE SOFTWARE.
metin.ozkan@analog.com 0:00d2a8670533 21 *
metin.ozkan@analog.com 0:00d2a8670533 22 * Except as contained in this notice, the name of Analog Devices Inc.
metin.ozkan@analog.com 0:00d2a8670533 23 * shall not be used except as stated in the Analog Devices Inc.
metin.ozkan@analog.com 0:00d2a8670533 24 * Branding Policy.
metin.ozkan@analog.com 0:00d2a8670533 25 *
metin.ozkan@analog.com 0:00d2a8670533 26 * The mere transfer of this software does not imply any licenses
metin.ozkan@analog.com 0:00d2a8670533 27 * of trade secrets, proprietary technology, copyrights, patents,
metin.ozkan@analog.com 0:00d2a8670533 28 * trademarks, maskwork rights, or any other form of intellectual
metin.ozkan@analog.com 0:00d2a8670533 29 * property whatsoever. Analog Devices Inc.retains all ownership rights.
metin.ozkan@analog.com 0:00d2a8670533 30 *******************************************************************************
metin.ozkan@analog.com 0:00d2a8670533 31 */
metin.ozkan@analog.com 0:00d2a8670533 32
metin.ozkan@analog.com 0:00d2a8670533 33 #ifndef _MAX77658_H_
metin.ozkan@analog.com 0:00d2a8670533 34 #define _MAX77658_H_
metin.ozkan@analog.com 0:00d2a8670533 35
metin.ozkan@analog.com 0:00d2a8670533 36 #include "mbed.h"
metin.ozkan@analog.com 0:00d2a8670533 37 #include "MAX77658_regs.h"
metin.ozkan@analog.com 0:00d2a8670533 38
metin.ozkan@analog.com 0:00d2a8670533 39 #define MAX77658_NO_ERROR 0
metin.ozkan@analog.com 0:00d2a8670533 40 #define MAX77658_VALUE_NULL -1
metin.ozkan@analog.com 0:00d2a8670533 41 #define MAX77658_WRITE_DATA_FAILED -2
metin.ozkan@analog.com 0:00d2a8670533 42 #define MAX77658_READ_DATA_FAILED -3
metin.ozkan@analog.com 0:00d2a8670533 43 #define MAX77658_INVALID_DATA -4
metin.ozkan@analog.com 0:00d2a8670533 44
metin.ozkan@analog.com 0:00d2a8670533 45 #define MAX77658_I2C_ADDRESS_PMIC_0 0x80
metin.ozkan@analog.com 0:00d2a8670533 46 #define MAX77658_I2C_ADDRESS_PMIC_1 0x90
metin.ozkan@analog.com 0:00d2a8670533 47 #define MAX77658_I2C_ADDRESS_FG 0x6C
metin.ozkan@analog.com 0:00d2a8670533 48
metin.ozkan@analog.com 0:00d2a8670533 49 /**
metin.ozkan@analog.com 0:00d2a8670533 50 * @brief MAX77658 Ultra-Low Power PMIC Featuring Single-Inductor, 3-Output Buck-Boost, 2-LDOs,
metin.ozkan@analog.com 0:00d2a8670533 51 * Power-Path Charger for Small Li+, Fuel Gauge M5.
metin.ozkan@analog.com 0:00d2a8670533 52 *
metin.ozkan@analog.com 0:00d2a8670533 53 * @details The MAX77658 provides highly-integrated battery charging and power supply solutions
metin.ozkan@analog.com 0:00d2a8670533 54 * for low-power applications where size and efficiency are critical.
metin.ozkan@analog.com 0:00d2a8670533 55 *
metin.ozkan@analog.com 0:00d2a8670533 56 * @code
metin.ozkan@analog.com 0:00d2a8670533 57 * @endcode
metin.ozkan@analog.com 0:00d2a8670533 58 */
metin.ozkan@analog.com 0:00d2a8670533 59
metin.ozkan@analog.com 0:00d2a8670533 60 class MAX77658
metin.ozkan@analog.com 0:00d2a8670533 61 {
metin.ozkan@analog.com 0:00d2a8670533 62 private:
metin.ozkan@analog.com 0:00d2a8670533 63 I2C *i2c_handler;
metin.ozkan@analog.com 0:00d2a8670533 64 InterruptIn *irq_pin; // interrupt pin
metin.ozkan@analog.com 0:00d2a8670533 65
metin.ozkan@analog.com 0:00d2a8670533 66 /**
metin.ozkan@analog.com 0:00d2a8670533 67 * @brief Register Addresses
metin.ozkan@analog.com 0:00d2a8670533 68 * @details Enumerated MAX77658 register addresses
metin.ozkan@analog.com 0:00d2a8670533 69 */
metin.ozkan@analog.com 0:00d2a8670533 70 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 71 /*Global*/
metin.ozkan@analog.com 0:00d2a8670533 72 INT_GLBL0 = 0x00, // Interrupt Status 0
metin.ozkan@analog.com 0:00d2a8670533 73 INT_GLBL1 = 0x04, // Interrupt Status 1
metin.ozkan@analog.com 0:00d2a8670533 74 ERCFLAG = 0x05, // Flags
metin.ozkan@analog.com 0:00d2a8670533 75 STAT_GLBL = 0x06, // Global Status
metin.ozkan@analog.com 0:00d2a8670533 76 INTM_GLBL1 = 0x08, // Interrupt Mask 1
metin.ozkan@analog.com 0:00d2a8670533 77 INTM_GLBL0 = 0x09, // Interrupt Mask 0
metin.ozkan@analog.com 0:00d2a8670533 78 CNFG_GLBL = 0x10, // Configuration Global
metin.ozkan@analog.com 0:00d2a8670533 79 CNFG_GPIO0 = 0x11, // GPIO0 Configuration
metin.ozkan@analog.com 0:00d2a8670533 80 CNFG_GPIO1 = 0x12, // GPIO1 Configuration
metin.ozkan@analog.com 0:00d2a8670533 81 CNFG_GPIO2 = 0x13, // GPIO2 Configuration
metin.ozkan@analog.com 0:00d2a8670533 82 CID = 0x14, // Chip Identification Code
metin.ozkan@analog.com 0:00d2a8670533 83 CNFG_WDT = 0x17, // Configuration WatchDog Timer
metin.ozkan@analog.com 0:00d2a8670533 84 /*Charger*/
metin.ozkan@analog.com 0:00d2a8670533 85 INT_CHG = 0x01, // Charger Interrupt Status
metin.ozkan@analog.com 0:00d2a8670533 86 STAT_CHG_A = 0x02, // Charger Status A
metin.ozkan@analog.com 0:00d2a8670533 87 STAT_CHG_B = 0x03, // Charger Status B
metin.ozkan@analog.com 0:00d2a8670533 88 INT_M_CHG = 0x07, // Charger Interrupt Mask
metin.ozkan@analog.com 0:00d2a8670533 89 CNFG_CHG_A = 0x20, // Charger Configuration A
metin.ozkan@analog.com 0:00d2a8670533 90 CNFG_CHG_B = 0x21, // Charger Configuration B
metin.ozkan@analog.com 0:00d2a8670533 91 CNFG_CHG_C = 0x22, // Charger Configuration C
metin.ozkan@analog.com 0:00d2a8670533 92 CNFG_CHG_D = 0x23, // Charger Configuration D
metin.ozkan@analog.com 0:00d2a8670533 93 CNFG_CHG_E = 0x24, // Charger Configuration E
metin.ozkan@analog.com 0:00d2a8670533 94 CNFG_CHG_F = 0x25, // Charger Configuration F
metin.ozkan@analog.com 0:00d2a8670533 95 CNFG_CHG_G = 0x26, // Charger Configuration G
metin.ozkan@analog.com 0:00d2a8670533 96 CNFG_CHG_H = 0x27, // Charger Configuration H
metin.ozkan@analog.com 0:00d2a8670533 97 CNFG_CHG_I = 0x28, // Charger Configuration I
metin.ozkan@analog.com 0:00d2a8670533 98 /*SBB*/
metin.ozkan@analog.com 0:00d2a8670533 99 CNFG_SBB_TOP = 0x38, // SIMO Buck-Boost Configuration
metin.ozkan@analog.com 0:00d2a8670533 100 CNFG_SBB0_A = 0x39, // SIMO Buck-Boost 0 Configuration A
metin.ozkan@analog.com 0:00d2a8670533 101 CNFG_SBB0_B = 0x3A, // SIMO Buck-Boost 0 Configuration B
metin.ozkan@analog.com 0:00d2a8670533 102 CNFG_SBB1_A = 0x3B, // SIMO Buck-Boost 1 Configuration A
metin.ozkan@analog.com 0:00d2a8670533 103 CNFG_SBB1_B = 0x3C, // SIMO Buck-Boost 1 Configuration B
metin.ozkan@analog.com 0:00d2a8670533 104 CNFG_SBB2_A = 0x3D, // SIMO Buck-Boost 2 Configuration A
metin.ozkan@analog.com 0:00d2a8670533 105 CNFG_SBB2_B = 0x3E, // SIMO Buck-Boost 2 Configuration B
metin.ozkan@analog.com 0:00d2a8670533 106 CNFG_DVS_SBB0_A = 0x3F, // SIMO Buck-Boost 0 DVS Configuration A
metin.ozkan@analog.com 0:00d2a8670533 107 /*LDO*/
metin.ozkan@analog.com 0:00d2a8670533 108 CNFG_LDO0_A = 0x48, // LDO0 Output Voltage
metin.ozkan@analog.com 0:00d2a8670533 109 CNFG_LDO0_B = 0x49, // LDO0 Output Voltage Configuration
metin.ozkan@analog.com 0:00d2a8670533 110 CNFG_LDO1_A = 0x4A, // LDO1 Output Voltage
metin.ozkan@analog.com 0:00d2a8670533 111 CNFG_LDO1_B = 0x4B, // LDO2 Output Voltage Configuration
metin.ozkan@analog.com 0:00d2a8670533 112 /*FuelGauge*/
metin.ozkan@analog.com 0:00d2a8670533 113 Status = 0x00, // Interrupt status register for the FG block
metin.ozkan@analog.com 0:00d2a8670533 114 VAlrtTh = 0x01, // Voltage AIrt
metin.ozkan@analog.com 0:00d2a8670533 115 TAlrtTh = 0x02, // Temperature AIrt
metin.ozkan@analog.com 0:00d2a8670533 116 SAlrtTh = 0x03, // Soc AIrt
metin.ozkan@analog.com 0:00d2a8670533 117 FullSocThr = 0x13, // Full Soc Thr
metin.ozkan@analog.com 0:00d2a8670533 118 DesignCap = 0x18, // Design Cap
metin.ozkan@analog.com 0:00d2a8670533 119 Config = 0x1D, // Configuration
metin.ozkan@analog.com 0:00d2a8670533 120 IChgTerm = 0x1E, // IChg Term
metin.ozkan@analog.com 0:00d2a8670533 121 DevName = 0x21, // Dev Name
metin.ozkan@analog.com 0:00d2a8670533 122 FilterCfg = 0x29, // Filter Configuration
metin.ozkan@analog.com 0:00d2a8670533 123 IAvgEmpty = 0x36, // IAvgEmpty
metin.ozkan@analog.com 0:00d2a8670533 124 VEmpty = 0x3A, // VEmpty
metin.ozkan@analog.com 0:00d2a8670533 125 Config2 = 0xBB, // Configuration 2
metin.ozkan@analog.com 0:00d2a8670533 126 Temp = 0x08, // Temp
metin.ozkan@analog.com 0:00d2a8670533 127 Vcell = 0x09, // Vcell
metin.ozkan@analog.com 0:00d2a8670533 128 Current = 0x0A, // Current
metin.ozkan@analog.com 0:00d2a8670533 129 AvgCurrent = 0x0B, // AvgCurrent
metin.ozkan@analog.com 0:00d2a8670533 130 AvgTA = 0x16, // AvgTA
metin.ozkan@analog.com 0:00d2a8670533 131 AvgVCell = 0x19, // AvgVCell
metin.ozkan@analog.com 0:00d2a8670533 132 MaxMinTemp = 0x1A, // MaxMinTemp
metin.ozkan@analog.com 0:00d2a8670533 133 MaxMinVolt = 0x1B, // MaxMinVolt
metin.ozkan@analog.com 0:00d2a8670533 134 MaxMinCurr = 0x1C, // MaxMinCurr
metin.ozkan@analog.com 0:00d2a8670533 135 AIN0 = 0x27, // AIN0
metin.ozkan@analog.com 0:00d2a8670533 136 Timer = 0x3E, // Timer
metin.ozkan@analog.com 0:00d2a8670533 137 ShdnTimer = 0x3F, // ShdnTimer
metin.ozkan@analog.com 0:00d2a8670533 138 TimerH = 0xBE, // TimerH
metin.ozkan@analog.com 0:00d2a8670533 139 RepCap = 0x05, // RepCap
metin.ozkan@analog.com 0:00d2a8670533 140 RepSOC = 0x06, // RepSOC
metin.ozkan@analog.com 0:00d2a8670533 141 AvSOC = 0x0E, // AvSOC
metin.ozkan@analog.com 0:00d2a8670533 142 FullCapRep = 0x10, // FullCapRep
metin.ozkan@analog.com 0:00d2a8670533 143 TTE = 0x11, // TTE
metin.ozkan@analog.com 0:00d2a8670533 144 RCell = 0x14, // RCell
metin.ozkan@analog.com 0:00d2a8670533 145 Cycles = 0x17, // Cycles
metin.ozkan@analog.com 0:00d2a8670533 146 AvCap = 0x1F, // AvCap
metin.ozkan@analog.com 0:00d2a8670533 147 TTF = 0x20 // TTF
metin.ozkan@analog.com 0:00d2a8670533 148 } reg_t;
metin.ozkan@analog.com 0:00d2a8670533 149
metin.ozkan@analog.com 0:00d2a8670533 150 void interrupt_handler();
metin.ozkan@analog.com 0:00d2a8670533 151
metin.ozkan@analog.com 0:00d2a8670533 152 void (MAX77658::*funcptr)(void);
metin.ozkan@analog.com 0:00d2a8670533 153
metin.ozkan@analog.com 0:00d2a8670533 154 void post_interrupt_work();
metin.ozkan@analog.com 0:00d2a8670533 155
metin.ozkan@analog.com 0:00d2a8670533 156 Thread *post_intr_work_thread;
metin.ozkan@analog.com 0:00d2a8670533 157
metin.ozkan@analog.com 0:00d2a8670533 158 struct handler {
metin.ozkan@analog.com 0:00d2a8670533 159 void (*func)(void *);
metin.ozkan@analog.com 0:00d2a8670533 160 void *cb;
metin.ozkan@analog.com 0:00d2a8670533 161 };
metin.ozkan@analog.com 0:00d2a8670533 162
Okan Sahin 2:70a11f46a913 163 handler *interrupt_handler_list;
metin.ozkan@analog.com 0:00d2a8670533 164
metin.ozkan@analog.com 0:00d2a8670533 165 public:
metin.ozkan@analog.com 0:00d2a8670533 166 /**
metin.ozkan@analog.com 0:00d2a8670533 167 * @brief MAX77658 constructor.
metin.ozkan@analog.com 0:00d2a8670533 168 */
metin.ozkan@analog.com 0:00d2a8670533 169 MAX77658(I2C *i2c, PinName IRQPin = NC);
metin.ozkan@analog.com 0:00d2a8670533 170
metin.ozkan@analog.com 0:00d2a8670533 171 /**
metin.ozkan@analog.com 0:00d2a8670533 172 * @brief MAX77658 destructor.
metin.ozkan@analog.com 0:00d2a8670533 173 */
metin.ozkan@analog.com 0:00d2a8670533 174 ~MAX77658();
metin.ozkan@analog.com 0:00d2a8670533 175
metin.ozkan@analog.com 0:00d2a8670533 176 /**
metin.ozkan@analog.com 0:00d2a8670533 177 * @brief Function pointer type to interrupt handler function
metin.ozkan@analog.com 0:00d2a8670533 178 */
metin.ozkan@analog.com 0:00d2a8670533 179 typedef void (*interrupt_handler_function)(void *);
metin.ozkan@analog.com 0:00d2a8670533 180
metin.ozkan@analog.com 0:00d2a8670533 181 /**
metin.ozkan@analog.com 0:00d2a8670533 182 * @brief Read from a register.
metin.ozkan@analog.com 0:00d2a8670533 183 *
metin.ozkan@analog.com 0:00d2a8670533 184 * @param[in] reg Address of a register to be written.
metin.ozkan@analog.com 0:00d2a8670533 185 * @param[out] value Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 186 *
metin.ozkan@analog.com 0:00d2a8670533 187 * @returns 0 on success, negative error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 188 */
metin.ozkan@analog.com 0:00d2a8670533 189 int read_register(uint8_t reg, uint8_t *value);
metin.ozkan@analog.com 0:00d2a8670533 190
metin.ozkan@analog.com 0:00d2a8670533 191 /**
metin.ozkan@analog.com 0:00d2a8670533 192 * @brief Write to a register.
metin.ozkan@analog.com 0:00d2a8670533 193 *
metin.ozkan@analog.com 0:00d2a8670533 194 * @param[in] reg Address of a register to be written.
metin.ozkan@analog.com 0:00d2a8670533 195 * @param[out] value Pointer of value to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 196 *
metin.ozkan@analog.com 0:00d2a8670533 197 * @returns 0 on success, negative error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 198 */
metin.ozkan@analog.com 0:00d2a8670533 199 int write_register(uint8_t reg, const uint8_t *value);
metin.ozkan@analog.com 0:00d2a8670533 200
metin.ozkan@analog.com 0:00d2a8670533 201 /**
metin.ozkan@analog.com 0:00d2a8670533 202 * @brief Read from a fuel-gauge register.
metin.ozkan@analog.com 0:00d2a8670533 203 *
metin.ozkan@analog.com 0:00d2a8670533 204 * @param[in] reg Address of a fuel-gauge register to be written.
metin.ozkan@analog.com 0:00d2a8670533 205 * @param[out] value Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 206 *
metin.ozkan@analog.com 0:00d2a8670533 207 * @returns 0 on success, negative error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 208 */
metin.ozkan@analog.com 0:00d2a8670533 209 int read_fg_register(uint8_t reg, uint8_t *value);
metin.ozkan@analog.com 0:00d2a8670533 210
metin.ozkan@analog.com 0:00d2a8670533 211 /**
metin.ozkan@analog.com 0:00d2a8670533 212 * @brief Write to a fuel-gauge register.
metin.ozkan@analog.com 0:00d2a8670533 213 *
metin.ozkan@analog.com 0:00d2a8670533 214 * @param[in] reg Address of a fuel-gauge register to be written.
metin.ozkan@analog.com 0:00d2a8670533 215 * @param[out] value Pointer of value to be written to fuel-gauge register.
metin.ozkan@analog.com 0:00d2a8670533 216 *
metin.ozkan@analog.com 0:00d2a8670533 217 * @returns 0 on success, negative error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 218 */
metin.ozkan@analog.com 0:00d2a8670533 219 int write_fg_register(uint8_t reg, const uint8_t *value);
metin.ozkan@analog.com 0:00d2a8670533 220
metin.ozkan@analog.com 0:00d2a8670533 221 /**
metin.ozkan@analog.com 0:00d2a8670533 222 * @brief Register Configuration.
metin.ozkan@analog.com 0:00d2a8670533 223 * All Interrupt Flags combined from INT_GLBL0, INT_GLBL1 and INT_CHG.
metin.ozkan@analog.com 0:00d2a8670533 224 *
metin.ozkan@analog.com 0:00d2a8670533 225 * @details
metin.ozkan@analog.com 0:00d2a8670533 226 * - Register : INT_GLBL0 (0x00), INT_GLBL1(0x04) and INT_CHG (0x01)
metin.ozkan@analog.com 0:00d2a8670533 227 * - Bit Fields :
metin.ozkan@analog.com 0:00d2a8670533 228 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 229 * - Description : Enumerated interrupts.
metin.ozkan@analog.com 0:00d2a8670533 230 */
metin.ozkan@analog.com 0:00d2a8670533 231 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 232 INT_GLBL0_GPI0_F,
metin.ozkan@analog.com 0:00d2a8670533 233 INT_GLBL0_GPI0_R,
metin.ozkan@analog.com 0:00d2a8670533 234 INT_GLBL0_NEN_F,
metin.ozkan@analog.com 0:00d2a8670533 235 INT_GLBL0_NEN_R,
metin.ozkan@analog.com 0:00d2a8670533 236 INT_GLBL0_TJAL1_R,
metin.ozkan@analog.com 0:00d2a8670533 237 INT_GLBL0_TJAL2_R,
metin.ozkan@analog.com 0:00d2a8670533 238 INT_GLBL0_DOD1_R,
metin.ozkan@analog.com 0:00d2a8670533 239 INT_GLBL0_DOD0_R,
metin.ozkan@analog.com 0:00d2a8670533 240 INT_GLBL1_GPI1_F,
metin.ozkan@analog.com 0:00d2a8670533 241 INT_GLBL1_GPI1_R,
metin.ozkan@analog.com 0:00d2a8670533 242 INT_GLBL1_SBB0_F,
metin.ozkan@analog.com 0:00d2a8670533 243 INT_GLBL1_SBB1_F,
metin.ozkan@analog.com 0:00d2a8670533 244 INT_GLBL1_SBB2_F,
metin.ozkan@analog.com 0:00d2a8670533 245 INT_GLBL1_LDO0_F,
metin.ozkan@analog.com 0:00d2a8670533 246 INT_GLBL1_LDO1_F,
metin.ozkan@analog.com 0:00d2a8670533 247 INT_GLBL1_RSVD,
metin.ozkan@analog.com 0:00d2a8670533 248 INT_CHG_THM_I,
metin.ozkan@analog.com 0:00d2a8670533 249 INT_CHG_CHG_I,
metin.ozkan@analog.com 0:00d2a8670533 250 INT_CHG_CHGIN_I,
metin.ozkan@analog.com 0:00d2a8670533 251 INT_CHG_TJ_REG_I,
metin.ozkan@analog.com 0:00d2a8670533 252 INT_CHG_CHGIN_CTRL_I,
metin.ozkan@analog.com 0:00d2a8670533 253 INT_CHG_SYS_CTRL_I,
metin.ozkan@analog.com 0:00d2a8670533 254 INT_CHG_SYS_CNFG_I,
metin.ozkan@analog.com 0:00d2a8670533 255 INT_CHG_RSVD,
metin.ozkan@analog.com 0:00d2a8670533 256 INT_CHG_END
metin.ozkan@analog.com 0:00d2a8670533 257 } reg_bit_int_glbl_t;
metin.ozkan@analog.com 0:00d2a8670533 258
metin.ozkan@analog.com 0:00d2a8670533 259 /**
metin.ozkan@analog.com 0:00d2a8670533 260 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 261 *
metin.ozkan@analog.com 0:00d2a8670533 262 * @details
metin.ozkan@analog.com 0:00d2a8670533 263 * - Register : ERCFLAG (0x05)
metin.ozkan@analog.com 0:00d2a8670533 264 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 265 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 266 * - Description : Event Recorder Flags.
metin.ozkan@analog.com 0:00d2a8670533 267 */
metin.ozkan@analog.com 0:00d2a8670533 268 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 269 ERCFLAG_TOVLD,
metin.ozkan@analog.com 0:00d2a8670533 270 ERCFLAG_SYSOVLO,
metin.ozkan@analog.com 0:00d2a8670533 271 ERCFLAG_SYSUVLO,
metin.ozkan@analog.com 0:00d2a8670533 272 ERCFLAG_MRST_F,
metin.ozkan@analog.com 0:00d2a8670533 273 ERCFLAG_SFT_OFF_F,
metin.ozkan@analog.com 0:00d2a8670533 274 ERCFLAG_SFT_CRST_F,
metin.ozkan@analog.com 0:00d2a8670533 275 ERCFLAG_WDT_OFF,
metin.ozkan@analog.com 0:00d2a8670533 276 ERCFLAG_WDT_RST
metin.ozkan@analog.com 0:00d2a8670533 277 }reg_bit_ercflag_t;
metin.ozkan@analog.com 0:00d2a8670533 278
metin.ozkan@analog.com 0:00d2a8670533 279 /**
metin.ozkan@analog.com 0:00d2a8670533 280 * @brief Get bit field of ERCFLAG (0x05) register.
metin.ozkan@analog.com 0:00d2a8670533 281 *
metin.ozkan@analog.com 0:00d2a8670533 282 * @param[in] bit_field ERCFLAG register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 283 * @param[out] flag Pointer to save result of ercglag bit states.
metin.ozkan@analog.com 0:00d2a8670533 284 * For individual bit
metin.ozkan@analog.com 0:00d2a8670533 285 * 0x0: ERCFLAG has not occurred,
metin.ozkan@analog.com 0:00d2a8670533 286 * 0x1: ERCFLAG has occurred.
metin.ozkan@analog.com 0:00d2a8670533 287 *
metin.ozkan@analog.com 0:00d2a8670533 288 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 289 */
metin.ozkan@analog.com 0:00d2a8670533 290 int get_ercflag(reg_bit_ercflag_t bit_field, uint8_t *flag);
metin.ozkan@analog.com 0:00d2a8670533 291
metin.ozkan@analog.com 0:00d2a8670533 292 /**
metin.ozkan@analog.com 0:00d2a8670533 293 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 294 *
metin.ozkan@analog.com 0:00d2a8670533 295 * @details
metin.ozkan@analog.com 0:00d2a8670533 296 * - Register : STAT_GLBL (0x06)
metin.ozkan@analog.com 0:00d2a8670533 297 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 298 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 299 * - Description : Event Recorder Flags.
metin.ozkan@analog.com 0:00d2a8670533 300 */
metin.ozkan@analog.com 0:00d2a8670533 301 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 302 STAT_GLBL_STAT_IRQ,
metin.ozkan@analog.com 0:00d2a8670533 303 STAT_GLBL_STAT_EN,
metin.ozkan@analog.com 0:00d2a8670533 304 STAT_GLBL_TJAL1_S,
metin.ozkan@analog.com 0:00d2a8670533 305 STAT_GLBL_TJAL2_S,
metin.ozkan@analog.com 0:00d2a8670533 306 STAT_GLBL_DOD1_S,
metin.ozkan@analog.com 0:00d2a8670533 307 STAT_GLBL_DOD0_S,
metin.ozkan@analog.com 0:00d2a8670533 308 STAT_GLBL_BOK,
metin.ozkan@analog.com 0:00d2a8670533 309 STAT_GLBL_DIDM
metin.ozkan@analog.com 0:00d2a8670533 310 }reg_bit_stat_glbl_t;
metin.ozkan@analog.com 0:00d2a8670533 311
metin.ozkan@analog.com 0:00d2a8670533 312 /**
metin.ozkan@analog.com 0:00d2a8670533 313 * @brief Get bit field of STAT_GLBL (0x06) register.
metin.ozkan@analog.com 0:00d2a8670533 314 *
metin.ozkan@analog.com 0:00d2a8670533 315 * @param[in] bit_field STAT_GLBL register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 316 * @param[out] status Pointer to save result of Status Global bit state.
metin.ozkan@analog.com 0:00d2a8670533 317 *
metin.ozkan@analog.com 0:00d2a8670533 318 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 319 */
metin.ozkan@analog.com 0:00d2a8670533 320 int get_stat_glbl(reg_bit_stat_glbl_t bit_field, uint8_t *status);
metin.ozkan@analog.com 0:00d2a8670533 321
metin.ozkan@analog.com 0:00d2a8670533 322 /**
metin.ozkan@analog.com 0:00d2a8670533 323 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 324 *
metin.ozkan@analog.com 0:00d2a8670533 325 * @details
metin.ozkan@analog.com 0:00d2a8670533 326 * - Register : INT_M_CHG (0x07), INTM_GLBL0 (0x08) and INTM_GLBL1 (0x09)
metin.ozkan@analog.com 0:00d2a8670533 327 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 328 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 329 * - Description : All interrupt mask bits.
metin.ozkan@analog.com 0:00d2a8670533 330 */
metin.ozkan@analog.com 0:00d2a8670533 331 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 332 INT_M_CHG_THM_M,
metin.ozkan@analog.com 0:00d2a8670533 333 INT_M_CHG_CHG_M,
metin.ozkan@analog.com 0:00d2a8670533 334 INT_M_CHG_CHGIN_M,
metin.ozkan@analog.com 0:00d2a8670533 335 INT_M_CHG_TJ_REG_M,
metin.ozkan@analog.com 0:00d2a8670533 336 INT_M_CHG_CHGIN_CTRL_M,
metin.ozkan@analog.com 0:00d2a8670533 337 INT_M_CHG_SYS_CTRL_M,
metin.ozkan@analog.com 0:00d2a8670533 338 INT_M_CHG_SYS_CNFG_M,
metin.ozkan@analog.com 0:00d2a8670533 339 INT_M_CHG_DIS_AICL,
metin.ozkan@analog.com 0:00d2a8670533 340 INTM_GLBL0_GPI0_FM,
metin.ozkan@analog.com 0:00d2a8670533 341 INTM_GLBL0_GPI0_RM,
metin.ozkan@analog.com 0:00d2a8670533 342 INTM_GLBL0_nEN_FM,
metin.ozkan@analog.com 0:00d2a8670533 343 INTM_GLBL0_nEN_RM,
metin.ozkan@analog.com 0:00d2a8670533 344 INTM_GLBL0_TJAL1_RM,
metin.ozkan@analog.com 0:00d2a8670533 345 INTM_GLBL0_TJAL2_RM,
metin.ozkan@analog.com 0:00d2a8670533 346 INTM_GLBL0_DOD1_RM,
metin.ozkan@analog.com 0:00d2a8670533 347 INTM_GLBL0_DOD0_RM,
metin.ozkan@analog.com 0:00d2a8670533 348 INTM_GLBL1_GPI1_FM,
metin.ozkan@analog.com 0:00d2a8670533 349 INTM_GLBL1_GPI1_RM,
metin.ozkan@analog.com 0:00d2a8670533 350 INTM_GLBL1_SBB0_FM,
metin.ozkan@analog.com 0:00d2a8670533 351 INTM_GLBL1_SBB1_FM,
metin.ozkan@analog.com 0:00d2a8670533 352 INTM_GLBL1_SBB2_FM,
metin.ozkan@analog.com 0:00d2a8670533 353 INTM_GLBL1_LDO0_M,
metin.ozkan@analog.com 0:00d2a8670533 354 INTM_GLBL1_LDO1_M,
metin.ozkan@analog.com 0:00d2a8670533 355 INTM_GLBL1_RSVD,
metin.ozkan@analog.com 0:00d2a8670533 356 INTM_NUM_OF_BIT
metin.ozkan@analog.com 0:00d2a8670533 357 }reg_bit_int_mask_t;
metin.ozkan@analog.com 0:00d2a8670533 358
metin.ozkan@analog.com 0:00d2a8670533 359 /**
metin.ozkan@analog.com 0:00d2a8670533 360 * @brief Set bit field of INT_M_CHG (0x07), INTM_GLBL0 (0x08) or INTM_GLBL1 (0x09) register.
metin.ozkan@analog.com 0:00d2a8670533 361 *
metin.ozkan@analog.com 0:00d2a8670533 362 * @param[in] bit_field Register bit field to be set.
metin.ozkan@analog.com 0:00d2a8670533 363 * @param[out] maskBit 0x0: Interrupt is unmasked,
metin.ozkan@analog.com 0:00d2a8670533 364 * 0x1: Interrupt is masked.
metin.ozkan@analog.com 0:00d2a8670533 365 *
metin.ozkan@analog.com 0:00d2a8670533 366 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 367 */
metin.ozkan@analog.com 0:00d2a8670533 368 int set_interrupt_mask(reg_bit_int_mask_t bit_field, uint8_t maskBit);
metin.ozkan@analog.com 0:00d2a8670533 369
metin.ozkan@analog.com 0:00d2a8670533 370 /**
metin.ozkan@analog.com 0:00d2a8670533 371 * @brief Get bit field of INT_M_CHG (0x07), INTM_GLBL0 (0x08) or INTM_GLBL1 (0x09) register.
metin.ozkan@analog.com 0:00d2a8670533 372 *
metin.ozkan@analog.com 0:00d2a8670533 373 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 374 * @param[out] maskBit 0x0: Interrupt is unmasked,
metin.ozkan@analog.com 0:00d2a8670533 375 * 0x1: Interrupt is masked.
metin.ozkan@analog.com 0:00d2a8670533 376 *
metin.ozkan@analog.com 0:00d2a8670533 377 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 378 */
metin.ozkan@analog.com 0:00d2a8670533 379 int get_interrupt_mask(reg_bit_int_mask_t bit_field, uint8_t *maskBit);
metin.ozkan@analog.com 0:00d2a8670533 380
metin.ozkan@analog.com 0:00d2a8670533 381 /**
metin.ozkan@analog.com 0:00d2a8670533 382 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 383 *
metin.ozkan@analog.com 0:00d2a8670533 384 * @details
metin.ozkan@analog.com 0:00d2a8670533 385 * - Register : CNFG_GLBL (0x10)
metin.ozkan@analog.com 0:00d2a8670533 386 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 387 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 388 * - Description : Event Recorder Flags.
metin.ozkan@analog.com 0:00d2a8670533 389 */
metin.ozkan@analog.com 0:00d2a8670533 390 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 391 CNFG_GLBL_SFT_CTRL,
metin.ozkan@analog.com 0:00d2a8670533 392 CNFG_GLBL_DBEN_nEN,
metin.ozkan@analog.com 0:00d2a8670533 393 CNFG_GLBL_nEN_MODE,
metin.ozkan@analog.com 0:00d2a8670533 394 CNFG_GLBL_SBIA_LPM,
metin.ozkan@analog.com 0:00d2a8670533 395 CNFG_GLBL_T_MRST,
metin.ozkan@analog.com 0:00d2a8670533 396 CNFG_GLBL_PU_DIS
metin.ozkan@analog.com 0:00d2a8670533 397 }reg_bit_cnfg_glbl_t;
metin.ozkan@analog.com 0:00d2a8670533 398
metin.ozkan@analog.com 0:00d2a8670533 399 /**
metin.ozkan@analog.com 0:00d2a8670533 400 * @brief Set CNFG_GLBL (0x10) register.
metin.ozkan@analog.com 0:00d2a8670533 401 *
metin.ozkan@analog.com 0:00d2a8670533 402 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 403 * @param[in] config Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 404 *
metin.ozkan@analog.com 0:00d2a8670533 405 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 406 */
metin.ozkan@analog.com 0:00d2a8670533 407 int set_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 408
metin.ozkan@analog.com 0:00d2a8670533 409 /**
metin.ozkan@analog.com 0:00d2a8670533 410 * @brief Get CNFG_GLBL (0x10) register.
metin.ozkan@analog.com 0:00d2a8670533 411 *
metin.ozkan@analog.com 0:00d2a8670533 412 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 413 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 414 *
metin.ozkan@analog.com 0:00d2a8670533 415 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 416 */
metin.ozkan@analog.com 0:00d2a8670533 417 int get_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 418
metin.ozkan@analog.com 0:00d2a8670533 419 /**
metin.ozkan@analog.com 0:00d2a8670533 420 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 421 *
metin.ozkan@analog.com 0:00d2a8670533 422 * @details
metin.ozkan@analog.com 0:00d2a8670533 423 * - Register : CNFG_GPIO0 (0x11), CNFG_GPIO1 (0x12) or CNFG_GPIO2 (0x13)
metin.ozkan@analog.com 0:00d2a8670533 424 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 425 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 426 * - Description : Event Recorder Flags.
metin.ozkan@analog.com 0:00d2a8670533 427 */
metin.ozkan@analog.com 0:00d2a8670533 428 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 429 CNFG_GPIO_DIR,
metin.ozkan@analog.com 0:00d2a8670533 430 CNFG_GPIO_DI,
metin.ozkan@analog.com 0:00d2a8670533 431 CNFG_GPIO_DRV,
metin.ozkan@analog.com 0:00d2a8670533 432 CNFG_GPIO_DO,
metin.ozkan@analog.com 0:00d2a8670533 433 CNFG_GPIO_DBEN_GPI,
metin.ozkan@analog.com 0:00d2a8670533 434 CNFG_GPIO_ALT_GPIO,
metin.ozkan@analog.com 0:00d2a8670533 435 CNFG_GPIO_RSVD
metin.ozkan@analog.com 0:00d2a8670533 436 }reg_bit_cnfg_gpio_t;
metin.ozkan@analog.com 0:00d2a8670533 437
metin.ozkan@analog.com 0:00d2a8670533 438 /**
metin.ozkan@analog.com 0:00d2a8670533 439 * @brief Set either CNFG_GPIO0 (0x11), CNFG_GPIO1 (0x12) or CNFG_GPIO2 (0x13).
metin.ozkan@analog.com 0:00d2a8670533 440 *
metin.ozkan@analog.com 0:00d2a8670533 441 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 442 * @param[in] channel Channel number: 0, 1 or 2
metin.ozkan@analog.com 0:00d2a8670533 443 * @param[in] config Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 444 *
metin.ozkan@analog.com 0:00d2a8670533 445 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 446 */
metin.ozkan@analog.com 0:00d2a8670533 447 int set_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 448
metin.ozkan@analog.com 0:00d2a8670533 449 /**
metin.ozkan@analog.com 0:00d2a8670533 450 * @brief Get either CNFG_GPIO0 (0x11), CNFG_GPIO1 (0x12) or CNFG_GPIO2 (0x13).
metin.ozkan@analog.com 0:00d2a8670533 451 *
metin.ozkan@analog.com 0:00d2a8670533 452 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 453 * @param[in] channel Channel number: 0, 1 or 2
metin.ozkan@analog.com 0:00d2a8670533 454 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 455 *
metin.ozkan@analog.com 0:00d2a8670533 456 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 457 */
metin.ozkan@analog.com 0:00d2a8670533 458 int get_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 459
metin.ozkan@analog.com 0:00d2a8670533 460 /**
metin.ozkan@analog.com 0:00d2a8670533 461 * @brief Get bit field of CID (0x14) register.
metin.ozkan@analog.com 0:00d2a8670533 462 *
metin.ozkan@analog.com 0:00d2a8670533 463 * @return CID on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 464 */
metin.ozkan@analog.com 0:00d2a8670533 465 int get_cid(void);
metin.ozkan@analog.com 0:00d2a8670533 466
metin.ozkan@analog.com 0:00d2a8670533 467 /**
metin.ozkan@analog.com 0:00d2a8670533 468 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 469 *
metin.ozkan@analog.com 0:00d2a8670533 470 * @details
metin.ozkan@analog.com 0:00d2a8670533 471 * - Register : CNFG_WDT (0x17)
metin.ozkan@analog.com 0:00d2a8670533 472 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 473 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 474 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 475 */
metin.ozkan@analog.com 0:00d2a8670533 476 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 477 CNFG_WDT_WDT_LOCK,
metin.ozkan@analog.com 0:00d2a8670533 478 CNFG_WDT_WDT_EN,
metin.ozkan@analog.com 0:00d2a8670533 479 CNFG_WDT_WDT_CLR,
metin.ozkan@analog.com 0:00d2a8670533 480 CNFG_WDT_WDT_MODE,
metin.ozkan@analog.com 0:00d2a8670533 481 CNFG_WDT_WDT_PER,
metin.ozkan@analog.com 0:00d2a8670533 482 CNFG_WDT_RSVD
metin.ozkan@analog.com 0:00d2a8670533 483 }reg_bit_cnfg_wdt_t;
metin.ozkan@analog.com 0:00d2a8670533 484
metin.ozkan@analog.com 0:00d2a8670533 485 /**
metin.ozkan@analog.com 0:00d2a8670533 486 * @brief Set CNFG_WDT (0x17) register.
metin.ozkan@analog.com 0:00d2a8670533 487 *
metin.ozkan@analog.com 0:00d2a8670533 488 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 489 * @param[in] config Field value to be written.
metin.ozkan@analog.com 0:00d2a8670533 490 *
metin.ozkan@analog.com 0:00d2a8670533 491 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 492 */
metin.ozkan@analog.com 0:00d2a8670533 493 int set_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 494
metin.ozkan@analog.com 0:00d2a8670533 495 /**
metin.ozkan@analog.com 0:00d2a8670533 496 * @brief Get CNFG_WDT (0x17) register.
metin.ozkan@analog.com 0:00d2a8670533 497 *
metin.ozkan@analog.com 0:00d2a8670533 498 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 499 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 500 *
metin.ozkan@analog.com 0:00d2a8670533 501 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 502 */
metin.ozkan@analog.com 0:00d2a8670533 503 int get_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 504
metin.ozkan@analog.com 0:00d2a8670533 505 /**
metin.ozkan@analog.com 0:00d2a8670533 506 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 507 *
metin.ozkan@analog.com 0:00d2a8670533 508 * @details
metin.ozkan@analog.com 0:00d2a8670533 509 * - Register : STAT_CHG_A (0x02)
metin.ozkan@analog.com 0:00d2a8670533 510 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 511 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 512 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 513 */
metin.ozkan@analog.com 0:00d2a8670533 514 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 515 STAT_CHG_A_THM_DTLS,
metin.ozkan@analog.com 0:00d2a8670533 516 STAT_CHG_A_TJ_REG_STAT,
metin.ozkan@analog.com 0:00d2a8670533 517 STAT_CHG_A_VSYS_MIN_STAT,
metin.ozkan@analog.com 0:00d2a8670533 518 STAT_CHG_A_ICHGIN_LIM_STAT,
metin.ozkan@analog.com 0:00d2a8670533 519 STAT_CHG_A_VCHGIN_MIN_STAT,
metin.ozkan@analog.com 0:00d2a8670533 520 STAT_CHG_A_RSVD
metin.ozkan@analog.com 0:00d2a8670533 521 }reg_bit_stat_chg_a_t;
metin.ozkan@analog.com 0:00d2a8670533 522
metin.ozkan@analog.com 0:00d2a8670533 523 /**
metin.ozkan@analog.com 0:00d2a8670533 524 * @brief Get STAT_CHG_A (0x02) register.
metin.ozkan@analog.com 0:00d2a8670533 525 *
metin.ozkan@analog.com 0:00d2a8670533 526 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 527 * @param[out] status Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 528 * For individual bit,
metin.ozkan@analog.com 0:00d2a8670533 529 * 0x0 = It is not engaged,
metin.ozkan@analog.com 0:00d2a8670533 530 * 0x1 = It is engaged.
metin.ozkan@analog.com 0:00d2a8670533 531 *
metin.ozkan@analog.com 0:00d2a8670533 532 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 533 */
metin.ozkan@analog.com 0:00d2a8670533 534 int get_stat_chg_a(reg_bit_stat_chg_a_t bit_field, uint8_t *status);
metin.ozkan@analog.com 0:00d2a8670533 535
metin.ozkan@analog.com 0:00d2a8670533 536 /**
metin.ozkan@analog.com 0:00d2a8670533 537 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 538 *
metin.ozkan@analog.com 0:00d2a8670533 539 * @details
metin.ozkan@analog.com 0:00d2a8670533 540 * - Register : STAT_CHG_A (0x02)
metin.ozkan@analog.com 0:00d2a8670533 541 * - Bit Fields : [2:0]
metin.ozkan@analog.com 0:00d2a8670533 542 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 543 * - Description : Battery Temperature Details.
metin.ozkan@analog.com 0:00d2a8670533 544 */
metin.ozkan@analog.com 0:00d2a8670533 545 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 546 THM_DTLS_THERMISTOR_DISABLED,
metin.ozkan@analog.com 0:00d2a8670533 547 THM_DTLS_BATTERY_COLD,
metin.ozkan@analog.com 0:00d2a8670533 548 THM_DTLS_BATTERY_COOL,
metin.ozkan@analog.com 0:00d2a8670533 549 THM_DTLS_BATTERY_WARM,
metin.ozkan@analog.com 0:00d2a8670533 550 THM_DTLS_BATTERY_HOT,
metin.ozkan@analog.com 0:00d2a8670533 551 THM_DTLS_BATTERY_NORMAL,
metin.ozkan@analog.com 0:00d2a8670533 552 THM_DTLS_RESERVED_0x06,
metin.ozkan@analog.com 0:00d2a8670533 553 THM_DTLS_RESERVED_0x07
metin.ozkan@analog.com 0:00d2a8670533 554 }decode_thm_dtls_t;
metin.ozkan@analog.com 0:00d2a8670533 555
metin.ozkan@analog.com 0:00d2a8670533 556 /**
metin.ozkan@analog.com 0:00d2a8670533 557 * @brief Get Battery Temperature Details.
metin.ozkan@analog.com 0:00d2a8670533 558 * Valid only when CHGIN_DTLS[1:0] = 0b11.
metin.ozkan@analog.com 0:00d2a8670533 559 *
metin.ozkan@analog.com 0:00d2a8670533 560 * @param[out] thm_dtls Battery temperature details field to be read.
metin.ozkan@analog.com 0:00d2a8670533 561 *
metin.ozkan@analog.com 0:00d2a8670533 562 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 563 */
metin.ozkan@analog.com 0:00d2a8670533 564 int get_thm_dtls(decode_thm_dtls_t *thm_dtls);
metin.ozkan@analog.com 0:00d2a8670533 565
metin.ozkan@analog.com 0:00d2a8670533 566 /**
metin.ozkan@analog.com 0:00d2a8670533 567 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 568 *
metin.ozkan@analog.com 0:00d2a8670533 569 * @details
metin.ozkan@analog.com 0:00d2a8670533 570 * - Register : STAT_CHG_B (0x03)
metin.ozkan@analog.com 0:00d2a8670533 571 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 572 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 573 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 574 */
metin.ozkan@analog.com 0:00d2a8670533 575 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 576 STAT_CHG_B_TIME_SUS,
metin.ozkan@analog.com 0:00d2a8670533 577 STAT_CHG_B_CHG,
metin.ozkan@analog.com 0:00d2a8670533 578 STAT_CHG_B_CHGIN_DTLS,
metin.ozkan@analog.com 0:00d2a8670533 579 STAT_CHG_B_CHG_DTLS
metin.ozkan@analog.com 0:00d2a8670533 580 }reg_bit_stat_chg_b_t;
metin.ozkan@analog.com 0:00d2a8670533 581
metin.ozkan@analog.com 0:00d2a8670533 582 /**
metin.ozkan@analog.com 0:00d2a8670533 583 * @brief Get STAT_CHG_B (0x03) register.
metin.ozkan@analog.com 0:00d2a8670533 584 *
metin.ozkan@analog.com 0:00d2a8670533 585 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 586 * @param[out] status Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 587 *
metin.ozkan@analog.com 0:00d2a8670533 588 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 589 */
metin.ozkan@analog.com 0:00d2a8670533 590 int get_stat_chg_b(reg_bit_stat_chg_b_t bit_field, uint8_t *status);
metin.ozkan@analog.com 0:00d2a8670533 591
metin.ozkan@analog.com 0:00d2a8670533 592 /**
metin.ozkan@analog.com 0:00d2a8670533 593 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 594 *
metin.ozkan@analog.com 0:00d2a8670533 595 * @details
metin.ozkan@analog.com 0:00d2a8670533 596 * - Register : STAT_CHG_B (0x03)
metin.ozkan@analog.com 0:00d2a8670533 597 * - Bit Fields : [7:4]
metin.ozkan@analog.com 0:00d2a8670533 598 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 599 * - Description : Charger Details.
metin.ozkan@analog.com 0:00d2a8670533 600 */
metin.ozkan@analog.com 0:00d2a8670533 601 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 602 CHG_DTLS_OFF,
metin.ozkan@analog.com 0:00d2a8670533 603 CHG_DTLS_PREQUALIFICATION_MODE,
metin.ozkan@analog.com 0:00d2a8670533 604 CHG_DTLS_FAST_CHARGE_CC,
metin.ozkan@analog.com 0:00d2a8670533 605 CHG_DTLS_JEITA_FAST_CHARGE_CC,
metin.ozkan@analog.com 0:00d2a8670533 606 CHG_DTLS_FAST_CHARGE_CV,
metin.ozkan@analog.com 0:00d2a8670533 607 CHG_DTLS_JEITA_FAST_CHARGE_CV,
metin.ozkan@analog.com 0:00d2a8670533 608 CHG_DTLS_TOP_OFF_MODE,
metin.ozkan@analog.com 0:00d2a8670533 609 CHG_DTLS_JEITA_MODIFIED_TOP_OFF_MODE,
metin.ozkan@analog.com 0:00d2a8670533 610 CHG_DTLS_DONE,
metin.ozkan@analog.com 0:00d2a8670533 611 CHG_DTLS_JEITA_MODIFIED_DONE,
metin.ozkan@analog.com 0:00d2a8670533 612 CHG_DTLS_PREQUALIFICATION_TIMER_FAULT,
metin.ozkan@analog.com 0:00d2a8670533 613 CHG_DTLS_FAST_CHARGE_TIMER_FAULT,
metin.ozkan@analog.com 0:00d2a8670533 614 CHG_DTLS_BATTERY_TEMPERATURE_FAULT,
metin.ozkan@analog.com 0:00d2a8670533 615 CHG_DTLS_RESERVED_0x0D,
metin.ozkan@analog.com 0:00d2a8670533 616 CHG_DTLS_RESERVED_0x0E,
metin.ozkan@analog.com 0:00d2a8670533 617 CHG_DTLS_RESERVED_0x0F
metin.ozkan@analog.com 0:00d2a8670533 618 }decode_chg_dtls_t;
metin.ozkan@analog.com 0:00d2a8670533 619
metin.ozkan@analog.com 0:00d2a8670533 620 /**
metin.ozkan@analog.com 0:00d2a8670533 621 * @brief Get Charger Details.
metin.ozkan@analog.com 0:00d2a8670533 622 *
metin.ozkan@analog.com 0:00d2a8670533 623 * @param[out] chg_dtls Charger details field to be read.
metin.ozkan@analog.com 0:00d2a8670533 624 *
metin.ozkan@analog.com 0:00d2a8670533 625 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 626 */
metin.ozkan@analog.com 0:00d2a8670533 627 int get_chg_dtls(decode_chg_dtls_t *chg_dtls);
metin.ozkan@analog.com 0:00d2a8670533 628
metin.ozkan@analog.com 0:00d2a8670533 629 /**
metin.ozkan@analog.com 0:00d2a8670533 630 * @brief Set the VHOT JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 631 * Bit 7:6 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 632 *
metin.ozkan@analog.com 0:00d2a8670533 633 * @param[in] tempDegC Register bit field to be read.
metin.ozkan@analog.com 0:00d2a8670533 634 * 45ºC, 50ºC, 55ºC or 60ºC.
metin.ozkan@analog.com 0:00d2a8670533 635 *
metin.ozkan@analog.com 0:00d2a8670533 636 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 637 */
metin.ozkan@analog.com 0:00d2a8670533 638 int set_thm_hot(int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 639
metin.ozkan@analog.com 0:00d2a8670533 640 /**
metin.ozkan@analog.com 0:00d2a8670533 641 * @brief Get the VHOT JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 642 * Bit 7:6 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 643 *
metin.ozkan@analog.com 0:00d2a8670533 644 * @param[out] tempDegC Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 645 * 45ºC, 50ºC, 55ºC or 60ºC.
metin.ozkan@analog.com 0:00d2a8670533 646 *
metin.ozkan@analog.com 0:00d2a8670533 647 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 648 */
metin.ozkan@analog.com 0:00d2a8670533 649 int get_thm_hot(int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 650
metin.ozkan@analog.com 0:00d2a8670533 651 /**
metin.ozkan@analog.com 0:00d2a8670533 652 * @brief Set the VWARM JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 653 * Bit 5:4 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 654 *
metin.ozkan@analog.com 0:00d2a8670533 655 * @param[in] tempDegC Register bit field to be read.
metin.ozkan@analog.com 0:00d2a8670533 656 * 35ºC, 40ºC, 45ºC or 50ºC.
metin.ozkan@analog.com 0:00d2a8670533 657 *
metin.ozkan@analog.com 0:00d2a8670533 658 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 659 */
metin.ozkan@analog.com 0:00d2a8670533 660 int set_thm_warm(int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 661
metin.ozkan@analog.com 0:00d2a8670533 662 /**
metin.ozkan@analog.com 0:00d2a8670533 663 * @brief Get the VWARM JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 664 * Bit 5:4 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 665 *
metin.ozkan@analog.com 0:00d2a8670533 666 * @param[out] tempDegC Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 667 * 35ºC, 40ºC, 45ºC or 50ºC.
metin.ozkan@analog.com 0:00d2a8670533 668 *
metin.ozkan@analog.com 0:00d2a8670533 669 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 670 */
metin.ozkan@analog.com 0:00d2a8670533 671 int get_thm_warm(int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 672
metin.ozkan@analog.com 0:00d2a8670533 673 /**
metin.ozkan@analog.com 0:00d2a8670533 674 * @brief Set the VCOOL JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 675 * Bit 3:2 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 676 *
metin.ozkan@analog.com 0:00d2a8670533 677 * @param[in] tempDegC Register bit field to be read.
metin.ozkan@analog.com 0:00d2a8670533 678 * 0ºC, 5ºC, 10ºC or 15ºC.
metin.ozkan@analog.com 0:00d2a8670533 679 *
metin.ozkan@analog.com 0:00d2a8670533 680 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 681 */
metin.ozkan@analog.com 0:00d2a8670533 682 int set_thm_cool(int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 683
metin.ozkan@analog.com 0:00d2a8670533 684 /**
metin.ozkan@analog.com 0:00d2a8670533 685 * @brief Get the VCOOL JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 686 * Bit 3:2 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 687 *
metin.ozkan@analog.com 0:00d2a8670533 688 * @param[out] tempDegC Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 689 * 0ºC, 5ºC, 10ºC or 15ºC.
metin.ozkan@analog.com 0:00d2a8670533 690 *
metin.ozkan@analog.com 0:00d2a8670533 691 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 692 */
metin.ozkan@analog.com 0:00d2a8670533 693 int get_thm_cool(int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 694
metin.ozkan@analog.com 0:00d2a8670533 695 /**
metin.ozkan@analog.com 0:00d2a8670533 696 * @brief Set the VCOLD JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 697 * Bit 1:0 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 698 *
metin.ozkan@analog.com 0:00d2a8670533 699 * @param[in] tempDegC Register bit field to be read.
metin.ozkan@analog.com 0:00d2a8670533 700 * -10ºC, -5ºC, 0ºC or 5ºC.
metin.ozkan@analog.com 0:00d2a8670533 701 *
metin.ozkan@analog.com 0:00d2a8670533 702 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 703 */
metin.ozkan@analog.com 0:00d2a8670533 704 int set_thm_cold(int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 705
metin.ozkan@analog.com 0:00d2a8670533 706 /**
metin.ozkan@analog.com 0:00d2a8670533 707 * @brief Get the VCOLD JEITA Temperature Threshold.
metin.ozkan@analog.com 0:00d2a8670533 708 * Bit 1:0 of CNFG_CHG_A (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 709 *
metin.ozkan@analog.com 0:00d2a8670533 710 * @param[out] tempDegC Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 711 * -10ºC, -5ºC, 0ºC or 5ºC.
metin.ozkan@analog.com 0:00d2a8670533 712 *
metin.ozkan@analog.com 0:00d2a8670533 713 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 714 */
metin.ozkan@analog.com 0:00d2a8670533 715 int get_thm_cold(int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 716
metin.ozkan@analog.com 0:00d2a8670533 717 /**
metin.ozkan@analog.com 0:00d2a8670533 718 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 719 *
metin.ozkan@analog.com 0:00d2a8670533 720 * @details
metin.ozkan@analog.com 0:00d2a8670533 721 * - Register : CNFG_CHG_B (0x21)
metin.ozkan@analog.com 0:00d2a8670533 722 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 723 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 724 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 725 */
metin.ozkan@analog.com 0:00d2a8670533 726 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 727 CNFG_CHG_B_CHG_EN,
metin.ozkan@analog.com 0:00d2a8670533 728 CNFG_CHG_B_I_PQ,
metin.ozkan@analog.com 0:00d2a8670533 729 CNFG_CHG_B_ICHGIN_LIM,
metin.ozkan@analog.com 0:00d2a8670533 730 CNFG_CHG_B_VCHGIN_MIN
metin.ozkan@analog.com 0:00d2a8670533 731 }reg_bit_cnfg_chg_b_t;
metin.ozkan@analog.com 0:00d2a8670533 732
metin.ozkan@analog.com 0:00d2a8670533 733 /**
metin.ozkan@analog.com 0:00d2a8670533 734 * @brief Set CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 735 *
metin.ozkan@analog.com 0:00d2a8670533 736 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 737 * @param[in] config Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 738 *
metin.ozkan@analog.com 0:00d2a8670533 739 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 740 */
metin.ozkan@analog.com 0:00d2a8670533 741 int set_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 742
metin.ozkan@analog.com 0:00d2a8670533 743 /**
metin.ozkan@analog.com 0:00d2a8670533 744 * @brief Get CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 745 *
metin.ozkan@analog.com 0:00d2a8670533 746 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 747 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 748 *
metin.ozkan@analog.com 0:00d2a8670533 749 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 750 */
metin.ozkan@analog.com 0:00d2a8670533 751 int get_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 752
metin.ozkan@analog.com 0:00d2a8670533 753 /**
metin.ozkan@analog.com 0:00d2a8670533 754 * @brief Set Minimum CHGIN Regulation Voltage.
metin.ozkan@analog.com 0:00d2a8670533 755 * Bit 7:5 of CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 756 *
metin.ozkan@analog.com 0:00d2a8670533 757 * @param[in] voltV
metin.ozkan@analog.com 0:00d2a8670533 758 * 4.0V, 4.1V, 4.2V, 4.3V,
metin.ozkan@analog.com 0:00d2a8670533 759 * 4.4V, 4.5V, 4.6V, 4.7V.
metin.ozkan@analog.com 0:00d2a8670533 760 *
metin.ozkan@analog.com 0:00d2a8670533 761 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 762 */
metin.ozkan@analog.com 0:00d2a8670533 763 int set_vchgin_min(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 764
metin.ozkan@analog.com 0:00d2a8670533 765 /**
metin.ozkan@analog.com 0:00d2a8670533 766 * @brief Get Minimum CHGIN Regulation Voltage.
metin.ozkan@analog.com 0:00d2a8670533 767 * Bit 7:5 of CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 768 *
metin.ozkan@analog.com 0:00d2a8670533 769 * @param[in] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 770 * 4.0V, 4.1V, 4.2V, 4.3V,
metin.ozkan@analog.com 0:00d2a8670533 771 * 4.4V, 4.5V, 4.6V, 4.7V.
metin.ozkan@analog.com 0:00d2a8670533 772 *
metin.ozkan@analog.com 0:00d2a8670533 773 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 774 */
metin.ozkan@analog.com 0:00d2a8670533 775 int get_vchgin_min(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 776
metin.ozkan@analog.com 0:00d2a8670533 777 /**
metin.ozkan@analog.com 0:00d2a8670533 778 * @brief Set CHGIN Input Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 779 * Bit 4:2 of CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 780 *
metin.ozkan@analog.com 0:00d2a8670533 781 * @param[in] currentmA
metin.ozkan@analog.com 0:00d2a8670533 782 * 95mA, 190mA, 285mA, 380mA, 475mA.
metin.ozkan@analog.com 0:00d2a8670533 783 *
metin.ozkan@analog.com 0:00d2a8670533 784 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 785 */
metin.ozkan@analog.com 0:00d2a8670533 786 int set_ichgin_lim(int currentmA);
metin.ozkan@analog.com 0:00d2a8670533 787
metin.ozkan@analog.com 0:00d2a8670533 788 /**
metin.ozkan@analog.com 0:00d2a8670533 789 * @brief Get CHGIN Input Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 790 * Bit 4:2 of CNFG_CHG_B (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 791 *
metin.ozkan@analog.com 0:00d2a8670533 792 * @param[out] currentmA Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 793 * 95mA, 190mA, 285mA, 380mA, 475mA.
metin.ozkan@analog.com 0:00d2a8670533 794 *
metin.ozkan@analog.com 0:00d2a8670533 795 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 796 */
metin.ozkan@analog.com 0:00d2a8670533 797 int get_ichgin_lim(int *currentmA);
metin.ozkan@analog.com 0:00d2a8670533 798
metin.ozkan@analog.com 0:00d2a8670533 799 /**
metin.ozkan@analog.com 0:00d2a8670533 800 * @brief Set Battery Prequalification Voltage Threshold (VPQ).
metin.ozkan@analog.com 0:00d2a8670533 801 * Bit 7:5 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 802 *
metin.ozkan@analog.com 0:00d2a8670533 803 * @param[in] voltV
metin.ozkan@analog.com 0:00d2a8670533 804 * 2.3V, 2.4V, 2.5V, 2.6V,
metin.ozkan@analog.com 0:00d2a8670533 805 * 2.7V, 2.8V, 2.9V, 3.0V.
metin.ozkan@analog.com 0:00d2a8670533 806 *
metin.ozkan@analog.com 0:00d2a8670533 807 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 808 */
metin.ozkan@analog.com 0:00d2a8670533 809 int set_chg_pq(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 810
metin.ozkan@analog.com 0:00d2a8670533 811 /**
metin.ozkan@analog.com 0:00d2a8670533 812 * @brief Get Battery Prequalification Voltage Threshold (VPQ).
metin.ozkan@analog.com 0:00d2a8670533 813 * Bit 7:5 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 814 *
metin.ozkan@analog.com 0:00d2a8670533 815 * @param[out] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 816 * 2.3V, 2.4V, 2.5V, 2.6V,
metin.ozkan@analog.com 0:00d2a8670533 817 * 2.7V, 2.8V, 2.9V, 3.0V.
metin.ozkan@analog.com 0:00d2a8670533 818 *
metin.ozkan@analog.com 0:00d2a8670533 819 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 820 */
metin.ozkan@analog.com 0:00d2a8670533 821 int get_chg_pq(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 822
metin.ozkan@analog.com 0:00d2a8670533 823 /**
metin.ozkan@analog.com 0:00d2a8670533 824 * @brief Set Charger Termination Current (ITERM).
metin.ozkan@analog.com 0:00d2a8670533 825 * I_TERM[1:0] sets the charger termination current
metin.ozkan@analog.com 0:00d2a8670533 826 * as a percentage of the fast charge current IFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 827 * Bit 4:3 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 828 *
metin.ozkan@analog.com 0:00d2a8670533 829 * @param[in] percent
metin.ozkan@analog.com 0:00d2a8670533 830 * 5%, 7.5%, 10%, 15%.
metin.ozkan@analog.com 0:00d2a8670533 831 *
metin.ozkan@analog.com 0:00d2a8670533 832 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 833 */
metin.ozkan@analog.com 0:00d2a8670533 834 int set_i_term(float percent);
metin.ozkan@analog.com 0:00d2a8670533 835
metin.ozkan@analog.com 0:00d2a8670533 836 /**
metin.ozkan@analog.com 0:00d2a8670533 837 * @brief Get Charger Termination Current (ITERM).
metin.ozkan@analog.com 0:00d2a8670533 838 * I_TERM[1:0] sets the charger termination current
metin.ozkan@analog.com 0:00d2a8670533 839 * as a percentage of the fast charge current IFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 840 * Bit 4:3 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 841 *
metin.ozkan@analog.com 0:00d2a8670533 842 * @param[out] percent Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 843 * 5%, 7.5%, 10%, 15%.
metin.ozkan@analog.com 0:00d2a8670533 844 *
metin.ozkan@analog.com 0:00d2a8670533 845 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 846 */
metin.ozkan@analog.com 0:00d2a8670533 847 int get_i_term(float *percent);
metin.ozkan@analog.com 0:00d2a8670533 848
metin.ozkan@analog.com 0:00d2a8670533 849 /**
metin.ozkan@analog.com 0:00d2a8670533 850 * @brief Set Top-off Timer Value.
metin.ozkan@analog.com 0:00d2a8670533 851 * Bit 2:0 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 852 *
metin.ozkan@analog.com 0:00d2a8670533 853 * @param[in] minute
metin.ozkan@analog.com 0:00d2a8670533 854 * 0 minutes, 5 minutes, 10 minutes
metin.ozkan@analog.com 0:00d2a8670533 855 * 15 minutes, 20 minutes, 25 minutes,
metin.ozkan@analog.com 0:00d2a8670533 856 * 30 minutes, 35 minutes.
metin.ozkan@analog.com 0:00d2a8670533 857 *
metin.ozkan@analog.com 0:00d2a8670533 858 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 859 */
metin.ozkan@analog.com 0:00d2a8670533 860 int set_t_topoff(uint8_t minute);
metin.ozkan@analog.com 0:00d2a8670533 861
metin.ozkan@analog.com 0:00d2a8670533 862 /**
metin.ozkan@analog.com 0:00d2a8670533 863 * @brief Get Top-off Timer Value.
metin.ozkan@analog.com 0:00d2a8670533 864 * Bit 2:0 of CNFG_CHG_C (0x22) register.
metin.ozkan@analog.com 0:00d2a8670533 865 *
metin.ozkan@analog.com 0:00d2a8670533 866 * @param[out] minute Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 867 0 minutes, 5 minutes, 10 minutes
metin.ozkan@analog.com 0:00d2a8670533 868 * 15 minutes, 20 minutes, 25 minutes,
metin.ozkan@analog.com 0:00d2a8670533 869 * 30 minutes, 35 minutes.
metin.ozkan@analog.com 0:00d2a8670533 870 *
metin.ozkan@analog.com 0:00d2a8670533 871 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 872 */
metin.ozkan@analog.com 0:00d2a8670533 873 int get_t_topoff(uint8_t *minute);
metin.ozkan@analog.com 0:00d2a8670533 874
metin.ozkan@analog.com 0:00d2a8670533 875 /**
metin.ozkan@analog.com 0:00d2a8670533 876 * @brief Set the Die Junction Temperature Regulation Point, TJ-REG.
metin.ozkan@analog.com 0:00d2a8670533 877 * Bit 7:5 of CNFG_CHG_D (0x23) register.
metin.ozkan@analog.com 0:00d2a8670533 878 *
metin.ozkan@analog.com 0:00d2a8670533 879 * @param[in] tempDegC 60ºC, 70ºC, 80ºC,
metin.ozkan@analog.com 0:00d2a8670533 880 * 90ºC, 100ºC.
metin.ozkan@analog.com 0:00d2a8670533 881 *
metin.ozkan@analog.com 0:00d2a8670533 882 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 883 */
metin.ozkan@analog.com 0:00d2a8670533 884 int set_tj_reg(uint8_t tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 885
metin.ozkan@analog.com 0:00d2a8670533 886 /**
metin.ozkan@analog.com 0:00d2a8670533 887 * @brief Get the Die Junction Temperature Regulation Point, TJ-REG.
metin.ozkan@analog.com 0:00d2a8670533 888 * Bit 7:5 of CNFG_CHG_D (0x23) register.
metin.ozkan@analog.com 0:00d2a8670533 889 *
metin.ozkan@analog.com 0:00d2a8670533 890 * @param[out] tempDegC Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 891 * 60ºC, 70ºC, 80ºC, 90ºC, 100ºC.
metin.ozkan@analog.com 0:00d2a8670533 892 *
metin.ozkan@analog.com 0:00d2a8670533 893 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 894 */
metin.ozkan@analog.com 0:00d2a8670533 895 int get_tj_reg(uint8_t *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 896
metin.ozkan@analog.com 0:00d2a8670533 897 /**
metin.ozkan@analog.com 0:00d2a8670533 898 * @brief Set System Voltage Regulation (VSYS-REG).
metin.ozkan@analog.com 0:00d2a8670533 899 * Bit 4:0 of CNFG_CHG_D (0x23) register.
metin.ozkan@analog.com 0:00d2a8670533 900 *
metin.ozkan@analog.com 0:00d2a8670533 901 * @param[in] voltV 3.300V, 3.350V, 3.400V, ...
metin.ozkan@analog.com 0:00d2a8670533 902 * 4.750V, 4.800V.
metin.ozkan@analog.com 0:00d2a8670533 903 *
metin.ozkan@analog.com 0:00d2a8670533 904 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 905 */
metin.ozkan@analog.com 0:00d2a8670533 906 int set_vsys_reg(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 907
metin.ozkan@analog.com 0:00d2a8670533 908 /**
metin.ozkan@analog.com 0:00d2a8670533 909 * @brief Get System Voltage Regulation (VSYS-REG).
metin.ozkan@analog.com 0:00d2a8670533 910 * Bit 4:0 of CNFG_CHG_D (0x23) register.
metin.ozkan@analog.com 0:00d2a8670533 911 *
metin.ozkan@analog.com 0:00d2a8670533 912 * @param[out] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 913 * 3.300V, 3.350V, 3.400V, ...
metin.ozkan@analog.com 0:00d2a8670533 914 * 4.750V, 4.800V.
metin.ozkan@analog.com 0:00d2a8670533 915 *
metin.ozkan@analog.com 0:00d2a8670533 916 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 917 */
metin.ozkan@analog.com 0:00d2a8670533 918 int get_vsys_reg(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 919
metin.ozkan@analog.com 0:00d2a8670533 920 /**
metin.ozkan@analog.com 0:00d2a8670533 921 * @brief Set the Fast-Charge Constant Current Value, IFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 922 * Bit 7:2 of CNFG_CHG_E (0x24) register.
metin.ozkan@analog.com 0:00d2a8670533 923 *
metin.ozkan@analog.com 0:00d2a8670533 924 * @param[in] currentmA 7.5mA, 15.0mA, 22.5mA, ...
metin.ozkan@analog.com 0:00d2a8670533 925 * 292.5mA, 300.0mA.
metin.ozkan@analog.com 0:00d2a8670533 926 *
metin.ozkan@analog.com 0:00d2a8670533 927 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 928 */
metin.ozkan@analog.com 0:00d2a8670533 929 int set_chg_cc(float currentmA);
metin.ozkan@analog.com 0:00d2a8670533 930
metin.ozkan@analog.com 0:00d2a8670533 931 /**
metin.ozkan@analog.com 0:00d2a8670533 932 * @brief Get the Fast-Charge Constant Current Value, IFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 933 * Bit 7:2 of CNFG_CHG_E (0x24) register.
metin.ozkan@analog.com 0:00d2a8670533 934 *
metin.ozkan@analog.com 0:00d2a8670533 935 * @param[out] currentmA Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 936 * 7.5mA, 15.0mA, 22.5mA, ...
metin.ozkan@analog.com 0:00d2a8670533 937 * 292.5mA, 300.0mA.
metin.ozkan@analog.com 0:00d2a8670533 938 *
metin.ozkan@analog.com 0:00d2a8670533 939 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 940 */
metin.ozkan@analog.com 0:00d2a8670533 941 int get_chg_cc(float *currentmA);
metin.ozkan@analog.com 0:00d2a8670533 942
metin.ozkan@analog.com 0:00d2a8670533 943 /**
metin.ozkan@analog.com 0:00d2a8670533 944 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 945 *
metin.ozkan@analog.com 0:00d2a8670533 946 * @details
metin.ozkan@analog.com 0:00d2a8670533 947 * - Register : CNFG_CHG_E (0x24)
metin.ozkan@analog.com 0:00d2a8670533 948 * - Bit Fields : [1:0]
metin.ozkan@analog.com 0:00d2a8670533 949 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 950 * - Description : Fast-charge Safety timer, tFC.
metin.ozkan@analog.com 0:00d2a8670533 951 */
metin.ozkan@analog.com 0:00d2a8670533 952 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 953 T_FAST_CHG_TIMER_DISABLED,
metin.ozkan@analog.com 0:00d2a8670533 954 T_FAST_CHG_HOUR_3H,
metin.ozkan@analog.com 0:00d2a8670533 955 T_FAST_CHG_HOUR_5H,
metin.ozkan@analog.com 0:00d2a8670533 956 T_FAST_CHG_HOUR_7H
metin.ozkan@analog.com 0:00d2a8670533 957 }decode_t_fast_chg_t;
metin.ozkan@analog.com 0:00d2a8670533 958
metin.ozkan@analog.com 0:00d2a8670533 959 /**
metin.ozkan@analog.com 0:00d2a8670533 960 * @brief Set the Fast-charge Safety timer, tFC.
metin.ozkan@analog.com 0:00d2a8670533 961 * Bit 1:0 of CNFG_CHG_E (0x24) register.
metin.ozkan@analog.com 0:00d2a8670533 962 *
metin.ozkan@analog.com 0:00d2a8670533 963 * @param[in] t_fast_chg Fast-charge safety timer field to be written.
metin.ozkan@analog.com 0:00d2a8670533 964 *
metin.ozkan@analog.com 0:00d2a8670533 965 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 966 */
metin.ozkan@analog.com 0:00d2a8670533 967 int set_t_fast_chg(decode_t_fast_chg_t t_fast_chg);
metin.ozkan@analog.com 0:00d2a8670533 968
metin.ozkan@analog.com 0:00d2a8670533 969 /**
metin.ozkan@analog.com 0:00d2a8670533 970 * @brief Get the Fast-charge Safety timer, tFC.
metin.ozkan@analog.com 0:00d2a8670533 971 * Bit 1:0 of CNFG_CHG_E (0x24) register.
metin.ozkan@analog.com 0:00d2a8670533 972 *
metin.ozkan@analog.com 0:00d2a8670533 973 * @param[out] t_fast_chg Fast-charge safety timer field to be read.
metin.ozkan@analog.com 0:00d2a8670533 974 *
metin.ozkan@analog.com 0:00d2a8670533 975 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 976 */
metin.ozkan@analog.com 0:00d2a8670533 977 int get_t_fast_chg(decode_t_fast_chg_t *t_fast_chg);
metin.ozkan@analog.com 0:00d2a8670533 978
metin.ozkan@analog.com 0:00d2a8670533 979 /**
metin.ozkan@analog.com 0:00d2a8670533 980 * @brief Set IFAST-CHG-JEITA
metin.ozkan@analog.com 0:00d2a8670533 981 * when the battery is either cool or warm as defined by the
metin.ozkan@analog.com 0:00d2a8670533 982 * VCOOL and VWARM temperature thresholds.
metin.ozkan@analog.com 0:00d2a8670533 983 * Bit 7:2 of CNFG_CHG_F (0x25) register.
metin.ozkan@analog.com 0:00d2a8670533 984 *
metin.ozkan@analog.com 0:00d2a8670533 985 * @param[in] currentmA 7.5mA, 15.0mA, 22.5mA, ...
metin.ozkan@analog.com 0:00d2a8670533 986 * 292.5mA, 300.0mA.
metin.ozkan@analog.com 0:00d2a8670533 987 *
metin.ozkan@analog.com 0:00d2a8670533 988 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 989 */
metin.ozkan@analog.com 0:00d2a8670533 990 int set_chg_cc_jeita(float currentmA);
metin.ozkan@analog.com 0:00d2a8670533 991
metin.ozkan@analog.com 0:00d2a8670533 992 /**
metin.ozkan@analog.com 0:00d2a8670533 993 * @brief Get IFAST-CHG-JEITA
metin.ozkan@analog.com 0:00d2a8670533 994 * when the battery is either cool or warm as defined by the
metin.ozkan@analog.com 0:00d2a8670533 995 * VCOOL and VWARM temperature thresholds.
metin.ozkan@analog.com 0:00d2a8670533 996 * Bit 7:2 of CNFG_CHG_F (0x25) register.
metin.ozkan@analog.com 0:00d2a8670533 997 *
metin.ozkan@analog.com 0:00d2a8670533 998 * @param[out] currentmA Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 999 * 7.5mA, 15.0mA, 22.5mA, ...
metin.ozkan@analog.com 0:00d2a8670533 1000 * 292.5mA, 300.0mA.
metin.ozkan@analog.com 0:00d2a8670533 1001 *
metin.ozkan@analog.com 0:00d2a8670533 1002 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1003 */
metin.ozkan@analog.com 0:00d2a8670533 1004 int get_chg_cc_jeita(float *currentmA);
metin.ozkan@analog.com 0:00d2a8670533 1005
metin.ozkan@analog.com 0:00d2a8670533 1006 /**
metin.ozkan@analog.com 0:00d2a8670533 1007 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1008 *
metin.ozkan@analog.com 0:00d2a8670533 1009 * @details
metin.ozkan@analog.com 0:00d2a8670533 1010 * - Register : CNFG_CHG_G (0x26)
metin.ozkan@analog.com 0:00d2a8670533 1011 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 1012 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1013 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 1014 */
metin.ozkan@analog.com 0:00d2a8670533 1015 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1016 CNFG_CHG_G_FUS_M,
metin.ozkan@analog.com 0:00d2a8670533 1017 CNFG_CHG_G_USBS,
metin.ozkan@analog.com 0:00d2a8670533 1018 CNFG_CHG_G_CHG_CV
metin.ozkan@analog.com 0:00d2a8670533 1019 }reg_bit_cnfg_chg_g_t;
metin.ozkan@analog.com 0:00d2a8670533 1020
metin.ozkan@analog.com 0:00d2a8670533 1021 /**
metin.ozkan@analog.com 0:00d2a8670533 1022 * @brief Set CNFG_CHG_G (0x26) register.
metin.ozkan@analog.com 0:00d2a8670533 1023 *
metin.ozkan@analog.com 0:00d2a8670533 1024 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1025 * @param[in] config Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1026 *
metin.ozkan@analog.com 0:00d2a8670533 1027 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1028 */
metin.ozkan@analog.com 0:00d2a8670533 1029 int set_cnfg_chg_g(reg_bit_cnfg_chg_g_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 1030
metin.ozkan@analog.com 0:00d2a8670533 1031 /**
metin.ozkan@analog.com 0:00d2a8670533 1032 * @brief Get CNFG_CHG_G (0x26) register.
metin.ozkan@analog.com 0:00d2a8670533 1033 *
metin.ozkan@analog.com 0:00d2a8670533 1034 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1035 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1036 *
metin.ozkan@analog.com 0:00d2a8670533 1037 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1038 */
metin.ozkan@analog.com 0:00d2a8670533 1039 int get_cnfg_chg_g(reg_bit_cnfg_chg_g_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 1040
metin.ozkan@analog.com 0:00d2a8670533 1041 /**
metin.ozkan@analog.com 0:00d2a8670533 1042 * @brief Set Fast-Charge Battery Regulation Voltage, VFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 1043 * Bit 7:2 of CNFG_CHG_G (0x26) register.
metin.ozkan@analog.com 0:00d2a8670533 1044 *
metin.ozkan@analog.com 0:00d2a8670533 1045 * @param[in] voltV 3.600V, 3.625V, 3.650V, ...
metin.ozkan@analog.com 0:00d2a8670533 1046 * 4.575V, 4.600V.
metin.ozkan@analog.com 0:00d2a8670533 1047 *
metin.ozkan@analog.com 0:00d2a8670533 1048 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1049 */
metin.ozkan@analog.com 0:00d2a8670533 1050 int set_chg_cv(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1051
metin.ozkan@analog.com 0:00d2a8670533 1052 /**
metin.ozkan@analog.com 0:00d2a8670533 1053 * @brief Get Fast-Charge Battery Regulation Voltage, VFAST-CHG.
metin.ozkan@analog.com 0:00d2a8670533 1054 * Bit 7:2 of CNFG_CHG_G (0x26) register.
metin.ozkan@analog.com 0:00d2a8670533 1055 *
metin.ozkan@analog.com 0:00d2a8670533 1056 * @param[out] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1057 * 3.600V, 3.625V, 3.650V, ...
metin.ozkan@analog.com 0:00d2a8670533 1058 * 4.575V, 4.600V.
metin.ozkan@analog.com 0:00d2a8670533 1059 *
metin.ozkan@analog.com 0:00d2a8670533 1060 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1061 */
metin.ozkan@analog.com 0:00d2a8670533 1062 int get_chg_cv(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1063
metin.ozkan@analog.com 0:00d2a8670533 1064 /**
metin.ozkan@analog.com 0:00d2a8670533 1065 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1066 *
metin.ozkan@analog.com 0:00d2a8670533 1067 * @details
metin.ozkan@analog.com 0:00d2a8670533 1068 * - Register : CNFG_CHG_H (0x27)
metin.ozkan@analog.com 0:00d2a8670533 1069 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 1070 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1071 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 1072 */
metin.ozkan@analog.com 0:00d2a8670533 1073 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1074 CNFG_CHG_H_CHR_TH_DIS,
metin.ozkan@analog.com 0:00d2a8670533 1075 CNFG_CHG_H_SYS_BAT_PRT,
metin.ozkan@analog.com 0:00d2a8670533 1076 CNFG_CHG_H_CHG_CV_JEITA
metin.ozkan@analog.com 0:00d2a8670533 1077 }reg_bit_cnfg_chg_h_t;
metin.ozkan@analog.com 0:00d2a8670533 1078
metin.ozkan@analog.com 0:00d2a8670533 1079 /**
metin.ozkan@analog.com 0:00d2a8670533 1080 * @brief Set CNFG_CHG_H (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 1081 *
metin.ozkan@analog.com 0:00d2a8670533 1082 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1083 * @param[in] config Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1084 *
metin.ozkan@analog.com 0:00d2a8670533 1085 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1086 */
metin.ozkan@analog.com 0:00d2a8670533 1087 int set_cnfg_chg_h(reg_bit_cnfg_chg_h_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 1088
metin.ozkan@analog.com 0:00d2a8670533 1089 /**
metin.ozkan@analog.com 0:00d2a8670533 1090 * @brief Get CNFG_CHG_H (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 1091 *
metin.ozkan@analog.com 0:00d2a8670533 1092 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1093 * @param[out] config Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1094 *
metin.ozkan@analog.com 0:00d2a8670533 1095 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1096 */
metin.ozkan@analog.com 0:00d2a8670533 1097 int get_cnfg_chg_h(reg_bit_cnfg_chg_h_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 1098
metin.ozkan@analog.com 0:00d2a8670533 1099 /**
metin.ozkan@analog.com 0:00d2a8670533 1100 * @brief Set the modified VFAST-CHG-JEITA for when the battery is either
metin.ozkan@analog.com 0:00d2a8670533 1101 * cool or warm as defined by the VCOOL and VWARM temperature thresholds.
metin.ozkan@analog.com 0:00d2a8670533 1102 * Bit 7:2 of CNFG_CHG_H (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 1103 *
metin.ozkan@analog.com 0:00d2a8670533 1104 * @param[in] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1105 * 3.600V, 3.625V, 3.650V, ...
metin.ozkan@analog.com 0:00d2a8670533 1106 * 4.575V, 4.600V.
metin.ozkan@analog.com 0:00d2a8670533 1107 *
metin.ozkan@analog.com 0:00d2a8670533 1108 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1109 */
metin.ozkan@analog.com 0:00d2a8670533 1110 int set_chg_cv_jeita(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1111
metin.ozkan@analog.com 0:00d2a8670533 1112 /**
metin.ozkan@analog.com 0:00d2a8670533 1113 * @brief Get the modified VFAST-CHG-JEITA for when the battery is either
metin.ozkan@analog.com 0:00d2a8670533 1114 * cool or warm as defined by the VCOOL and VWARM temperature thresholds.
metin.ozkan@analog.com 0:00d2a8670533 1115 * Bit 7:2 of CNFG_CHG_H (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 1116 *
metin.ozkan@analog.com 0:00d2a8670533 1117 * @param[out] voltV Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1118 * 3.600V, 3.625V, 3.650V, ...
metin.ozkan@analog.com 0:00d2a8670533 1119 * 4.575V, 4.600V.
metin.ozkan@analog.com 0:00d2a8670533 1120 *
metin.ozkan@analog.com 0:00d2a8670533 1121 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1122 */
metin.ozkan@analog.com 0:00d2a8670533 1123 int get_chg_cv_jeita(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1124
metin.ozkan@analog.com 0:00d2a8670533 1125 /**
metin.ozkan@analog.com 0:00d2a8670533 1126 * @brief Set the Battery Discharge Current Full-Scale Current Value.
metin.ozkan@analog.com 0:00d2a8670533 1127 * Bit 7:4 of CNFG_CHG_I (0x28) register.
metin.ozkan@analog.com 0:00d2a8670533 1128 *
metin.ozkan@analog.com 0:00d2a8670533 1129 * @param[in] currentmA 8.2mA, 40.5mA, 72.3mA, 103.4mA,
metin.ozkan@analog.com 0:00d2a8670533 1130 * 134.1mA, 164.1mA, 193.7mA, 222.7mA,
metin.ozkan@analog.com 0:00d2a8670533 1131 * 251.2mA, 279.3mA, 300.0mA
metin.ozkan@analog.com 0:00d2a8670533 1132 *
metin.ozkan@analog.com 0:00d2a8670533 1133 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1134 */
metin.ozkan@analog.com 0:00d2a8670533 1135 int set_imon_dischg_scale(float currentmA);
metin.ozkan@analog.com 0:00d2a8670533 1136
metin.ozkan@analog.com 0:00d2a8670533 1137 /**
metin.ozkan@analog.com 0:00d2a8670533 1138 * @brief Get the Battery Discharge Current Full-Scale Current Value.
metin.ozkan@analog.com 0:00d2a8670533 1139 * Bit 7:4 of CNFG_CHG_I (0x28) register.
metin.ozkan@analog.com 0:00d2a8670533 1140 *
metin.ozkan@analog.com 0:00d2a8670533 1141 * @param[out] currentmA Pointer of value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1142 * 8.2mA, 40.5mA, 72.3mA, 103.4mA,
metin.ozkan@analog.com 0:00d2a8670533 1143 * 134.1mA, 164.1mA, 193.7mA, 222.7mA,
metin.ozkan@analog.com 0:00d2a8670533 1144 * 251.2mA, 279.3mA, 300.0mA
metin.ozkan@analog.com 0:00d2a8670533 1145 *
metin.ozkan@analog.com 0:00d2a8670533 1146 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1147 */
metin.ozkan@analog.com 0:00d2a8670533 1148 int get_imon_dischg_scale(float *currentmA);
metin.ozkan@analog.com 0:00d2a8670533 1149
metin.ozkan@analog.com 0:00d2a8670533 1150 /**
metin.ozkan@analog.com 0:00d2a8670533 1151 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1152 *
metin.ozkan@analog.com 0:00d2a8670533 1153 * @details
metin.ozkan@analog.com 0:00d2a8670533 1154 * - Register : CNFG_CHG_I (0x28)
metin.ozkan@analog.com 0:00d2a8670533 1155 * - Bit Fields : [3:0]
metin.ozkan@analog.com 0:00d2a8670533 1156 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1157 * - Description : Analog channel to connect to AMUX.
metin.ozkan@analog.com 0:00d2a8670533 1158 */
metin.ozkan@analog.com 0:00d2a8670533 1159 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1160 MUX_SEL_MULTIPLEXER_DISABLED,
metin.ozkan@analog.com 0:00d2a8670533 1161 MUX_SEL_CHGIN_VOLTAGE_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1162 MUX_SEL_CHGIN_CURRENT_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1163 MUX_SEL_BATTERY_VOLTAGE_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1164 MUX_SEL_BATTERY_CHARGE_CURRENT_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1165 MUX_SEL_BATTERY_DISCHARGE_CURRENT_MONITOR_NORMAL,
metin.ozkan@analog.com 0:00d2a8670533 1166 MUX_SEL_BATTERY_DISCHARGE_CURRENT_MONITOR_NULL,
metin.ozkan@analog.com 0:00d2a8670533 1167 MUX_SEL_RESERVED_0x07,
metin.ozkan@analog.com 0:00d2a8670533 1168 MUX_SEL_RESERVED_0x08,
metin.ozkan@analog.com 0:00d2a8670533 1169 MUX_SEL_AGND_VOLTAGE_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1170 MUX_SEL_SYS_VOLTAGE_MONITOR,
metin.ozkan@analog.com 0:00d2a8670533 1171 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0B,
metin.ozkan@analog.com 0:00d2a8670533 1172 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0C,
metin.ozkan@analog.com 0:00d2a8670533 1173 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0D,
metin.ozkan@analog.com 0:00d2a8670533 1174 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0E,
metin.ozkan@analog.com 0:00d2a8670533 1175 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0F
metin.ozkan@analog.com 0:00d2a8670533 1176 }decode_mux_sel_t;
metin.ozkan@analog.com 0:00d2a8670533 1177
metin.ozkan@analog.com 0:00d2a8670533 1178 /**
metin.ozkan@analog.com 0:00d2a8670533 1179 * @brief Set the analog channel to connect to AMUX.
metin.ozkan@analog.com 0:00d2a8670533 1180 *
metin.ozkan@analog.com 0:00d2a8670533 1181 * @param[in] selection AMUX value field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1182 *
metin.ozkan@analog.com 0:00d2a8670533 1183 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1184 */
metin.ozkan@analog.com 0:00d2a8670533 1185 int set_mux_sel(decode_mux_sel_t selection);
metin.ozkan@analog.com 0:00d2a8670533 1186
metin.ozkan@analog.com 0:00d2a8670533 1187 /**
metin.ozkan@analog.com 0:00d2a8670533 1188 * @brief Get the analog channel to connect to AMUX.
metin.ozkan@analog.com 0:00d2a8670533 1189 *
metin.ozkan@analog.com 0:00d2a8670533 1190 * @param[out] selection AMUX value field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1191 *
metin.ozkan@analog.com 0:00d2a8670533 1192 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1193 */
metin.ozkan@analog.com 0:00d2a8670533 1194 int get_mux_sel(decode_mux_sel_t *selection);
metin.ozkan@analog.com 0:00d2a8670533 1195
metin.ozkan@analog.com 0:00d2a8670533 1196 /*SBB*/
metin.ozkan@analog.com 0:00d2a8670533 1197
metin.ozkan@analog.com 0:00d2a8670533 1198 /**
metin.ozkan@analog.com 0:00d2a8670533 1199 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1200 *
metin.ozkan@analog.com 0:00d2a8670533 1201 * @details
metin.ozkan@analog.com 0:00d2a8670533 1202 * - Register : CNFG_SBB_TOP (0x38)
metin.ozkan@analog.com 0:00d2a8670533 1203 * - Bit Fields : [7:0]
metin.ozkan@analog.com 0:00d2a8670533 1204 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1205 * - Description : Watchdog Timer Configuration.
metin.ozkan@analog.com 0:00d2a8670533 1206 */
metin.ozkan@analog.com 0:00d2a8670533 1207 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1208 CNFG_SBB_TOP_DRV_SBB,
metin.ozkan@analog.com 0:00d2a8670533 1209 CNFG_SBB_TOP_DIS_LPM
metin.ozkan@analog.com 0:00d2a8670533 1210 }reg_bit_cnfg_sbb_top_t;
metin.ozkan@analog.com 0:00d2a8670533 1211
metin.ozkan@analog.com 0:00d2a8670533 1212 /**
metin.ozkan@analog.com 0:00d2a8670533 1213 * @brief Set CNFG_SBB_TOP (0x38) register.
metin.ozkan@analog.com 0:00d2a8670533 1214 *
metin.ozkan@analog.com 0:00d2a8670533 1215 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1216 * @param[in] config Configuration value to be written.
metin.ozkan@analog.com 0:00d2a8670533 1217 *
metin.ozkan@analog.com 0:00d2a8670533 1218 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1219 */
metin.ozkan@analog.com 0:00d2a8670533 1220 int set_cnfg_sbb_top(reg_bit_cnfg_sbb_top_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 1221
metin.ozkan@analog.com 0:00d2a8670533 1222 /**
metin.ozkan@analog.com 0:00d2a8670533 1223 * @brief Get CNFG_SBB_TOP (0x38) register.
metin.ozkan@analog.com 0:00d2a8670533 1224 *
metin.ozkan@analog.com 0:00d2a8670533 1225 * @param[in] bit_field Register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1226 * @param[out] config Configuration value to be read.
metin.ozkan@analog.com 0:00d2a8670533 1227 *
metin.ozkan@analog.com 0:00d2a8670533 1228 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1229 */
metin.ozkan@analog.com 0:00d2a8670533 1230 int get_cnfg_sbb_top(reg_bit_cnfg_sbb_top_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 1231
metin.ozkan@analog.com 0:00d2a8670533 1232 /**
metin.ozkan@analog.com 0:00d2a8670533 1233 * @brief Set SIMO Buck-Boost Channel x Target Output Voltage.
metin.ozkan@analog.com 0:00d2a8670533 1234 * CNFG_SBB0_A (0x39), CNFG_SBB1_A (0x3B) and CNFG_SBB2_A (0x3D)
metin.ozkan@analog.com 0:00d2a8670533 1235 *
metin.ozkan@analog.com 0:00d2a8670533 1236 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1237 * @param[in] voltV SIMO buck-boost channel x target output voltage field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1238 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
metin.ozkan@analog.com 0:00d2a8670533 1239 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1240 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1241 * 5.425V, 5.450V, 5.475V, 5.500V.
metin.ozkan@analog.com 0:00d2a8670533 1242 *
metin.ozkan@analog.com 0:00d2a8670533 1243 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1244 */
metin.ozkan@analog.com 0:00d2a8670533 1245 int set_tv_sbb_a(uint8_t channel, float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1246
metin.ozkan@analog.com 0:00d2a8670533 1247 /**
metin.ozkan@analog.com 0:00d2a8670533 1248 * @brief Get SIMO Buck-Boost Channel x Target Output Voltage.
metin.ozkan@analog.com 0:00d2a8670533 1249 * CNFG_SBB0_A (0x39), CNFG_SBB1_A (0x3B) and CNFG_SBB2_A (0x3D)
metin.ozkan@analog.com 0:00d2a8670533 1250 *
metin.ozkan@analog.com 0:00d2a8670533 1251 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1252 * @param[out] voltV SIMO buck-boost channel x target output voltage field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1253 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
metin.ozkan@analog.com 0:00d2a8670533 1254 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1255 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1256 * 5.425V, 5.450V, 5.475V, 5.500V.
metin.ozkan@analog.com 0:00d2a8670533 1257 *
metin.ozkan@analog.com 0:00d2a8670533 1258 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1259 */
metin.ozkan@analog.com 0:00d2a8670533 1260 int get_tv_sbb_a(uint8_t channel, float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1261
metin.ozkan@analog.com 0:00d2a8670533 1262 /**
metin.ozkan@analog.com 0:00d2a8670533 1263 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1264 *
metin.ozkan@analog.com 0:00d2a8670533 1265 * @details
metin.ozkan@analog.com 0:00d2a8670533 1266 * - Register : CNFG_SBB0_B (0x3A), CNFG_SBB1_B (0x3C) and CNFG_SBB2_B (0x3E)
metin.ozkan@analog.com 0:00d2a8670533 1267 * - Bit Fields : [7:6]
metin.ozkan@analog.com 0:00d2a8670533 1268 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1269 * - Description : Operation mode of SBB0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1270 */
metin.ozkan@analog.com 0:00d2a8670533 1271 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1272 OP_MODE_AUTOMATIC,
metin.ozkan@analog.com 0:00d2a8670533 1273 OP_MODE_BUCK_MODE,
metin.ozkan@analog.com 0:00d2a8670533 1274 OP_MODE_BOOST_MODE,
metin.ozkan@analog.com 0:00d2a8670533 1275 OP_MODE_BUCK_BOOST_MODE
metin.ozkan@analog.com 0:00d2a8670533 1276 }decode_op_mode_t;
metin.ozkan@analog.com 0:00d2a8670533 1277
metin.ozkan@analog.com 0:00d2a8670533 1278 /**
metin.ozkan@analog.com 0:00d2a8670533 1279 * @brief Set Operation mode of SBBx.
metin.ozkan@analog.com 0:00d2a8670533 1280 *
metin.ozkan@analog.com 0:00d2a8670533 1281 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1282 * @param[in] mode Operation mode of SBBx bit to be written.
metin.ozkan@analog.com 0:00d2a8670533 1283 *
metin.ozkan@analog.com 0:00d2a8670533 1284 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1285 */
metin.ozkan@analog.com 0:00d2a8670533 1286 int set_op_mode(uint8_t channel, decode_op_mode_t mode);
metin.ozkan@analog.com 0:00d2a8670533 1287
metin.ozkan@analog.com 0:00d2a8670533 1288 /**
metin.ozkan@analog.com 0:00d2a8670533 1289 * @brief Get Operation mode of SBBx.
metin.ozkan@analog.com 0:00d2a8670533 1290 *
metin.ozkan@analog.com 0:00d2a8670533 1291 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1292 * @param[out] mode Operation mode of SBBx bit to be read.
metin.ozkan@analog.com 0:00d2a8670533 1293 *
metin.ozkan@analog.com 0:00d2a8670533 1294 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1295 */
metin.ozkan@analog.com 0:00d2a8670533 1296 int get_op_mode(uint8_t channel, decode_op_mode_t *mode);
metin.ozkan@analog.com 0:00d2a8670533 1297
metin.ozkan@analog.com 0:00d2a8670533 1298 /**
metin.ozkan@analog.com 0:00d2a8670533 1299 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1300 *
metin.ozkan@analog.com 0:00d2a8670533 1301 * @details
metin.ozkan@analog.com 0:00d2a8670533 1302 * - Register : CNFG_SBB0_B (0x3A), CNFG_SBB1_B (0x3C) and CNFG_SBB2_B (0x3E)
metin.ozkan@analog.com 0:00d2a8670533 1303 * - Bit Fields : [5:4]
metin.ozkan@analog.com 0:00d2a8670533 1304 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1305 * - Description : SIMO Buck-Boost Channel 0, 1 or 2 Peak Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 1306 */
metin.ozkan@analog.com 0:00d2a8670533 1307 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1308 IP_SBB_AMP_1_000A,
metin.ozkan@analog.com 0:00d2a8670533 1309 IP_SBB_AMP_0_750A,
metin.ozkan@analog.com 0:00d2a8670533 1310 IP_SBB_AMP_0_500A,
metin.ozkan@analog.com 0:00d2a8670533 1311 IP_SBB_AMP_0_333A
metin.ozkan@analog.com 0:00d2a8670533 1312 }decode_ip_sbb_t;
metin.ozkan@analog.com 0:00d2a8670533 1313
metin.ozkan@analog.com 0:00d2a8670533 1314 /**
metin.ozkan@analog.com 0:00d2a8670533 1315 * @brief Set SIMO Buck-Boost Channel x Peak Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 1316 *
metin.ozkan@analog.com 0:00d2a8670533 1317 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1318 * @param[in] ip_sbb SIMO buck-boost channel 2 peak current limit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1319 *
metin.ozkan@analog.com 0:00d2a8670533 1320 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1321 */
metin.ozkan@analog.com 0:00d2a8670533 1322 int set_ip_sbb(uint8_t channel, decode_ip_sbb_t ip_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1323
metin.ozkan@analog.com 0:00d2a8670533 1324 /**
metin.ozkan@analog.com 0:00d2a8670533 1325 * @brief Get SIMO Buck-Boost Channel x Peak Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 1326 *
metin.ozkan@analog.com 0:00d2a8670533 1327 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1328 * @param[out] ip_sbb SIMO buck-boost channel 2 peak current limit field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1329 *
metin.ozkan@analog.com 0:00d2a8670533 1330 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1331 */
metin.ozkan@analog.com 0:00d2a8670533 1332 int get_ip_sbb(uint8_t channel, decode_ip_sbb_t *ip_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1333
metin.ozkan@analog.com 0:00d2a8670533 1334 /**
metin.ozkan@analog.com 0:00d2a8670533 1335 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1336 *
metin.ozkan@analog.com 0:00d2a8670533 1337 * @details
metin.ozkan@analog.com 0:00d2a8670533 1338 * - Register : CNFG_SBB0_B (0x3A), CNFG_SBB1_B (0x3C) and CNFG_SBB2_B (0x3E)
metin.ozkan@analog.com 0:00d2a8670533 1339 * - Bit Fields : [3]
metin.ozkan@analog.com 0:00d2a8670533 1340 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1341 * - Description : SIMO Buck-Boost Channel 0, 1 or 2 Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1342 */
metin.ozkan@analog.com 0:00d2a8670533 1343 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1344 ADE_SBB_DISABLED,
metin.ozkan@analog.com 0:00d2a8670533 1345 ADE_SBB_ENABLED
metin.ozkan@analog.com 0:00d2a8670533 1346 }decode_ade_sbb_t;
metin.ozkan@analog.com 0:00d2a8670533 1347
metin.ozkan@analog.com 0:00d2a8670533 1348 /**
metin.ozkan@analog.com 0:00d2a8670533 1349 * @brief Set SIMO Buck-Boost Channel x Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1350 *
metin.ozkan@analog.com 0:00d2a8670533 1351 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1352 * @param[in] ade_sbb SIMO buck-boost channel 2 active-discharge enable bit to be written.
metin.ozkan@analog.com 0:00d2a8670533 1353 *
metin.ozkan@analog.com 0:00d2a8670533 1354 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1355 */
metin.ozkan@analog.com 0:00d2a8670533 1356 int set_ade_sbb(uint8_t channel, decode_ade_sbb_t ade_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1357
metin.ozkan@analog.com 0:00d2a8670533 1358 /**
metin.ozkan@analog.com 0:00d2a8670533 1359 * @brief Get SIMO Buck-Boost Channel x Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1360 *
metin.ozkan@analog.com 0:00d2a8670533 1361 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1362 * @param[out] ade_sbb SIMO buck-boost channel 2 active-discharge enable bit to be read.
metin.ozkan@analog.com 0:00d2a8670533 1363 *
metin.ozkan@analog.com 0:00d2a8670533 1364 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1365 */
metin.ozkan@analog.com 0:00d2a8670533 1366 int get_ade_sbb(uint8_t channel, decode_ade_sbb_t *ade_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1367
metin.ozkan@analog.com 0:00d2a8670533 1368 /**
metin.ozkan@analog.com 0:00d2a8670533 1369 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1370 *
metin.ozkan@analog.com 0:00d2a8670533 1371 * @details
metin.ozkan@analog.com 0:00d2a8670533 1372 * - Register : CNFG_SBB0_B (0x3A), CNFG_SBB1_B (0x3C) and CNFG_SBB2_B (0x3E)
metin.ozkan@analog.com 0:00d2a8670533 1373 * - Bit Fields : [2:0]
metin.ozkan@analog.com 0:00d2a8670533 1374 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1375 * - Description : Enable Control for SIMO Buck-Boost Channel 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1376 */
metin.ozkan@analog.com 0:00d2a8670533 1377 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1378 EN_SBB_FPS_SLOT_0,
metin.ozkan@analog.com 0:00d2a8670533 1379 EN_SBB_FPS_SLOT_1,
metin.ozkan@analog.com 0:00d2a8670533 1380 EN_SBB_FPS_SLOT_2,
metin.ozkan@analog.com 0:00d2a8670533 1381 EN_SBB_FPS_SLOT_3,
metin.ozkan@analog.com 0:00d2a8670533 1382 EN_SBB_OFF,
metin.ozkan@analog.com 0:00d2a8670533 1383 EN_SBB_SAME_AS_0X04,
metin.ozkan@analog.com 0:00d2a8670533 1384 EN_SBB_ON,
metin.ozkan@analog.com 0:00d2a8670533 1385 EN_SBB_SAME_AS_0X06
metin.ozkan@analog.com 0:00d2a8670533 1386 }decode_en_sbb_t;
metin.ozkan@analog.com 0:00d2a8670533 1387
metin.ozkan@analog.com 0:00d2a8670533 1388 /**
metin.ozkan@analog.com 0:00d2a8670533 1389 * @brief Set Enable Control for SIMO Buck-Boost Channel x.
metin.ozkan@analog.com 0:00d2a8670533 1390 *
metin.ozkan@analog.com 0:00d2a8670533 1391 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1392 * @param[in] en_sbb Enable control for SIMO buck-boost channel x field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1393 *
metin.ozkan@analog.com 0:00d2a8670533 1394 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1395 */
metin.ozkan@analog.com 0:00d2a8670533 1396 int set_en_sbb(uint8_t channel, decode_en_sbb_t en_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1397
metin.ozkan@analog.com 0:00d2a8670533 1398 /**
metin.ozkan@analog.com 0:00d2a8670533 1399 * @brief Get Enable Control for SIMO Buck-Boost Channel x.
metin.ozkan@analog.com 0:00d2a8670533 1400 *
metin.ozkan@analog.com 0:00d2a8670533 1401 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1402 * @param[out] en_sbb Enable control for SIMO buck-boost channel x field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1403 *
metin.ozkan@analog.com 0:00d2a8670533 1404 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1405 */
metin.ozkan@analog.com 0:00d2a8670533 1406 int get_en_sbb(uint8_t channel, decode_en_sbb_t *en_sbb);
metin.ozkan@analog.com 0:00d2a8670533 1407
metin.ozkan@analog.com 0:00d2a8670533 1408 /**
metin.ozkan@analog.com 0:00d2a8670533 1409 * @brief Set SIMO Buck-Boost Channel 0 Target Output Voltage.
metin.ozkan@analog.com 0:00d2a8670533 1410 * Bit 7:0 of CNFG_DVS_SBB0_A (0x3F).
metin.ozkan@analog.com 0:00d2a8670533 1411 *
metin.ozkan@analog.com 0:00d2a8670533 1412 * @param[in] voltV SIMO buck-boost channel 0 target output voltage field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1413 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
metin.ozkan@analog.com 0:00d2a8670533 1414 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1415 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1416 * 5.425V, 5.450V, 5.475V, 5.500V.
metin.ozkan@analog.com 0:00d2a8670533 1417 *
metin.ozkan@analog.com 0:00d2a8670533 1418 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1419 */
metin.ozkan@analog.com 0:00d2a8670533 1420 int set_tv_sbb_dvs(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1421
metin.ozkan@analog.com 0:00d2a8670533 1422 /**
metin.ozkan@analog.com 0:00d2a8670533 1423 * @brief Get SIMO Buck-Boost Channel 0 Target Output Voltage.
metin.ozkan@analog.com 0:00d2a8670533 1424 * Bit 7:0 of CNFG_DVS_SBB0_A (0x3F).
metin.ozkan@analog.com 0:00d2a8670533 1425 *
metin.ozkan@analog.com 0:00d2a8670533 1426 * @param[out] voltV SIMO buck-boost channel 0 target output voltage field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1427 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
metin.ozkan@analog.com 0:00d2a8670533 1428 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1429 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1430 * 5.425V, 5.450V, 5.475V, 5.500V.
metin.ozkan@analog.com 0:00d2a8670533 1431 *
metin.ozkan@analog.com 0:00d2a8670533 1432 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1433 */
metin.ozkan@analog.com 0:00d2a8670533 1434 int get_tv_sbb_dvs(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1435
metin.ozkan@analog.com 0:00d2a8670533 1436 /*LDO*/
metin.ozkan@analog.com 0:00d2a8670533 1437
metin.ozkan@analog.com 0:00d2a8670533 1438 /**
metin.ozkan@analog.com 0:00d2a8670533 1439 * @brief Set LDO Output Channel x Target Output Voltage. Bit 6:0.
metin.ozkan@analog.com 0:00d2a8670533 1440 * CNFG_LDO0_A (0x48) and CNFG_LDO1_A (0x4A)
metin.ozkan@analog.com 0:00d2a8670533 1441 *
metin.ozkan@analog.com 0:00d2a8670533 1442 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1443 * @param[in] voltV LDO Output Channel x target output voltage field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1444 * LDOx = 500mV + 25mV x TV_LDOx[6:0]
metin.ozkan@analog.com 0:00d2a8670533 1445 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1446 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1447 * 3.650, 3.675.
metin.ozkan@analog.com 0:00d2a8670533 1448 *
metin.ozkan@analog.com 0:00d2a8670533 1449 * When TV_LDO[7] = 0, TV_LDO[6:0] sets the
metin.ozkan@analog.com 0:00d2a8670533 1450 * LDO's output voltage range from 0.5V to 3.675V.
metin.ozkan@analog.com 0:00d2a8670533 1451 * When TV_LDO[7] = 1, TV_LDO[6:0] sets the
metin.ozkan@analog.com 0:00d2a8670533 1452 * LDO's output voltage from 1.825V to 5V.
metin.ozkan@analog.com 0:00d2a8670533 1453 *
metin.ozkan@analog.com 0:00d2a8670533 1454 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1455 */
metin.ozkan@analog.com 0:00d2a8670533 1456 int set_tv_ldo_volt_a(uint8_t channel, float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1457
metin.ozkan@analog.com 0:00d2a8670533 1458 /**
metin.ozkan@analog.com 0:00d2a8670533 1459 * @brief Get LDO Output Channel x Target Output Voltage. Bit 6:0.
metin.ozkan@analog.com 0:00d2a8670533 1460 * CNFG_LDO0_A (0x48) and CNFG_LDO1_A (0x4A)
metin.ozkan@analog.com 0:00d2a8670533 1461 *
metin.ozkan@analog.com 0:00d2a8670533 1462 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1463 * @param[out] voltV LDO Output Channel x target output voltage field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1464 * LDOx = 500mV + 25mV x TV_LDOx[6:0]
metin.ozkan@analog.com 0:00d2a8670533 1465 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
metin.ozkan@analog.com 0:00d2a8670533 1466 * 0.650V, 0.675V, 0.700V, ...
metin.ozkan@analog.com 0:00d2a8670533 1467 * 3.650, 3.675.
metin.ozkan@analog.com 0:00d2a8670533 1468 *
metin.ozkan@analog.com 0:00d2a8670533 1469 * When TV_LDO[7] = 0, TV_LDO[6:0] sets the
metin.ozkan@analog.com 0:00d2a8670533 1470 * LDO's output voltage range from 0.5V to 3.675V.
metin.ozkan@analog.com 0:00d2a8670533 1471 * When TV_LDO[7] = 1, TV_LDO[6:0] sets the
metin.ozkan@analog.com 0:00d2a8670533 1472 * LDO's output voltage from 1.825V to 5V.
metin.ozkan@analog.com 0:00d2a8670533 1473 *
metin.ozkan@analog.com 0:00d2a8670533 1474 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1475 */
metin.ozkan@analog.com 0:00d2a8670533 1476 int get_tv_ldo_volt_a(uint8_t channel, float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1477
metin.ozkan@analog.com 0:00d2a8670533 1478 /**
metin.ozkan@analog.com 0:00d2a8670533 1479 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1480 *
metin.ozkan@analog.com 0:00d2a8670533 1481 * @details
metin.ozkan@analog.com 0:00d2a8670533 1482 * - Register : CNFG_LDO0_A (0x48) and CNFG_LDO1_A (0x4A)
metin.ozkan@analog.com 0:00d2a8670533 1483 * - Bit Fields : [7]
metin.ozkan@analog.com 0:00d2a8670533 1484 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1485 * - Description : SIMO Buck-Boost Channel 0, 1 or 2 Peak Current Limit.
metin.ozkan@analog.com 0:00d2a8670533 1486 */
metin.ozkan@analog.com 0:00d2a8670533 1487 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1488 TV_LDO0_A_NO_OFFSET,
metin.ozkan@analog.com 0:00d2a8670533 1489 TV_LDO0_A_NO_1_325V
metin.ozkan@analog.com 0:00d2a8670533 1490 }decode_tv_ldo_offset_a_t;
metin.ozkan@analog.com 0:00d2a8670533 1491
metin.ozkan@analog.com 0:00d2a8670533 1492 /**
metin.ozkan@analog.com 0:00d2a8670533 1493 * @brief Set LDO Output Channel x Target Output Voltage. Bit 7.
metin.ozkan@analog.com 0:00d2a8670533 1494 * CNFG_LDO0_A (0x48) and CNFG_LDO1_A (0x4A)
metin.ozkan@analog.com 0:00d2a8670533 1495 *
metin.ozkan@analog.com 0:00d2a8670533 1496 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1497 * @param[in] offset LDO Output Channel x target output voltage offset field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1498 * 0b0 = No Offset
metin.ozkan@analog.com 0:00d2a8670533 1499 * 0b1 = 1.325V Offset
metin.ozkan@analog.com 0:00d2a8670533 1500 *
metin.ozkan@analog.com 0:00d2a8670533 1501 *
metin.ozkan@analog.com 0:00d2a8670533 1502 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1503 */
metin.ozkan@analog.com 0:00d2a8670533 1504 int set_tv_ldo_offset_a(uint8_t channel, decode_tv_ldo_offset_a_t offset);
metin.ozkan@analog.com 0:00d2a8670533 1505
metin.ozkan@analog.com 0:00d2a8670533 1506 /**
metin.ozkan@analog.com 0:00d2a8670533 1507 * @brief Get LDO Output Channel x Target Output Voltage. Bit 7.
metin.ozkan@analog.com 0:00d2a8670533 1508 * CNFG_LDO0_A (0x48) and CNFG_LDO1_A (0x4A)
metin.ozkan@analog.com 0:00d2a8670533 1509 *
metin.ozkan@analog.com 0:00d2a8670533 1510 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1511 * @param[out] offset LDO Output Channel x target output voltage offset field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1512 * 0b0 = No Offset
metin.ozkan@analog.com 0:00d2a8670533 1513 * 0b1 = 1.325V Offset
metin.ozkan@analog.com 0:00d2a8670533 1514 *
metin.ozkan@analog.com 0:00d2a8670533 1515 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1516 */
metin.ozkan@analog.com 0:00d2a8670533 1517 int get_tv_ldo_offset_a(uint8_t channel, decode_tv_ldo_offset_a_t *offset);
metin.ozkan@analog.com 0:00d2a8670533 1518
metin.ozkan@analog.com 0:00d2a8670533 1519 /**
metin.ozkan@analog.com 0:00d2a8670533 1520 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1521 *
metin.ozkan@analog.com 0:00d2a8670533 1522 * @details
metin.ozkan@analog.com 0:00d2a8670533 1523 * - Register : CNFG_LDO0_B (0x49) and CNFG_LDO1_B (0x4B)
metin.ozkan@analog.com 0:00d2a8670533 1524 * - Bit Fields : [2:0]
metin.ozkan@analog.com 0:00d2a8670533 1525 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1526 * - Description : Enable Control for LDO 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1527 */
metin.ozkan@analog.com 0:00d2a8670533 1528 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1529 EN_LDO_FPS_SLOT_0,
metin.ozkan@analog.com 0:00d2a8670533 1530 EN_LDO_FPS_SLOT_1,
metin.ozkan@analog.com 0:00d2a8670533 1531 EN_LDO_FPS_SLOT_2,
metin.ozkan@analog.com 0:00d2a8670533 1532 EN_LDO_FPS_SLOT_3,
metin.ozkan@analog.com 0:00d2a8670533 1533 EN_LDO_OFF,
metin.ozkan@analog.com 0:00d2a8670533 1534 EN_LDO_SAME_AS_0X04,
metin.ozkan@analog.com 0:00d2a8670533 1535 EN_LDO_ON,
metin.ozkan@analog.com 0:00d2a8670533 1536 EN_LDO_SAME_AS_0X06
metin.ozkan@analog.com 0:00d2a8670533 1537 }decode_en_ldo_t;
metin.ozkan@analog.com 0:00d2a8670533 1538
metin.ozkan@analog.com 0:00d2a8670533 1539 /**
metin.ozkan@analog.com 0:00d2a8670533 1540 * @brief Set Enable Control for LDO Channel x.
metin.ozkan@analog.com 0:00d2a8670533 1541 *
metin.ozkan@analog.com 0:00d2a8670533 1542 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1543 * @param[in] en_ldo Enable control for LDO channel x field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1544 *
metin.ozkan@analog.com 0:00d2a8670533 1545 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1546 */
metin.ozkan@analog.com 0:00d2a8670533 1547 int set_en_ldo(uint8_t channel, decode_en_ldo_t en_ldo);
metin.ozkan@analog.com 0:00d2a8670533 1548
metin.ozkan@analog.com 0:00d2a8670533 1549 /**
metin.ozkan@analog.com 0:00d2a8670533 1550 * @brief Get Enable Control for LDO Channel x.
metin.ozkan@analog.com 0:00d2a8670533 1551 *
metin.ozkan@analog.com 0:00d2a8670533 1552 * @param[in] channel Channel number: 0, 1 or 2.
metin.ozkan@analog.com 0:00d2a8670533 1553 * @param[out] en_ldo Enable control for LDO channel x field to be read.
metin.ozkan@analog.com 0:00d2a8670533 1554 *
metin.ozkan@analog.com 0:00d2a8670533 1555 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1556 */
metin.ozkan@analog.com 0:00d2a8670533 1557 int get_en_ldo(uint8_t channel, decode_en_ldo_t *en_ldo);
metin.ozkan@analog.com 0:00d2a8670533 1558
metin.ozkan@analog.com 0:00d2a8670533 1559 /**
metin.ozkan@analog.com 0:00d2a8670533 1560 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1561 *
metin.ozkan@analog.com 0:00d2a8670533 1562 * @details
metin.ozkan@analog.com 0:00d2a8670533 1563 * - Register : CNFG_LDO0_B (0x49) and CNFG_LDO1_B (0x4B)
metin.ozkan@analog.com 0:00d2a8670533 1564 * - Bit Fields : [3]
metin.ozkan@analog.com 0:00d2a8670533 1565 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1566 * - Description : LDO Channel 0 or 1 Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1567 */
metin.ozkan@analog.com 0:00d2a8670533 1568 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1569 ADE_LDO_DISABLED,
metin.ozkan@analog.com 0:00d2a8670533 1570 ADE_LDO_ENABLED
metin.ozkan@analog.com 0:00d2a8670533 1571 }decode_ade_ldo_t;
metin.ozkan@analog.com 0:00d2a8670533 1572
metin.ozkan@analog.com 0:00d2a8670533 1573 /**
metin.ozkan@analog.com 0:00d2a8670533 1574 * @brief Set LDO Channel x Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1575 *
metin.ozkan@analog.com 0:00d2a8670533 1576 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1577 * @param[in] ade_ldo LDO channel x active-discharge enable bit to be written.
metin.ozkan@analog.com 0:00d2a8670533 1578 *
metin.ozkan@analog.com 0:00d2a8670533 1579 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1580 */
metin.ozkan@analog.com 0:00d2a8670533 1581 int set_ade_ldo(uint8_t channel, decode_ade_ldo_t ade_ldo);
metin.ozkan@analog.com 0:00d2a8670533 1582
metin.ozkan@analog.com 0:00d2a8670533 1583 /**
metin.ozkan@analog.com 0:00d2a8670533 1584 * @brief Get LDO Channel x Active-Discharge Enable.
metin.ozkan@analog.com 0:00d2a8670533 1585 *
metin.ozkan@analog.com 0:00d2a8670533 1586 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1587 * @param[out] ade_ldo LDO channel x active-discharge enable bit to be read.
metin.ozkan@analog.com 0:00d2a8670533 1588 *
metin.ozkan@analog.com 0:00d2a8670533 1589 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1590 */
metin.ozkan@analog.com 0:00d2a8670533 1591 int get_ade_ldo(uint8_t channel, decode_ade_ldo_t *ade_ldo);
metin.ozkan@analog.com 0:00d2a8670533 1592
metin.ozkan@analog.com 0:00d2a8670533 1593 /**
metin.ozkan@analog.com 0:00d2a8670533 1594 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1595 *
metin.ozkan@analog.com 0:00d2a8670533 1596 * @details
metin.ozkan@analog.com 0:00d2a8670533 1597 * - Register : CNFG_LDO0_B (0x49) and CNFG_LDO1_B (0x4B)
metin.ozkan@analog.com 0:00d2a8670533 1598 * - Bit Fields : [4]
metin.ozkan@analog.com 0:00d2a8670533 1599 * - Default : 0x0
metin.ozkan@analog.com 0:00d2a8670533 1600 * - Description : Operation mode of LDO 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1601 */
metin.ozkan@analog.com 0:00d2a8670533 1602 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1603 LDO_MD_LDO_MODE,
metin.ozkan@analog.com 0:00d2a8670533 1604 LDO_MD_LSW_MODE
metin.ozkan@analog.com 0:00d2a8670533 1605 }decode_ldo_md_t;
metin.ozkan@analog.com 0:00d2a8670533 1606
metin.ozkan@analog.com 0:00d2a8670533 1607 /**
metin.ozkan@analog.com 0:00d2a8670533 1608 * @brief Set Operation mode of LDOx.
metin.ozkan@analog.com 0:00d2a8670533 1609 *
metin.ozkan@analog.com 0:00d2a8670533 1610 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1611 * @param[in] mode Operation mode of LDOx bit to be written.
metin.ozkan@analog.com 0:00d2a8670533 1612 *
metin.ozkan@analog.com 0:00d2a8670533 1613 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1614 */
metin.ozkan@analog.com 0:00d2a8670533 1615 int set_ldo_md(uint8_t channel, decode_ldo_md_t mode);
metin.ozkan@analog.com 0:00d2a8670533 1616
metin.ozkan@analog.com 0:00d2a8670533 1617 /**
metin.ozkan@analog.com 0:00d2a8670533 1618 * @brief Get Operation mode of LDOx.
metin.ozkan@analog.com 0:00d2a8670533 1619 *
metin.ozkan@analog.com 0:00d2a8670533 1620 * @param[in] channel Channel number: 0 or 1.
metin.ozkan@analog.com 0:00d2a8670533 1621 * @param[out] mode Operation mode of LDOx bit to be read.
metin.ozkan@analog.com 0:00d2a8670533 1622 *
metin.ozkan@analog.com 0:00d2a8670533 1623 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1624 */
metin.ozkan@analog.com 0:00d2a8670533 1625 int get_ldo_md(uint8_t channel, decode_ldo_md_t *mode);
metin.ozkan@analog.com 0:00d2a8670533 1626
metin.ozkan@analog.com 0:00d2a8670533 1627 /*FuelGauge*/
metin.ozkan@analog.com 0:00d2a8670533 1628 /*Status and Configuration Registers*/
metin.ozkan@analog.com 0:00d2a8670533 1629
metin.ozkan@analog.com 0:00d2a8670533 1630 /**
metin.ozkan@analog.com 0:00d2a8670533 1631 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1632 *
metin.ozkan@analog.com 0:00d2a8670533 1633 * @details
metin.ozkan@analog.com 0:00d2a8670533 1634 * - Register : Fuel-gauge Status (0x00)
metin.ozkan@analog.com 0:00d2a8670533 1635 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 1636 * - Default : 0x0000
metin.ozkan@analog.com 0:00d2a8670533 1637 * - Description : All Status register bit fields.
metin.ozkan@analog.com 0:00d2a8670533 1638 */
metin.ozkan@analog.com 0:00d2a8670533 1639 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1640 Status_Imn,
metin.ozkan@analog.com 0:00d2a8670533 1641 Status_POR,
metin.ozkan@analog.com 0:00d2a8670533 1642 Status_SPR_2,
metin.ozkan@analog.com 0:00d2a8670533 1643 Status_Bst,
metin.ozkan@analog.com 0:00d2a8670533 1644 Status_Isysmx,
metin.ozkan@analog.com 0:00d2a8670533 1645 Status_SPR_5,
metin.ozkan@analog.com 0:00d2a8670533 1646 Status_ThmHot,
metin.ozkan@analog.com 0:00d2a8670533 1647 Status_dSOCi,
metin.ozkan@analog.com 0:00d2a8670533 1648 Status_Vmn,
metin.ozkan@analog.com 0:00d2a8670533 1649 Status_Tmn,
metin.ozkan@analog.com 0:00d2a8670533 1650 Status_Smn,
metin.ozkan@analog.com 0:00d2a8670533 1651 Status_Bi,
metin.ozkan@analog.com 0:00d2a8670533 1652 Status_Vmx,
metin.ozkan@analog.com 0:00d2a8670533 1653 Status_Tmx,
metin.ozkan@analog.com 0:00d2a8670533 1654 Status_Smx,
metin.ozkan@analog.com 0:00d2a8670533 1655 Status_Br
metin.ozkan@analog.com 0:00d2a8670533 1656 }reg_bit_status_t;
metin.ozkan@analog.com 0:00d2a8670533 1657
metin.ozkan@analog.com 0:00d2a8670533 1658 /**
metin.ozkan@analog.com 0:00d2a8670533 1659 * @brief Set bit field of Fuel-gauge Status[15:0] (0x00) register.
metin.ozkan@analog.com 0:00d2a8670533 1660 *
metin.ozkan@analog.com 0:00d2a8670533 1661 * @param[in] bit_field Status bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1662 * @param[in] status to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1663 *
metin.ozkan@analog.com 0:00d2a8670533 1664 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1665 */
metin.ozkan@analog.com 0:00d2a8670533 1666 int set_fg_status(reg_bit_status_t bit_field, uint8_t status);
metin.ozkan@analog.com 0:00d2a8670533 1667
metin.ozkan@analog.com 0:00d2a8670533 1668 /**
metin.ozkan@analog.com 0:00d2a8670533 1669 * @brief Get bit field of Fuel-gauge Status[15:0] (0x00) register.
metin.ozkan@analog.com 0:00d2a8670533 1670 *
metin.ozkan@analog.com 0:00d2a8670533 1671 * @param[in] bit_field Status bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1672 * @param[out] status Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1673 *
metin.ozkan@analog.com 0:00d2a8670533 1674 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1675 */
metin.ozkan@analog.com 0:00d2a8670533 1676 int get_fg_status(reg_bit_status_t bit_field, uint8_t *status);
metin.ozkan@analog.com 0:00d2a8670533 1677
metin.ozkan@analog.com 0:00d2a8670533 1678 /**
metin.ozkan@analog.com 0:00d2a8670533 1679 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1680 *
metin.ozkan@analog.com 0:00d2a8670533 1681 * @details
metin.ozkan@analog.com 0:00d2a8670533 1682 * - Register : Fuel-gauge VAlrtTh (0x01)
metin.ozkan@analog.com 0:00d2a8670533 1683 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 1684 * - Default : 0xFF00 (Disabled)
metin.ozkan@analog.com 0:00d2a8670533 1685 * - Description : The VAlrtTh register sets upper and lower limits that generate an alert if exceeded by the VCell register value.
metin.ozkan@analog.com 0:00d2a8670533 1686 */
metin.ozkan@analog.com 0:00d2a8670533 1687 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1688 VAlrtTh_MinVoltageAlrt,
metin.ozkan@analog.com 0:00d2a8670533 1689 VAlrtTh_MaxVoltageAlrt
metin.ozkan@analog.com 0:00d2a8670533 1690 }reg_bit_valrt_th_t;
metin.ozkan@analog.com 0:00d2a8670533 1691
metin.ozkan@analog.com 0:00d2a8670533 1692 /**
metin.ozkan@analog.com 0:00d2a8670533 1693 * @brief Set bit field of fuel-gauge VAlrtTh (0x01) register.
metin.ozkan@analog.com 0:00d2a8670533 1694 *
metin.ozkan@analog.com 0:00d2a8670533 1695 * @param[in] bit_field VAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1696 * @param[in] voltV to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1697 * Interrupt threshold limits are selectable with 20mV resolution
metin.ozkan@analog.com 0:00d2a8670533 1698 * over the full operating range of the VCell register.
metin.ozkan@analog.com 0:00d2a8670533 1699 *
metin.ozkan@analog.com 0:00d2a8670533 1700 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1701 */
metin.ozkan@analog.com 0:00d2a8670533 1702 int set_fg_valrt_th(reg_bit_valrt_th_t bit_field, float voltV);
metin.ozkan@analog.com 0:00d2a8670533 1703
metin.ozkan@analog.com 0:00d2a8670533 1704 /**
metin.ozkan@analog.com 0:00d2a8670533 1705 * @brief Get bit field of fuel-gauge VAlrtTh (0x01) register.
metin.ozkan@analog.com 0:00d2a8670533 1706 *
metin.ozkan@analog.com 0:00d2a8670533 1707 * @param[in] bit_field VAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1708 * @param[out] voltV Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1709 * Interrupt threshold limits are selectable with 20mV resolution
metin.ozkan@analog.com 0:00d2a8670533 1710 * over the full operating range of the VCell register.
metin.ozkan@analog.com 0:00d2a8670533 1711 *
metin.ozkan@analog.com 0:00d2a8670533 1712 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1713 */
metin.ozkan@analog.com 0:00d2a8670533 1714 int get_fg_valrt_th(reg_bit_valrt_th_t bit_field, float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 1715
metin.ozkan@analog.com 0:00d2a8670533 1716 /**
metin.ozkan@analog.com 0:00d2a8670533 1717 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1718 *
metin.ozkan@analog.com 0:00d2a8670533 1719 * @details
metin.ozkan@analog.com 0:00d2a8670533 1720 * - Register : Fuel-gauge TAlrtTh (0x02)
metin.ozkan@analog.com 0:00d2a8670533 1721 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 1722 * - Default : 0x7F80 (Disabled)
metin.ozkan@analog.com 0:00d2a8670533 1723 * - Description : All TAlrtTh register bit fields.
metin.ozkan@analog.com 0:00d2a8670533 1724 */
metin.ozkan@analog.com 0:00d2a8670533 1725 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1726 TAlrtTh_MinTempAlrt,
metin.ozkan@analog.com 0:00d2a8670533 1727 TAlrtTh_MaxTempAlrt
metin.ozkan@analog.com 0:00d2a8670533 1728 }reg_bit_talrt_th_t;
metin.ozkan@analog.com 0:00d2a8670533 1729
metin.ozkan@analog.com 0:00d2a8670533 1730 /**
metin.ozkan@analog.com 0:00d2a8670533 1731 * @brief Set bit field of fuel-gauge TAlrtTh (0x02) register.
metin.ozkan@analog.com 0:00d2a8670533 1732 *
metin.ozkan@analog.com 0:00d2a8670533 1733 * @param[in] bit_field TAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1734 * @param[in] tempDegC to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1735 * Interrupt threshold limits are stored in two’s-complement format
metin.ozkan@analog.com 0:00d2a8670533 1736 * with 1°C resolution over the full operating range of the Temp register.
metin.ozkan@analog.com 0:00d2a8670533 1737 *
metin.ozkan@analog.com 0:00d2a8670533 1738 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1739 */
metin.ozkan@analog.com 0:00d2a8670533 1740 int set_fg_talrt_th(reg_bit_talrt_th_t bit_field, int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 1741
metin.ozkan@analog.com 0:00d2a8670533 1742 /**
metin.ozkan@analog.com 0:00d2a8670533 1743 * @brief Get bit field of fuel-gauge TAlrtTh (0x02) register.
metin.ozkan@analog.com 0:00d2a8670533 1744 *
metin.ozkan@analog.com 0:00d2a8670533 1745 * @param[in] bit_field TAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1746 * @param[out] tempDegC Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1747 * Interrupt threshold limits are stored in two’s-complement format
metin.ozkan@analog.com 0:00d2a8670533 1748 * with 1°C resolution over the full operating range of the Temp register.
metin.ozkan@analog.com 0:00d2a8670533 1749 *
metin.ozkan@analog.com 0:00d2a8670533 1750 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1751 */
metin.ozkan@analog.com 0:00d2a8670533 1752 int get_fg_talrt_th(reg_bit_talrt_th_t bit_field, int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 1753
metin.ozkan@analog.com 0:00d2a8670533 1754 /**
metin.ozkan@analog.com 0:00d2a8670533 1755 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1756 *
metin.ozkan@analog.com 0:00d2a8670533 1757 * @details
metin.ozkan@analog.com 0:00d2a8670533 1758 * - Register : Fuel-gauge SAlrtTh (0x03)
metin.ozkan@analog.com 0:00d2a8670533 1759 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 1760 * - Default : 0xFF00
metin.ozkan@analog.com 0:00d2a8670533 1761 * - Description : The SAlrtTh register sets upper and lower limits that generate an alert if exceeded by RepSOC.
metin.ozkan@analog.com 0:00d2a8670533 1762 */
metin.ozkan@analog.com 0:00d2a8670533 1763 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1764 SAlrtTh_MinSocAlrt,
metin.ozkan@analog.com 0:00d2a8670533 1765 SAlrtTh_MaxSocAlrt
metin.ozkan@analog.com 0:00d2a8670533 1766 }reg_bit_salrt_th_t;
metin.ozkan@analog.com 0:00d2a8670533 1767
metin.ozkan@analog.com 0:00d2a8670533 1768 /**
metin.ozkan@analog.com 0:00d2a8670533 1769 * @brief Set bit field of fuel-gauge SAlrtTh (0x03) register.
metin.ozkan@analog.com 0:00d2a8670533 1770 *
metin.ozkan@analog.com 0:00d2a8670533 1771 * @param[in] bit_field SAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1772 * @param[in] soc to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1773 * Interrupt threshold limits are configurable with 1% resolution
metin.ozkan@analog.com 0:00d2a8670533 1774 * over the full operating range of the RepSOC register.
metin.ozkan@analog.com 0:00d2a8670533 1775 *
metin.ozkan@analog.com 0:00d2a8670533 1776 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1777 */
metin.ozkan@analog.com 0:00d2a8670533 1778 int set_fg_salrt_th(reg_bit_salrt_th_t bit_field, uint8_t soc);
metin.ozkan@analog.com 0:00d2a8670533 1779
metin.ozkan@analog.com 0:00d2a8670533 1780 /**
metin.ozkan@analog.com 0:00d2a8670533 1781 * @brief Get bit field of fuel-gauge SAlrtTh (0x03) register.
metin.ozkan@analog.com 0:00d2a8670533 1782 *
metin.ozkan@analog.com 0:00d2a8670533 1783 * @param[in] bit_field SAlrtTh register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 1784 * @param[out] soc Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1785 * Interrupt threshold limits are configurable with 1% resolution
metin.ozkan@analog.com 0:00d2a8670533 1786 * over the full operating range of the RepSOC register.
metin.ozkan@analog.com 0:00d2a8670533 1787 *
metin.ozkan@analog.com 0:00d2a8670533 1788 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1789 */
metin.ozkan@analog.com 0:00d2a8670533 1790 int get_fg_salrt_th(reg_bit_salrt_th_t bit_field, uint8_t *soc);
metin.ozkan@analog.com 0:00d2a8670533 1791
metin.ozkan@analog.com 0:00d2a8670533 1792 /**
metin.ozkan@analog.com 0:00d2a8670533 1793 * @brief Set bit field of fuel-gauge FullSocThr (0x13) register.
metin.ozkan@analog.com 0:00d2a8670533 1794 *
metin.ozkan@analog.com 0:00d2a8670533 1795 * @param[in] soc_thr to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1796 * FullSOCThr comes from OTP if the OTP register is enabled.
metin.ozkan@analog.com 0:00d2a8670533 1797 * Otherwise it POR’s to a default of 95%.
metin.ozkan@analog.com 0:00d2a8670533 1798 * LSB unit is 1/256%.
metin.ozkan@analog.com 0:00d2a8670533 1799 *
metin.ozkan@analog.com 0:00d2a8670533 1800 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1801 */
metin.ozkan@analog.com 0:00d2a8670533 1802 int set_fg_full_soc_thr(float soc_thr);
metin.ozkan@analog.com 0:00d2a8670533 1803
metin.ozkan@analog.com 0:00d2a8670533 1804 /**
metin.ozkan@analog.com 0:00d2a8670533 1805 * @brief Get bit field of fuel-gauge FullSocThr (0x13) register.
metin.ozkan@analog.com 0:00d2a8670533 1806 *
metin.ozkan@analog.com 0:00d2a8670533 1807 * @param[out] soc_thr Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1808 * FullSOCThr comes from OTP if the OTP register is enabled.
metin.ozkan@analog.com 0:00d2a8670533 1809 * Otherwise it POR’s to a default of 95%.
metin.ozkan@analog.com 0:00d2a8670533 1810 * LSB unit is 1/256%.
metin.ozkan@analog.com 0:00d2a8670533 1811 *
metin.ozkan@analog.com 0:00d2a8670533 1812 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1813 */
metin.ozkan@analog.com 0:00d2a8670533 1814 int get_fg_full_soc_thr(float *soc_thr);
metin.ozkan@analog.com 0:00d2a8670533 1815
metin.ozkan@analog.com 0:00d2a8670533 1816 /**
metin.ozkan@analog.com 0:00d2a8670533 1817 * @brief Set bit field of fuel-gauge DesignCap (0x18) register.
metin.ozkan@analog.com 0:00d2a8670533 1818 *
metin.ozkan@analog.com 0:00d2a8670533 1819 * @param[in] capacitymAh to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1820 * LSB unit is 0.1mAh. Min is 0.0mAh and Max is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 1821 *
metin.ozkan@analog.com 0:00d2a8670533 1822 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1823 */
metin.ozkan@analog.com 0:00d2a8670533 1824 int set_fg_design_cap(float capacitymAh);
metin.ozkan@analog.com 0:00d2a8670533 1825
metin.ozkan@analog.com 0:00d2a8670533 1826 /**
metin.ozkan@analog.com 0:00d2a8670533 1827 * @brief Get bit field of fuel-gauge DesignCap (0x18) register.
metin.ozkan@analog.com 0:00d2a8670533 1828 *
metin.ozkan@analog.com 0:00d2a8670533 1829 * @param[out] capacitymAh Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1830 * LSB unit is 0.1mAh. Min is 0.0mAh and Max is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 1831 *
metin.ozkan@analog.com 0:00d2a8670533 1832 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1833 */
metin.ozkan@analog.com 0:00d2a8670533 1834 int get_fg_design_cap(float *capacitymAh);
metin.ozkan@analog.com 0:00d2a8670533 1835
metin.ozkan@analog.com 0:00d2a8670533 1836 /**
metin.ozkan@analog.com 0:00d2a8670533 1837 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 1838 *
metin.ozkan@analog.com 0:00d2a8670533 1839 * @details
metin.ozkan@analog.com 0:00d2a8670533 1840 * - Register : Fuel-gauge Config (0x1D)
metin.ozkan@analog.com 0:00d2a8670533 1841 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 1842 * - Default : 0x0000
metin.ozkan@analog.com 0:00d2a8670533 1843 * - Description : The Config registers hold all shutdown enable, alert enable,
metin.ozkan@analog.com 0:00d2a8670533 1844 * and temperature enable control bits.
metin.ozkan@analog.com 0:00d2a8670533 1845 */
metin.ozkan@analog.com 0:00d2a8670533 1846 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 1847 Config_Ber,
metin.ozkan@analog.com 0:00d2a8670533 1848 Config_Bei,
metin.ozkan@analog.com 0:00d2a8670533 1849 Config_Aen,
metin.ozkan@analog.com 0:00d2a8670533 1850 Config_FTHRM,
metin.ozkan@analog.com 0:00d2a8670533 1851 Config_ETHRM,
metin.ozkan@analog.com 0:00d2a8670533 1852 Config_SPR_5,
metin.ozkan@analog.com 0:00d2a8670533 1853 Config_I2CSH,
metin.ozkan@analog.com 0:00d2a8670533 1854 Config_SHDN,
metin.ozkan@analog.com 0:00d2a8670533 1855 Config_Tex,
metin.ozkan@analog.com 0:00d2a8670533 1856 Config_Ten,
metin.ozkan@analog.com 0:00d2a8670533 1857 Config_AINSH,
metin.ozkan@analog.com 0:00d2a8670533 1858 Config_SPR_11,
metin.ozkan@analog.com 0:00d2a8670533 1859 Config_Vs,
metin.ozkan@analog.com 0:00d2a8670533 1860 Config_Ts,
metin.ozkan@analog.com 0:00d2a8670533 1861 Config_Ss,
metin.ozkan@analog.com 0:00d2a8670533 1862 Config_SPR_15
metin.ozkan@analog.com 0:00d2a8670533 1863 }reg_bit_config_t;
metin.ozkan@analog.com 0:00d2a8670533 1864
metin.ozkan@analog.com 0:00d2a8670533 1865 /**
metin.ozkan@analog.com 0:00d2a8670533 1866 * @brief Set bit field of fuel-gauge Config (0x1D) register.
metin.ozkan@analog.com 0:00d2a8670533 1867 *
metin.ozkan@analog.com 0:00d2a8670533 1868 * @param[in] bit_field Config bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1869 * @param[in] config to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1870 *
metin.ozkan@analog.com 0:00d2a8670533 1871 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1872 */
metin.ozkan@analog.com 0:00d2a8670533 1873 int set_fg_config(reg_bit_config_t bit_field, uint8_t config);
metin.ozkan@analog.com 0:00d2a8670533 1874
metin.ozkan@analog.com 0:00d2a8670533 1875 /**
metin.ozkan@analog.com 0:00d2a8670533 1876 * @brief Get bit field of fuel-gauge Config (0x1D) register.
metin.ozkan@analog.com 0:00d2a8670533 1877 *
metin.ozkan@analog.com 0:00d2a8670533 1878 * @param[in] bit_field Config bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1879 * @param[out] config Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1880 *
metin.ozkan@analog.com 0:00d2a8670533 1881 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1882 */
metin.ozkan@analog.com 0:00d2a8670533 1883 int get_fg_config(reg_bit_config_t bit_field, uint8_t *config);
metin.ozkan@analog.com 0:00d2a8670533 1884
metin.ozkan@analog.com 0:00d2a8670533 1885 /**
metin.ozkan@analog.com 0:00d2a8670533 1886 * @brief Set bit field of fuel-gauge IChgTerm (0x1E) register.
metin.ozkan@analog.com 0:00d2a8670533 1887 *
metin.ozkan@analog.com 0:00d2a8670533 1888 * @param[in] currentA to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 1889 * The current register has a LSB value of 156.25μA,
metin.ozkan@analog.com 0:00d2a8670533 1890 * a register scale range of ± 5.12 A.
metin.ozkan@analog.com 0:00d2a8670533 1891 *
metin.ozkan@analog.com 0:00d2a8670533 1892 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1893 */
metin.ozkan@analog.com 0:00d2a8670533 1894 int set_fg_ichg_term(float currentA);
metin.ozkan@analog.com 0:00d2a8670533 1895
metin.ozkan@analog.com 0:00d2a8670533 1896 /**
metin.ozkan@analog.com 0:00d2a8670533 1897 * @brief Get bit field of fuel-gauge IChgTerm (0x1E) register.
metin.ozkan@analog.com 0:00d2a8670533 1898 *
metin.ozkan@analog.com 0:00d2a8670533 1899 * @param[out] currentA Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1900 * The current register has a LSB value of 156.25μA,
metin.ozkan@analog.com 0:00d2a8670533 1901 * a register scale range of ± 5.12 A.
metin.ozkan@analog.com 0:00d2a8670533 1902 *
metin.ozkan@analog.com 0:00d2a8670533 1903 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1904 */
metin.ozkan@analog.com 0:00d2a8670533 1905 int get_fg_ichg_term(float *currentA);
metin.ozkan@analog.com 0:00d2a8670533 1906
metin.ozkan@analog.com 0:00d2a8670533 1907 /**
metin.ozkan@analog.com 0:00d2a8670533 1908 * @brief Get bit field of fuel-gauge DevName (0x21) register.
metin.ozkan@analog.com 0:00d2a8670533 1909 *
metin.ozkan@analog.com 0:00d2a8670533 1910 * @param[out] value Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 1911 *
metin.ozkan@analog.com 0:00d2a8670533 1912 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1913 */
metin.ozkan@analog.com 0:00d2a8670533 1914 int get_fg_dev_name(uint16_t *value);
metin.ozkan@analog.com 0:00d2a8670533 1915
metin.ozkan@analog.com 0:00d2a8670533 1916 /**
metin.ozkan@analog.com 0:00d2a8670533 1917 * @brief Set the filtering for empty learning for both the I_Avgempty and QRTable registers.
metin.ozkan@analog.com 0:00d2a8670533 1918 * Bit 15:14 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1919 *
metin.ozkan@analog.com 0:00d2a8670533 1920 * @param[in] nempty Iavg_empty is learned with(NEMPTY+3) right shifts. QRTable is learned with
metin.ozkan@analog.com 0:00d2a8670533 1921 * (NEMPTY + sizeof(Iavgempty) – sizeof (AvgCurrent)) right shifts.
metin.ozkan@analog.com 0:00d2a8670533 1922 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1923 */
metin.ozkan@analog.com 0:00d2a8670533 1924 int set_fg_nempty(uint8_t nempty);
metin.ozkan@analog.com 0:00d2a8670533 1925
metin.ozkan@analog.com 0:00d2a8670533 1926 /**
metin.ozkan@analog.com 0:00d2a8670533 1927 * @brief Get the filtering for empty learning for both the I_Avgempty and QRTable registers.
metin.ozkan@analog.com 0:00d2a8670533 1928 * Bit 15:14 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1929 *
metin.ozkan@analog.com 0:00d2a8670533 1930 * @param[out] nempty Iavg_empty is learned with(NEMPTY+3) right shifts. QRTable is learned with
metin.ozkan@analog.com 0:00d2a8670533 1931 * (NEMPTY + sizeof(Iavgempty) – sizeof (AvgCurrent)) right shifts.
metin.ozkan@analog.com 0:00d2a8670533 1932 *
metin.ozkan@analog.com 0:00d2a8670533 1933 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1934 */
metin.ozkan@analog.com 0:00d2a8670533 1935 int get_fg_nempty(uint8_t *nempty);
metin.ozkan@analog.com 0:00d2a8670533 1936
metin.ozkan@analog.com 0:00d2a8670533 1937 /**
metin.ozkan@analog.com 0:00d2a8670533 1938 * @brief Set the time constant for the mixing algorithm.
metin.ozkan@analog.com 0:00d2a8670533 1939 * Bit 10:7 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1940 *
metin.ozkan@analog.com 0:00d2a8670533 1941 * @param[in] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1942 * Mixing Period = 175.8ms × 2^(5+NMIX) to be written.
metin.ozkan@analog.com 0:00d2a8670533 1943 *
metin.ozkan@analog.com 0:00d2a8670533 1944 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1945 */
metin.ozkan@analog.com 0:00d2a8670533 1946 int set_fg_nmix(float second);
metin.ozkan@analog.com 0:00d2a8670533 1947
metin.ozkan@analog.com 0:00d2a8670533 1948 /**
metin.ozkan@analog.com 0:00d2a8670533 1949 * @brief Get the time constant for the mixing algorithm.
metin.ozkan@analog.com 0:00d2a8670533 1950 * Bit 10:7 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1951 *
metin.ozkan@analog.com 0:00d2a8670533 1952 * @param[out] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1953 * Mixing Period = 175.8ms × 2^(5+NMIX) to be read.
metin.ozkan@analog.com 0:00d2a8670533 1954 *
metin.ozkan@analog.com 0:00d2a8670533 1955 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1956 */
metin.ozkan@analog.com 0:00d2a8670533 1957 int get_fg_nmix(float *second);
metin.ozkan@analog.com 0:00d2a8670533 1958
metin.ozkan@analog.com 0:00d2a8670533 1959 /**
metin.ozkan@analog.com 0:00d2a8670533 1960 * @brief Set the time constant for the AverageVCELL register.
metin.ozkan@analog.com 0:00d2a8670533 1961 * Bit 6:4 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1962 *
metin.ozkan@analog.com 0:00d2a8670533 1963 * @param[in] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1964 * AverageVCELL time constant = 175.8ms × 2^(6+NAVGVCELL) to be written.
metin.ozkan@analog.com 0:00d2a8670533 1965 *
metin.ozkan@analog.com 0:00d2a8670533 1966 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1967 */
metin.ozkan@analog.com 0:00d2a8670533 1968 int set_fg_navgcell(float second);
metin.ozkan@analog.com 0:00d2a8670533 1969
metin.ozkan@analog.com 0:00d2a8670533 1970 /**
metin.ozkan@analog.com 0:00d2a8670533 1971 * @brief Get the time constant for the AverageVCELL register.
metin.ozkan@analog.com 0:00d2a8670533 1972 * Bit 6:4 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1973 *
metin.ozkan@analog.com 0:00d2a8670533 1974 * @param[out] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1975 * AverageVCELL time constant = 175.8ms × 2^(6+NAVGVCELL) to be read.
metin.ozkan@analog.com 0:00d2a8670533 1976 *
metin.ozkan@analog.com 0:00d2a8670533 1977 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1978 */
metin.ozkan@analog.com 0:00d2a8670533 1979 int get_fg_navgcell(float *second);
metin.ozkan@analog.com 0:00d2a8670533 1980
metin.ozkan@analog.com 0:00d2a8670533 1981 /**
metin.ozkan@analog.com 0:00d2a8670533 1982 * @brief Set the time constant for the AverageCurrent register.
metin.ozkan@analog.com 0:00d2a8670533 1983 * Bit 3:0 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1984 *
metin.ozkan@analog.com 0:00d2a8670533 1985 * @param[in] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1986 * AverageCurrent time constant = 175.8ms × 2^(2+NCURR) to be written.
metin.ozkan@analog.com 0:00d2a8670533 1987 *
metin.ozkan@analog.com 0:00d2a8670533 1988 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 1989 */
metin.ozkan@analog.com 0:00d2a8670533 1990 int set_fg_ncurr(float second);
metin.ozkan@analog.com 0:00d2a8670533 1991
metin.ozkan@analog.com 0:00d2a8670533 1992 /**
metin.ozkan@analog.com 0:00d2a8670533 1993 * @brief Get the time constant for the AverageCurrent register.
metin.ozkan@analog.com 0:00d2a8670533 1994 * Bit 3:0 of FilterCfg (0x29) register.
metin.ozkan@analog.com 0:00d2a8670533 1995 *
metin.ozkan@analog.com 0:00d2a8670533 1996 * @param[out] second The equation setting the period is:
metin.ozkan@analog.com 0:00d2a8670533 1997 * AverageCurrent time constant = 175.8ms × 2^(2+NCURR) to be read.
metin.ozkan@analog.com 0:00d2a8670533 1998 *
metin.ozkan@analog.com 0:00d2a8670533 1999 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2000 */
metin.ozkan@analog.com 0:00d2a8670533 2001 int get_fg_ncurr(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2002
metin.ozkan@analog.com 0:00d2a8670533 2003 /**
metin.ozkan@analog.com 0:00d2a8670533 2004 * @brief Set bit field of fuel-gauge IAvgEmpty (0x36) register.
metin.ozkan@analog.com 0:00d2a8670533 2005 *
metin.ozkan@analog.com 0:00d2a8670533 2006 * @param[in] currentA to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2007 * The current register has a LSB value of 156.25μA,
metin.ozkan@analog.com 0:00d2a8670533 2008 * a register scale range of ± 5.12 A.
metin.ozkan@analog.com 0:00d2a8670533 2009 *
metin.ozkan@analog.com 0:00d2a8670533 2010 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2011 */
metin.ozkan@analog.com 0:00d2a8670533 2012 int set_fg_iavg_empty(float currentA);
metin.ozkan@analog.com 0:00d2a8670533 2013
metin.ozkan@analog.com 0:00d2a8670533 2014 /**
metin.ozkan@analog.com 0:00d2a8670533 2015 * @brief Get bit field of fuel-gauge IAvgEmpty (0x36) register.
metin.ozkan@analog.com 0:00d2a8670533 2016 *
metin.ozkan@analog.com 0:00d2a8670533 2017 * @param[out] currentA Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2018 * The current register has a LSB value of 156.25μA,
metin.ozkan@analog.com 0:00d2a8670533 2019 * a register scale range of ± 5.12 A.
metin.ozkan@analog.com 0:00d2a8670533 2020 *
metin.ozkan@analog.com 0:00d2a8670533 2021 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2022 */
metin.ozkan@analog.com 0:00d2a8670533 2023 int get_fg_iavg_empty(float *currentA);
metin.ozkan@analog.com 0:00d2a8670533 2024
metin.ozkan@analog.com 0:00d2a8670533 2025 /**
metin.ozkan@analog.com 0:00d2a8670533 2026 * @brief Set the voltage level for detecting empty.
metin.ozkan@analog.com 0:00d2a8670533 2027 * Bit 15:7 of VEmpty(0x3A) register.
metin.ozkan@analog.com 0:00d2a8670533 2028 *
metin.ozkan@analog.com 0:00d2a8670533 2029 * @param[in] voltV Empty voltage to be written.
metin.ozkan@analog.com 0:00d2a8670533 2030 * A 10mV resolution gives a 0 to 5.11V range.
metin.ozkan@analog.com 0:00d2a8670533 2031 *
metin.ozkan@analog.com 0:00d2a8670533 2032 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2033 */
metin.ozkan@analog.com 0:00d2a8670533 2034 int set_fg_v_empty(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 2035
metin.ozkan@analog.com 0:00d2a8670533 2036 /**
metin.ozkan@analog.com 0:00d2a8670533 2037 * @brief Get the voltage level for detecting empty.
metin.ozkan@analog.com 0:00d2a8670533 2038 * Bit 15:7 of VEmpty(0x3A) register.
metin.ozkan@analog.com 0:00d2a8670533 2039 *
metin.ozkan@analog.com 0:00d2a8670533 2040 * @param[out] voltV Empty voltage to be read.
metin.ozkan@analog.com 0:00d2a8670533 2041 * A 10mV resolution gives a 0 to 5.11V range.
metin.ozkan@analog.com 0:00d2a8670533 2042 *
metin.ozkan@analog.com 0:00d2a8670533 2043 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2044 */
metin.ozkan@analog.com 0:00d2a8670533 2045 int get_fg_v_empty(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 2046
metin.ozkan@analog.com 0:00d2a8670533 2047 /**
metin.ozkan@analog.com 0:00d2a8670533 2048 * @brief Set the voltage level for clearing empty detection.
metin.ozkan@analog.com 0:00d2a8670533 2049 * Bit 6:0 of VEmpty(0x3A) register.
metin.ozkan@analog.com 0:00d2a8670533 2050 *
metin.ozkan@analog.com 0:00d2a8670533 2051 * @param[in] voltV Recovery voltage to be written.
metin.ozkan@analog.com 0:00d2a8670533 2052 * A 40mV resolution gives a 0 to 5.08V range.
metin.ozkan@analog.com 0:00d2a8670533 2053 *
metin.ozkan@analog.com 0:00d2a8670533 2054 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2055 */
metin.ozkan@analog.com 0:00d2a8670533 2056 int set_fg_v_recover(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 2057
metin.ozkan@analog.com 0:00d2a8670533 2058 /**
metin.ozkan@analog.com 0:00d2a8670533 2059 * @brief Get the voltage level for clearing empty detection.
metin.ozkan@analog.com 0:00d2a8670533 2060 * Bit 6:0 of VEmpty(0x3A) register.
metin.ozkan@analog.com 0:00d2a8670533 2061 *
metin.ozkan@analog.com 0:00d2a8670533 2062 * @param[out] voltV Recovery voltage to be read.
metin.ozkan@analog.com 0:00d2a8670533 2063 * A 40mV resolution gives a 0 to 5.08V range.
metin.ozkan@analog.com 0:00d2a8670533 2064 *
metin.ozkan@analog.com 0:00d2a8670533 2065 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2066 */
metin.ozkan@analog.com 0:00d2a8670533 2067 int get_fg_v_recover(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 2068
metin.ozkan@analog.com 0:00d2a8670533 2069 /**
metin.ozkan@analog.com 0:00d2a8670533 2070 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 2071 *
metin.ozkan@analog.com 0:00d2a8670533 2072 * @details
metin.ozkan@analog.com 0:00d2a8670533 2073 * - Register : Fuel-gauge Config2 (0xBB)
metin.ozkan@analog.com 0:00d2a8670533 2074 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 2075 * - Default : 0x0000
metin.ozkan@analog.com 0:00d2a8670533 2076 * - Description : The Config registers hold all shutdown enable, alert enable,
metin.ozkan@analog.com 0:00d2a8670533 2077 * and temperature enable control bits.
metin.ozkan@analog.com 0:00d2a8670533 2078 */
metin.ozkan@analog.com 0:00d2a8670533 2079 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 2080 Config2_ISysNCurr,
metin.ozkan@analog.com 0:00d2a8670533 2081 Config2_OCVQen,
metin.ozkan@analog.com 0:00d2a8670533 2082 Config2_LdMdl,
metin.ozkan@analog.com 0:00d2a8670533 2083 Config2_TAlrtEn,
metin.ozkan@analog.com 0:00d2a8670533 2084 Config2_dSOCen,
metin.ozkan@analog.com 0:00d2a8670533 2085 Config2_ThmHotAlrtEn,
metin.ozkan@analog.com 0:00d2a8670533 2086 Config2_ThmHotEn,
metin.ozkan@analog.com 0:00d2a8670533 2087 Config2_FCThmHot,
metin.ozkan@analog.com 0:00d2a8670533 2088 Config2_SPR
metin.ozkan@analog.com 0:00d2a8670533 2089 }reg_bit_config2_t;
metin.ozkan@analog.com 0:00d2a8670533 2090
metin.ozkan@analog.com 0:00d2a8670533 2091 /**
metin.ozkan@analog.com 0:00d2a8670533 2092 * @brief Set Config2 (0xBB) register holding all shutdown enable, alert enable,
metin.ozkan@analog.com 0:00d2a8670533 2093 * and temperature enable control bits.
metin.ozkan@analog.com 0:00d2a8670533 2094 *
metin.ozkan@analog.com 0:00d2a8670533 2095 * @param[in] bit_field Config bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2096 * @param[in] config2 value to be written.
metin.ozkan@analog.com 0:00d2a8670533 2097 *
metin.ozkan@analog.com 0:00d2a8670533 2098 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2099 */
metin.ozkan@analog.com 0:00d2a8670533 2100 int set_fg_config2(reg_bit_config2_t bit_field, uint8_t config2);
metin.ozkan@analog.com 0:00d2a8670533 2101
metin.ozkan@analog.com 0:00d2a8670533 2102 /**
metin.ozkan@analog.com 0:00d2a8670533 2103 * @brief Get Config2 (0xBB) register holding all shutdown enable, alert enable,
metin.ozkan@analog.com 0:00d2a8670533 2104 * and temperature enable control bits.
metin.ozkan@analog.com 0:00d2a8670533 2105 *
metin.ozkan@analog.com 0:00d2a8670533 2106 * @param[in] bit_field Config bit field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2107 * @param[out] config2 value to be read.
metin.ozkan@analog.com 0:00d2a8670533 2108 *
metin.ozkan@analog.com 0:00d2a8670533 2109 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2110 */
metin.ozkan@analog.com 0:00d2a8670533 2111 int get_fg_config2(reg_bit_config2_t bit_field, uint8_t *config2);
metin.ozkan@analog.com 0:00d2a8670533 2112
metin.ozkan@analog.com 0:00d2a8670533 2113 /**
metin.ozkan@analog.com 0:00d2a8670533 2114 * @brief Set the time constant for the AvgISys register.
metin.ozkan@analog.com 0:00d2a8670533 2115 * Bit 3:0 of Config2(0xBB) register.
metin.ozkan@analog.com 0:00d2a8670533 2116 *
metin.ozkan@analog.com 0:00d2a8670533 2117 * @param[in] second Time constant to be written.
metin.ozkan@analog.com 0:00d2a8670533 2118 * The default POR value of 0100b gives a time constant of 5.625.
metin.ozkan@analog.com 0:00d2a8670533 2119 * The equation setting the period is: AvgISys time constant = 45s x 2^(ISysNCurr-7).
metin.ozkan@analog.com 0:00d2a8670533 2120 *
metin.ozkan@analog.com 0:00d2a8670533 2121 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2122 */
metin.ozkan@analog.com 0:00d2a8670533 2123 int set_fg_isys_ncurr(float second);
metin.ozkan@analog.com 0:00d2a8670533 2124
metin.ozkan@analog.com 0:00d2a8670533 2125 /**
metin.ozkan@analog.com 0:00d2a8670533 2126 * @brief Get the time constant for the AvgISys register.
metin.ozkan@analog.com 0:00d2a8670533 2127 * Bit 3:0 of Config2(0xBB) register.
metin.ozkan@analog.com 0:00d2a8670533 2128 *
metin.ozkan@analog.com 0:00d2a8670533 2129 * @param[out] second Time constant to be read.
metin.ozkan@analog.com 0:00d2a8670533 2130 * The default POR value of 0100b gives a time constant of 5.625.
metin.ozkan@analog.com 0:00d2a8670533 2131 * The equation setting the period is: AvgISys time constant = 45s x 2^(ISysNCurr-7).
metin.ozkan@analog.com 0:00d2a8670533 2132 *
metin.ozkan@analog.com 0:00d2a8670533 2133 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2134 */
metin.ozkan@analog.com 0:00d2a8670533 2135 int get_fg_isys_ncurr(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2136
metin.ozkan@analog.com 0:00d2a8670533 2137 /*Measurement Registers*/
metin.ozkan@analog.com 0:00d2a8670533 2138
metin.ozkan@analog.com 0:00d2a8670533 2139 /**
metin.ozkan@analog.com 0:00d2a8670533 2140 * @brief Set bit field of fuel-gauge Temp (0x08) register.
metin.ozkan@analog.com 0:00d2a8670533 2141 *
metin.ozkan@analog.com 0:00d2a8670533 2142 * @param[in] tempDegC to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2143 * The LSB is 0.0039˚C.
metin.ozkan@analog.com 0:00d2a8670533 2144 *
metin.ozkan@analog.com 0:00d2a8670533 2145 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2146 */
metin.ozkan@analog.com 0:00d2a8670533 2147 int set_fg_temp(float tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2148
metin.ozkan@analog.com 0:00d2a8670533 2149 /**
metin.ozkan@analog.com 0:00d2a8670533 2150 * @brief Get bit field of fuel-gauge Temp (0x08) register.
metin.ozkan@analog.com 0:00d2a8670533 2151 *
metin.ozkan@analog.com 0:00d2a8670533 2152 * @param[out] tempDegC Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2153 * The LSB is 0.0039˚C.
metin.ozkan@analog.com 0:00d2a8670533 2154 *
metin.ozkan@analog.com 0:00d2a8670533 2155 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2156 */
metin.ozkan@analog.com 0:00d2a8670533 2157 int get_fg_temp(float *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2158
metin.ozkan@analog.com 0:00d2a8670533 2159 /**
metin.ozkan@analog.com 0:00d2a8670533 2160 * @brief Set bit field of fuel-gauge Vcell (0x09) register.
metin.ozkan@analog.com 0:00d2a8670533 2161 * VCell reports the voltage measured between BATT and GND.
metin.ozkan@analog.com 0:00d2a8670533 2162 *
metin.ozkan@analog.com 0:00d2a8670533 2163 * @param[in] voltV to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2164 * VCell register reports the 2.5X the voltage measured at the CELLX pin.
metin.ozkan@analog.com 0:00d2a8670533 2165 *
metin.ozkan@analog.com 0:00d2a8670533 2166 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2167 */
metin.ozkan@analog.com 0:00d2a8670533 2168 int set_fg_vcell(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 2169
metin.ozkan@analog.com 0:00d2a8670533 2170 /**
metin.ozkan@analog.com 0:00d2a8670533 2171 * @brief Get bit field of fuel-gauge Vcell (0x09) register.
metin.ozkan@analog.com 0:00d2a8670533 2172 * VCell reports the voltage measured between BATT and GND.
metin.ozkan@analog.com 0:00d2a8670533 2173 *
metin.ozkan@analog.com 0:00d2a8670533 2174 * @param[out] voltV Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2175 * VCell register reports the 2.5X the voltage measured at the CELLX pin.
metin.ozkan@analog.com 0:00d2a8670533 2176 *
metin.ozkan@analog.com 0:00d2a8670533 2177 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2178 */
metin.ozkan@analog.com 0:00d2a8670533 2179 int get_fg_vcell(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 2180
metin.ozkan@analog.com 0:00d2a8670533 2181 /**
metin.ozkan@analog.com 0:00d2a8670533 2182 * @brief Set bit field of fuel-gauge Current (0x0A) register.
metin.ozkan@analog.com 0:00d2a8670533 2183 *
metin.ozkan@analog.com 0:00d2a8670533 2184 * @param[in] currentA to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2185 * The current register has a LSB value of 31.25uA, a register scale of 1.024A
metin.ozkan@analog.com 0:00d2a8670533 2186 *
metin.ozkan@analog.com 0:00d2a8670533 2187 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2188 */
metin.ozkan@analog.com 0:00d2a8670533 2189 int set_fg_current(float currentA);
metin.ozkan@analog.com 0:00d2a8670533 2190
metin.ozkan@analog.com 0:00d2a8670533 2191 /**
metin.ozkan@analog.com 0:00d2a8670533 2192 * @brief Get bit field of fuel-gauge Current (0x0A) register.
metin.ozkan@analog.com 0:00d2a8670533 2193 *
metin.ozkan@analog.com 0:00d2a8670533 2194 * @param[out] currentA Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2195 * The current register has a LSB value of 31.25uA, a register scale of 1.024A.
metin.ozkan@analog.com 0:00d2a8670533 2196 *
metin.ozkan@analog.com 0:00d2a8670533 2197 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2198 */
metin.ozkan@analog.com 0:00d2a8670533 2199 int get_fg_current(float *currentA);
metin.ozkan@analog.com 0:00d2a8670533 2200
metin.ozkan@analog.com 0:00d2a8670533 2201 /**
metin.ozkan@analog.com 0:00d2a8670533 2202 * @brief Set bit field of fuel-gauge AvgCurrent (0x0B) register.
metin.ozkan@analog.com 0:00d2a8670533 2203 *
metin.ozkan@analog.com 0:00d2a8670533 2204 * @param[in] currentA to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2205 * The current register has a LSB value of 31.25uA, a register scale of 1.024A
metin.ozkan@analog.com 0:00d2a8670533 2206 *
metin.ozkan@analog.com 0:00d2a8670533 2207 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2208 */
metin.ozkan@analog.com 0:00d2a8670533 2209 int set_fg_avg_current(float currentA);
metin.ozkan@analog.com 0:00d2a8670533 2210
metin.ozkan@analog.com 0:00d2a8670533 2211 /**
metin.ozkan@analog.com 0:00d2a8670533 2212 * @brief Get bit field of fuel-gauge AvgCurrent (0x0B) register.
metin.ozkan@analog.com 0:00d2a8670533 2213 *
metin.ozkan@analog.com 0:00d2a8670533 2214 * @param[out] currentA Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2215 * The current register has a LSB value of 31.25uA, a register scale of 1.024A
metin.ozkan@analog.com 0:00d2a8670533 2216 *
metin.ozkan@analog.com 0:00d2a8670533 2217 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2218 */
metin.ozkan@analog.com 0:00d2a8670533 2219 int get_fg_avg_current(float *currentA);
metin.ozkan@analog.com 0:00d2a8670533 2220
metin.ozkan@analog.com 0:00d2a8670533 2221 /**
metin.ozkan@analog.com 0:00d2a8670533 2222 * @brief Set bit field of fuel-gauge AvgTA (0x16) register.
metin.ozkan@analog.com 0:00d2a8670533 2223 *
metin.ozkan@analog.com 0:00d2a8670533 2224 * @param[in] tempDegC to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2225 * LSB is 1/256°C. Min value is -128.0°C and Max value is 127.996°C.
metin.ozkan@analog.com 0:00d2a8670533 2226 *
metin.ozkan@analog.com 0:00d2a8670533 2227 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2228 */
metin.ozkan@analog.com 0:00d2a8670533 2229 int set_fg_avgta(float tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2230
metin.ozkan@analog.com 0:00d2a8670533 2231 /**
metin.ozkan@analog.com 0:00d2a8670533 2232 * @brief Get bit field of fuel-gauge AvgTA (0x16) register.
metin.ozkan@analog.com 0:00d2a8670533 2233 *
metin.ozkan@analog.com 0:00d2a8670533 2234 * @param[out] tempDegC Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2235 * LSB is 1/256°C. Min value is -128.0°C and Max value is 127.996°C.
metin.ozkan@analog.com 0:00d2a8670533 2236 *
metin.ozkan@analog.com 0:00d2a8670533 2237 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2238 */
metin.ozkan@analog.com 0:00d2a8670533 2239 int get_fg_avgta(float *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2240
metin.ozkan@analog.com 0:00d2a8670533 2241 /**
metin.ozkan@analog.com 0:00d2a8670533 2242 * @brief Set bit field of fuel-gauge AvgVCell (0x19) register.
metin.ozkan@analog.com 0:00d2a8670533 2243 *
metin.ozkan@analog.com 0:00d2a8670533 2244 * @param[in] voltV to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2245 * LSB is 1.25mV/16. Min value is 0.0V and Max value is 5.11992V.
metin.ozkan@analog.com 0:00d2a8670533 2246 *
metin.ozkan@analog.com 0:00d2a8670533 2247 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2248 */
metin.ozkan@analog.com 0:00d2a8670533 2249 int set_fg_avgvcell(float voltV);
metin.ozkan@analog.com 0:00d2a8670533 2250
metin.ozkan@analog.com 0:00d2a8670533 2251 /**
metin.ozkan@analog.com 0:00d2a8670533 2252 * @brief Get bit field of fuel-gauge AvgVCell (0x19) register.
metin.ozkan@analog.com 0:00d2a8670533 2253 *
metin.ozkan@analog.com 0:00d2a8670533 2254 * @param[out] voltV Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2255 * LSB is 1.25mV/16. Min value is 0.0V and Max value is 5.11992V.
metin.ozkan@analog.com 0:00d2a8670533 2256 *
metin.ozkan@analog.com 0:00d2a8670533 2257 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2258 */
metin.ozkan@analog.com 0:00d2a8670533 2259 int get_fg_avgvcell(float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 2260
metin.ozkan@analog.com 0:00d2a8670533 2261 /**
metin.ozkan@analog.com 0:00d2a8670533 2262 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 2263 *
metin.ozkan@analog.com 0:00d2a8670533 2264 * @details
metin.ozkan@analog.com 0:00d2a8670533 2265 * - Register : Fuel-gauge MaxMinTemp (0x1A)
metin.ozkan@analog.com 0:00d2a8670533 2266 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 2267 * - Default : 0x7F80
metin.ozkan@analog.com 0:00d2a8670533 2268 * - Description : All MaxMinTemp register bit fields.
metin.ozkan@analog.com 0:00d2a8670533 2269 */
metin.ozkan@analog.com 0:00d2a8670533 2270 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 2271 MaxMinTemp_MinTemperature,
metin.ozkan@analog.com 0:00d2a8670533 2272 MaxMinTemp_MaxTemperature
metin.ozkan@analog.com 0:00d2a8670533 2273 }reg_bit_max_min_temp_t;
metin.ozkan@analog.com 0:00d2a8670533 2274
metin.ozkan@analog.com 0:00d2a8670533 2275 /**
metin.ozkan@analog.com 0:00d2a8670533 2276 * @brief Set bit field of fuel-gauge MaxMinTemp (0x1A) register.
metin.ozkan@analog.com 0:00d2a8670533 2277 *
metin.ozkan@analog.com 0:00d2a8670533 2278 * @param[in] bit_field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2279 * @param[in] tempDegC to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2280 * The maximum and minimum temperatures are each stored as two’s complement
metin.ozkan@analog.com 0:00d2a8670533 2281 * 8-bit values with 1°C resolution.
metin.ozkan@analog.com 0:00d2a8670533 2282 *
metin.ozkan@analog.com 0:00d2a8670533 2283 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2284 */
metin.ozkan@analog.com 0:00d2a8670533 2285 int set_fg_max_min_temp(reg_bit_max_min_temp_t bit_field, int tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2286
metin.ozkan@analog.com 0:00d2a8670533 2287 /**
metin.ozkan@analog.com 0:00d2a8670533 2288 * @brief Get bit field of fuel-gauge MaxMinTemp (0x1A) register.
metin.ozkan@analog.com 0:00d2a8670533 2289 *
metin.ozkan@analog.com 0:00d2a8670533 2290 * @param[in] bit_field to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2291 * @param[out] tempDegC Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2292 * The maximum and minimum temperatures are each stored as two’s complement
metin.ozkan@analog.com 0:00d2a8670533 2293 * 8-bit values with 1°C resolution.
metin.ozkan@analog.com 0:00d2a8670533 2294 *
metin.ozkan@analog.com 0:00d2a8670533 2295 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2296 */
metin.ozkan@analog.com 0:00d2a8670533 2297 int get_fg_max_min_temp(reg_bit_max_min_temp_t bit_field, int *tempDegC);
metin.ozkan@analog.com 0:00d2a8670533 2298
metin.ozkan@analog.com 0:00d2a8670533 2299 /**
metin.ozkan@analog.com 0:00d2a8670533 2300 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 2301 *
metin.ozkan@analog.com 0:00d2a8670533 2302 * @details
metin.ozkan@analog.com 0:00d2a8670533 2303 * - Register : Fuel-gauge MaxMinVolt (0x1B)
metin.ozkan@analog.com 0:00d2a8670533 2304 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 2305 * - Default : 0x00FF
metin.ozkan@analog.com 0:00d2a8670533 2306 * - Description : All MaxMinVolt register bit fields.
metin.ozkan@analog.com 0:00d2a8670533 2307 */
metin.ozkan@analog.com 0:00d2a8670533 2308 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 2309 MaxMinVolt_MinVoltage,
metin.ozkan@analog.com 0:00d2a8670533 2310 MaxMinVolt_MaxVoltage
metin.ozkan@analog.com 0:00d2a8670533 2311 }reg_bit_max_min_volt_t;
metin.ozkan@analog.com 0:00d2a8670533 2312
metin.ozkan@analog.com 0:00d2a8670533 2313 /**
metin.ozkan@analog.com 0:00d2a8670533 2314 * @brief Set bit field of fuel-gauge MaxMinVolt (0x1B) register.
metin.ozkan@analog.com 0:00d2a8670533 2315 *
metin.ozkan@analog.com 0:00d2a8670533 2316 * @param[in] bit_field MaxMinVolt register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 2317 * @param[in] voltV to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2318 * The maximum and minimum voltages are each stored as 8-bit
metin.ozkan@analog.com 0:00d2a8670533 2319 * values with a 20mV resolution.
metin.ozkan@analog.com 0:00d2a8670533 2320 *
metin.ozkan@analog.com 0:00d2a8670533 2321 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2322 */
metin.ozkan@analog.com 0:00d2a8670533 2323 int set_fg_max_min_volt(reg_bit_max_min_volt_t bit_field, float voltV);
metin.ozkan@analog.com 0:00d2a8670533 2324
metin.ozkan@analog.com 0:00d2a8670533 2325 /**
metin.ozkan@analog.com 0:00d2a8670533 2326 * @brief Get bit field of fuel-gauge MaxMinVolt (0x1B) register.
metin.ozkan@analog.com 0:00d2a8670533 2327 *
metin.ozkan@analog.com 0:00d2a8670533 2328 * @param[in] bit_field MaxMinVolt register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 2329 * @param[out] voltV Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2330 * The maximum and minimum voltages are each stored as 8-bit
metin.ozkan@analog.com 0:00d2a8670533 2331 * values with a 20mV resolution.
metin.ozkan@analog.com 0:00d2a8670533 2332 *
metin.ozkan@analog.com 0:00d2a8670533 2333 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2334 */
metin.ozkan@analog.com 0:00d2a8670533 2335 int get_fg_max_min_volt(reg_bit_max_min_volt_t bit_field, float *voltV);
metin.ozkan@analog.com 0:00d2a8670533 2336
metin.ozkan@analog.com 0:00d2a8670533 2337 /**
metin.ozkan@analog.com 0:00d2a8670533 2338 * @brief Register Configuration
metin.ozkan@analog.com 0:00d2a8670533 2339 *
metin.ozkan@analog.com 0:00d2a8670533 2340 * @details
metin.ozkan@analog.com 0:00d2a8670533 2341 * - Register : Fuel-gauge MaxMinCurr (0x1C)
metin.ozkan@analog.com 0:00d2a8670533 2342 * - Bit Fields : [15:0]
metin.ozkan@analog.com 0:00d2a8670533 2343 * - Default : 0x807F
metin.ozkan@analog.com 0:00d2a8670533 2344 * - Description : All MaxMinCurr register bit fields.
metin.ozkan@analog.com 0:00d2a8670533 2345 */
metin.ozkan@analog.com 0:00d2a8670533 2346 typedef enum {
metin.ozkan@analog.com 0:00d2a8670533 2347 MaxMinCurr_MaxDisCurrent,
metin.ozkan@analog.com 0:00d2a8670533 2348 MaxMinCurr_MaxChargeCurrent
metin.ozkan@analog.com 0:00d2a8670533 2349 }reg_bit_max_min_curr_t;
metin.ozkan@analog.com 0:00d2a8670533 2350
metin.ozkan@analog.com 0:00d2a8670533 2351 /**
metin.ozkan@analog.com 0:00d2a8670533 2352 * @brief Set bit field of fuel-gauge MaxMinCurr (0x1C) register.
metin.ozkan@analog.com 0:00d2a8670533 2353 *
metin.ozkan@analog.com 0:00d2a8670533 2354 * @param[in] bit_field MaxMinCurr register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 2355 * @param[in] currentA to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2356 * The maximum and minimum currents are each stored
metin.ozkan@analog.com 0:00d2a8670533 2357 * as two’s complement 8-bit values with 8mA resolution.
metin.ozkan@analog.com 0:00d2a8670533 2358 *
metin.ozkan@analog.com 0:00d2a8670533 2359 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2360 */
metin.ozkan@analog.com 0:00d2a8670533 2361 int set_fg_max_min_curr(reg_bit_max_min_curr_t bit_field, float currentA);
metin.ozkan@analog.com 0:00d2a8670533 2362
metin.ozkan@analog.com 0:00d2a8670533 2363 /**
metin.ozkan@analog.com 0:00d2a8670533 2364 * @brief Get bit field of fuel-gauge MaxMinCurr (0x1C) register.
metin.ozkan@analog.com 0:00d2a8670533 2365 *
metin.ozkan@analog.com 0:00d2a8670533 2366 * @param[in] bit_field MaxMinCurr register bit field to be written.
metin.ozkan@analog.com 0:00d2a8670533 2367 * @param[out] currentA Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2368 * The maximum and minimum currents are each stored
metin.ozkan@analog.com 0:00d2a8670533 2369 * as two’s complement 8-bit values with 8mA resolution.
metin.ozkan@analog.com 0:00d2a8670533 2370 *
metin.ozkan@analog.com 0:00d2a8670533 2371 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2372 */
metin.ozkan@analog.com 0:00d2a8670533 2373 int get_fg_max_min_curr(reg_bit_max_min_curr_t bit_field, float *currentA);
metin.ozkan@analog.com 0:00d2a8670533 2374
metin.ozkan@analog.com 0:00d2a8670533 2375 /**
metin.ozkan@analog.com 0:00d2a8670533 2376 * @brief Set bit field of fuel-gauge AIN0 (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 2377 *
metin.ozkan@analog.com 0:00d2a8670533 2378 * @param[in] percent to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2379 * AIN register with an LSB of 0.0122%. The value from 0% to 100%.
metin.ozkan@analog.com 0:00d2a8670533 2380 *
metin.ozkan@analog.com 0:00d2a8670533 2381 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2382 */
metin.ozkan@analog.com 0:00d2a8670533 2383 int set_fg_ain0(float percent);
metin.ozkan@analog.com 0:00d2a8670533 2384
metin.ozkan@analog.com 0:00d2a8670533 2385 /**
metin.ozkan@analog.com 0:00d2a8670533 2386 * @brief Get bit field of fuel-gauge AIN0 (0x27) register.
metin.ozkan@analog.com 0:00d2a8670533 2387 *
metin.ozkan@analog.com 0:00d2a8670533 2388 * @param[out] percent Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2389 * AIN register with an LSB of 0.0122%. The value from 0% to 100%.
metin.ozkan@analog.com 0:00d2a8670533 2390 *
metin.ozkan@analog.com 0:00d2a8670533 2391 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2392 */
metin.ozkan@analog.com 0:00d2a8670533 2393 int get_fg_ain0(float *percent);
metin.ozkan@analog.com 0:00d2a8670533 2394
metin.ozkan@analog.com 0:00d2a8670533 2395 /**
metin.ozkan@analog.com 0:00d2a8670533 2396 * @brief Set bit field of fuel-gauge Timer (0x3E) register.
metin.ozkan@analog.com 0:00d2a8670533 2397 *
metin.ozkan@analog.com 0:00d2a8670533 2398 * @param[in] second to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2399 * The Timer register LSB is 175.8ms, giving a full-scale range of 0 to 3.2 hours.
metin.ozkan@analog.com 0:00d2a8670533 2400 *
metin.ozkan@analog.com 0:00d2a8670533 2401 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2402 */
metin.ozkan@analog.com 0:00d2a8670533 2403 int set_fg_timer(float second);
metin.ozkan@analog.com 0:00d2a8670533 2404
metin.ozkan@analog.com 0:00d2a8670533 2405 /**
metin.ozkan@analog.com 0:00d2a8670533 2406 * @brief Get bit field of fuel-gauge Timer (0x3E) register.
metin.ozkan@analog.com 0:00d2a8670533 2407 *
metin.ozkan@analog.com 0:00d2a8670533 2408 * @param[out] second Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2409 * The Timer register LSB is 175.8ms, giving a full-scale range of 0 to 3.2 hours.
metin.ozkan@analog.com 0:00d2a8670533 2410 *
metin.ozkan@analog.com 0:00d2a8670533 2411 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2412 */
metin.ozkan@analog.com 0:00d2a8670533 2413 int get_fg_timer(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2414
metin.ozkan@analog.com 0:00d2a8670533 2415 /**
metin.ozkan@analog.com 0:00d2a8670533 2416 * @brief Set bit field of fuel-gauge ShdnTimer (0x3F) register.
metin.ozkan@analog.com 0:00d2a8670533 2417 * Shutdown Counter. Bit 12:0.
metin.ozkan@analog.com 0:00d2a8670533 2418 *
metin.ozkan@analog.com 0:00d2a8670533 2419 * @param[in] second to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2420 * The counter LSB is 1.4s.
metin.ozkan@analog.com 0:00d2a8670533 2421 *
metin.ozkan@analog.com 0:00d2a8670533 2422 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2423 */
metin.ozkan@analog.com 0:00d2a8670533 2424 int set_fg_shdnctr(float second);
metin.ozkan@analog.com 0:00d2a8670533 2425
metin.ozkan@analog.com 0:00d2a8670533 2426 /**
metin.ozkan@analog.com 0:00d2a8670533 2427 * @brief Get bit field of fuel-gauge ShdnTimer (0x3F) register.
metin.ozkan@analog.com 0:00d2a8670533 2428 * Shutdown Counter. Bit 12:0.
metin.ozkan@analog.com 0:00d2a8670533 2429 *
metin.ozkan@analog.com 0:00d2a8670533 2430 * @param[out] second Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2431 * The counter LSB is 1.4s.
metin.ozkan@analog.com 0:00d2a8670533 2432 *
metin.ozkan@analog.com 0:00d2a8670533 2433 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2434 */
metin.ozkan@analog.com 0:00d2a8670533 2435 int get_fg_shdnctr(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2436
metin.ozkan@analog.com 0:00d2a8670533 2437 /**
metin.ozkan@analog.com 0:00d2a8670533 2438 * @brief Set bit field of fuel-gauge ShdnTimer (0x3F) register.
metin.ozkan@analog.com 0:00d2a8670533 2439 * Shutdown timeout period from a minimum of 45s to a maximum of 1.6h. Bit 15:13.
metin.ozkan@analog.com 0:00d2a8670533 2440 *
metin.ozkan@analog.com 0:00d2a8670533 2441 * @param[in] second to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2442 * Shutdown Timeout Period = 175.8ms × 2^(8+THR).
metin.ozkan@analog.com 0:00d2a8670533 2443 *
metin.ozkan@analog.com 0:00d2a8670533 2444 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2445 */
metin.ozkan@analog.com 0:00d2a8670533 2446 int set_fg_shdn_thr(float second);
metin.ozkan@analog.com 0:00d2a8670533 2447
metin.ozkan@analog.com 0:00d2a8670533 2448 /**
metin.ozkan@analog.com 0:00d2a8670533 2449 * @brief Get bit field of fuel-gauge ShdnTimer (0x3F) register.
metin.ozkan@analog.com 0:00d2a8670533 2450 * Shutdown timeout period from a minimum of 45s to a maximum of 1.6h. Bit 15:13.
metin.ozkan@analog.com 0:00d2a8670533 2451 *
metin.ozkan@analog.com 0:00d2a8670533 2452 * @param[out] second Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2453 * Shutdown Timeout Period = 175.8ms × 2^(8+THR).
metin.ozkan@analog.com 0:00d2a8670533 2454 *
metin.ozkan@analog.com 0:00d2a8670533 2455 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2456 */
metin.ozkan@analog.com 0:00d2a8670533 2457 int get_fg_shdn_thr(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2458
metin.ozkan@analog.com 0:00d2a8670533 2459 /**
metin.ozkan@analog.com 0:00d2a8670533 2460 * @brief Set bit field of fuel-gauge TimerH (0xBE) register.
metin.ozkan@analog.com 0:00d2a8670533 2461 *
metin.ozkan@analog.com 0:00d2a8670533 2462 * @param[in] hour to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2463 * A 3.2-hour LSB gives a full-scale range for the register of up to 23.94 years.
metin.ozkan@analog.com 0:00d2a8670533 2464 *
metin.ozkan@analog.com 0:00d2a8670533 2465 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2466 */
metin.ozkan@analog.com 0:00d2a8670533 2467 int set_fg_timerh(float hour);
metin.ozkan@analog.com 0:00d2a8670533 2468
metin.ozkan@analog.com 0:00d2a8670533 2469 /**
metin.ozkan@analog.com 0:00d2a8670533 2470 * @brief Get bit field of fuel-gauge TimerH (0xBE) register.
metin.ozkan@analog.com 0:00d2a8670533 2471 *
metin.ozkan@analog.com 0:00d2a8670533 2472 * @param[out] hour Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2473 * A 3.2-hour LSB gives a full-scale range for the register of up to 23.94 years.
metin.ozkan@analog.com 0:00d2a8670533 2474 *
metin.ozkan@analog.com 0:00d2a8670533 2475 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2476 */
metin.ozkan@analog.com 0:00d2a8670533 2477 int get_fg_timerh(float *hour);
metin.ozkan@analog.com 0:00d2a8670533 2478
metin.ozkan@analog.com 0:00d2a8670533 2479 /*ModelGauge m5 Output Registers*/
metin.ozkan@analog.com 0:00d2a8670533 2480
metin.ozkan@analog.com 0:00d2a8670533 2481 /**
metin.ozkan@analog.com 0:00d2a8670533 2482 * @brief Set bit field of fuel-gauge RepCap (0x05) register.
metin.ozkan@analog.com 0:00d2a8670533 2483 * RepCap is the reported remaining capacity in mAh.
metin.ozkan@analog.com 0:00d2a8670533 2484 *
metin.ozkan@analog.com 0:00d2a8670533 2485 * @param[in] repCapmAh to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2486 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2487 *
metin.ozkan@analog.com 0:00d2a8670533 2488 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2489 */
metin.ozkan@analog.com 0:00d2a8670533 2490 int set_fg_rep_cap(float repCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2491
metin.ozkan@analog.com 0:00d2a8670533 2492 /**
metin.ozkan@analog.com 0:00d2a8670533 2493 * @brief Get bit field of fuel-gauge RepCap (0x05) register.
metin.ozkan@analog.com 0:00d2a8670533 2494 * RepCap is the reported remaining capacity in mAh.
metin.ozkan@analog.com 0:00d2a8670533 2495 *
metin.ozkan@analog.com 0:00d2a8670533 2496 * @param[out] repCapmAh Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2497 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2498 *
metin.ozkan@analog.com 0:00d2a8670533 2499 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2500 */
metin.ozkan@analog.com 0:00d2a8670533 2501 int get_fg_rep_cap(float *repCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2502
metin.ozkan@analog.com 0:00d2a8670533 2503 /**
metin.ozkan@analog.com 0:00d2a8670533 2504 * @brief Set bit field of fuel-gauge RepSOC (0x06) register.
metin.ozkan@analog.com 0:00d2a8670533 2505 *
metin.ozkan@analog.com 0:00d2a8670533 2506 * @param[in] percent to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2507 * LSB is 1/256%. Min value is 0.0% and Max value is 255.9961%.
metin.ozkan@analog.com 0:00d2a8670533 2508 *
metin.ozkan@analog.com 0:00d2a8670533 2509 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2510 */
metin.ozkan@analog.com 0:00d2a8670533 2511 int set_fg_rep_soc(float percent);
metin.ozkan@analog.com 0:00d2a8670533 2512
metin.ozkan@analog.com 0:00d2a8670533 2513 /**
metin.ozkan@analog.com 0:00d2a8670533 2514 * @brief Get bit field of fuel-gauge RepSOC (0x06) register.
metin.ozkan@analog.com 0:00d2a8670533 2515 *
metin.ozkan@analog.com 0:00d2a8670533 2516 * @param[out] percent Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2517 * LSB is 1/256%. Min value is 0.0% and Max value is 255.9961%.
metin.ozkan@analog.com 0:00d2a8670533 2518 *
metin.ozkan@analog.com 0:00d2a8670533 2519 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2520 */
metin.ozkan@analog.com 0:00d2a8670533 2521 int get_fg_rep_soc(float *percent);
metin.ozkan@analog.com 0:00d2a8670533 2522
metin.ozkan@analog.com 0:00d2a8670533 2523 /**
metin.ozkan@analog.com 0:00d2a8670533 2524 * @brief Set bit field of fuel-gauge AvSOC (0x0E) register.
metin.ozkan@analog.com 0:00d2a8670533 2525 *
metin.ozkan@analog.com 0:00d2a8670533 2526 * @param[in] percent to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2527 * LSB is 1/256%. Min value is 0.0% and Max value is 255.9961%.
metin.ozkan@analog.com 0:00d2a8670533 2528 *
metin.ozkan@analog.com 0:00d2a8670533 2529 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2530 */
metin.ozkan@analog.com 0:00d2a8670533 2531 int set_fg_av_soc(float percent);
metin.ozkan@analog.com 0:00d2a8670533 2532
metin.ozkan@analog.com 0:00d2a8670533 2533 /**
metin.ozkan@analog.com 0:00d2a8670533 2534 * @brief Get bit field of fuel-gauge AvSOC (0x0E) register.
metin.ozkan@analog.com 0:00d2a8670533 2535 *
metin.ozkan@analog.com 0:00d2a8670533 2536 * @param[out] percent Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2537 * LSB is 1/256%. Min value is 0.0% and Max value is 255.9961%.
metin.ozkan@analog.com 0:00d2a8670533 2538 *
metin.ozkan@analog.com 0:00d2a8670533 2539 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2540 */
metin.ozkan@analog.com 0:00d2a8670533 2541 int get_fg_av_soc(float *percent);
metin.ozkan@analog.com 0:00d2a8670533 2542
metin.ozkan@analog.com 0:00d2a8670533 2543 /**
metin.ozkan@analog.com 0:00d2a8670533 2544 * @brief Set bit field of fuel-gauge FullCapRep (0x10) register.
metin.ozkan@analog.com 0:00d2a8670533 2545 *
metin.ozkan@analog.com 0:00d2a8670533 2546 * @param[in] repCapmAh to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2547 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2548 *
metin.ozkan@analog.com 0:00d2a8670533 2549 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2550 */
metin.ozkan@analog.com 0:00d2a8670533 2551 int set_fg_full_cap_reg(float repCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2552
metin.ozkan@analog.com 0:00d2a8670533 2553 /**
metin.ozkan@analog.com 0:00d2a8670533 2554 * @brief Get bit field of fuel-gauge FullCapRep (0x10) register.
metin.ozkan@analog.com 0:00d2a8670533 2555 *
metin.ozkan@analog.com 0:00d2a8670533 2556 * @param[out] repCapmAh Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2557 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2558 *
metin.ozkan@analog.com 0:00d2a8670533 2559 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2560 */
metin.ozkan@analog.com 0:00d2a8670533 2561 int get_fg_full_cap_reg(float *repCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2562
metin.ozkan@analog.com 0:00d2a8670533 2563 /**
metin.ozkan@analog.com 0:00d2a8670533 2564 * @brief Set bit field of fuel-gauge TTE (0x11) register.
metin.ozkan@analog.com 0:00d2a8670533 2565 *
metin.ozkan@analog.com 0:00d2a8670533 2566 * @param[in] minute to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2567 * LSB is 5.625s. Min value is 0.0s and Max value is 102.3984h.
metin.ozkan@analog.com 0:00d2a8670533 2568 *
metin.ozkan@analog.com 0:00d2a8670533 2569 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2570 */
metin.ozkan@analog.com 0:00d2a8670533 2571 int set_fg_tte(float minute);
metin.ozkan@analog.com 0:00d2a8670533 2572
metin.ozkan@analog.com 0:00d2a8670533 2573 /**
metin.ozkan@analog.com 0:00d2a8670533 2574 * @brief Get bit field of fuel-gauge TTE (0x11) register.
metin.ozkan@analog.com 0:00d2a8670533 2575 *
metin.ozkan@analog.com 0:00d2a8670533 2576 * @param[out] minute Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2577 * LSB is 5.625s. Min value is 0.0s and Max value is 102.3984h.
metin.ozkan@analog.com 0:00d2a8670533 2578 *
metin.ozkan@analog.com 0:00d2a8670533 2579 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2580 */
metin.ozkan@analog.com 0:00d2a8670533 2581 int get_fg_tte(float *minute);
metin.ozkan@analog.com 0:00d2a8670533 2582
metin.ozkan@analog.com 0:00d2a8670533 2583 /**
metin.ozkan@analog.com 0:00d2a8670533 2584 * @brief Set bit field of fuel-gauge RCell (0x14) register.
metin.ozkan@analog.com 0:00d2a8670533 2585 *
metin.ozkan@analog.com 0:00d2a8670533 2586 * @param[in] resOhm to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2587 * LSB is 1/4096Ohm. Min value is 0.0Ohm and Max value is 15.99976Ohm.
metin.ozkan@analog.com 0:00d2a8670533 2588 *
metin.ozkan@analog.com 0:00d2a8670533 2589 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2590 */
metin.ozkan@analog.com 0:00d2a8670533 2591 int set_fg_rcell(float resOhm);
metin.ozkan@analog.com 0:00d2a8670533 2592
metin.ozkan@analog.com 0:00d2a8670533 2593 /**
metin.ozkan@analog.com 0:00d2a8670533 2594 * @brief Get bit field of fuel-gauge RCell (0x14) register.
metin.ozkan@analog.com 0:00d2a8670533 2595 *
metin.ozkan@analog.com 0:00d2a8670533 2596 * @param[out] resOhm Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2597 * LSB is 1/4096Ohm. Min value is 0.0Ohm and Max value is 15.99976Ohm.
metin.ozkan@analog.com 0:00d2a8670533 2598 *
metin.ozkan@analog.com 0:00d2a8670533 2599 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2600 */
metin.ozkan@analog.com 0:00d2a8670533 2601 int get_fg_rcell(float *resOhm);
metin.ozkan@analog.com 0:00d2a8670533 2602
metin.ozkan@analog.com 0:00d2a8670533 2603 /**
metin.ozkan@analog.com 0:00d2a8670533 2604 * @brief Set bit field of fuel-gauge Cycles (0x17) register.
metin.ozkan@analog.com 0:00d2a8670533 2605 *
metin.ozkan@analog.com 0:00d2a8670533 2606 * @param[in] percent to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2607 * The LSB indicates 1% of a battery cycle (1% charge + 1% discharge).
metin.ozkan@analog.com 0:00d2a8670533 2608 *
metin.ozkan@analog.com 0:00d2a8670533 2609 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2610 */
metin.ozkan@analog.com 0:00d2a8670533 2611 int set_fg_cycles(uint16_t percent);
metin.ozkan@analog.com 0:00d2a8670533 2612
metin.ozkan@analog.com 0:00d2a8670533 2613 /**
metin.ozkan@analog.com 0:00d2a8670533 2614 * @brief Get bit field of fuel-gauge Cycles (0x17) register.
metin.ozkan@analog.com 0:00d2a8670533 2615 *
metin.ozkan@analog.com 0:00d2a8670533 2616 * @param[out] percent Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2617 * The LSB indicates 1% of a battery cycle (1% charge + 1% discharge).
metin.ozkan@analog.com 0:00d2a8670533 2618 *
metin.ozkan@analog.com 0:00d2a8670533 2619 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2620 */
metin.ozkan@analog.com 0:00d2a8670533 2621 int get_fg_cycles(uint16_t *percent);
metin.ozkan@analog.com 0:00d2a8670533 2622
metin.ozkan@analog.com 0:00d2a8670533 2623 /**
metin.ozkan@analog.com 0:00d2a8670533 2624 * @brief Set bit field of fuel-gauge AvCap (0x1F) register.
metin.ozkan@analog.com 0:00d2a8670533 2625 *
metin.ozkan@analog.com 0:00d2a8670533 2626 * @param[in] avCapmAh to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2627 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2628 *
metin.ozkan@analog.com 0:00d2a8670533 2629 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2630 */
metin.ozkan@analog.com 0:00d2a8670533 2631 int set_fg_av_cap(float avCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2632
metin.ozkan@analog.com 0:00d2a8670533 2633 /**
metin.ozkan@analog.com 0:00d2a8670533 2634 * @brief Get bit field of fuel-gauge AvCap (0x1F) register.
metin.ozkan@analog.com 0:00d2a8670533 2635 *
metin.ozkan@analog.com 0:00d2a8670533 2636 * @param[out] avCapmAh Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2637 * LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
metin.ozkan@analog.com 0:00d2a8670533 2638 *
metin.ozkan@analog.com 0:00d2a8670533 2639 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2640 */
metin.ozkan@analog.com 0:00d2a8670533 2641 int get_fg_av_cap(float *avCapmAh);
metin.ozkan@analog.com 0:00d2a8670533 2642
metin.ozkan@analog.com 0:00d2a8670533 2643 /**
metin.ozkan@analog.com 0:00d2a8670533 2644 * @brief Set bit field of fuel-gauge TTF (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 2645 *
metin.ozkan@analog.com 0:00d2a8670533 2646 * @param[in] second to be written to register.
metin.ozkan@analog.com 0:00d2a8670533 2647 * LSB is 5.625s. Min value is 0.0s and Max value is 102.3984h.
metin.ozkan@analog.com 0:00d2a8670533 2648 *
metin.ozkan@analog.com 0:00d2a8670533 2649 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2650 */
metin.ozkan@analog.com 0:00d2a8670533 2651 int set_fg_ttf(float second);
metin.ozkan@analog.com 0:00d2a8670533 2652
metin.ozkan@analog.com 0:00d2a8670533 2653 /**
metin.ozkan@analog.com 0:00d2a8670533 2654 * @brief Get bit field of fuel-gauge TTF (0x20) register.
metin.ozkan@analog.com 0:00d2a8670533 2655 *
metin.ozkan@analog.com 0:00d2a8670533 2656 * @param[out] second Pointer to save result value.
metin.ozkan@analog.com 0:00d2a8670533 2657 * LSB is 5.625s. Min value is 0.0s and Max value is 102.3984h.
metin.ozkan@analog.com 0:00d2a8670533 2658 *
metin.ozkan@analog.com 0:00d2a8670533 2659 * @return 0 on success, error code on failure.
metin.ozkan@analog.com 0:00d2a8670533 2660 */
metin.ozkan@analog.com 0:00d2a8670533 2661 int get_fg_ttf(float *second);
metin.ozkan@analog.com 0:00d2a8670533 2662
metin.ozkan@analog.com 0:00d2a8670533 2663 /**
metin.ozkan@analog.com 0:00d2a8670533 2664 * @brief Disable all interrupts
metin.ozkan@analog.com 0:00d2a8670533 2665 *
metin.ozkan@analog.com 0:00d2a8670533 2666 * @return 0 on success, error code on failure
metin.ozkan@analog.com 0:00d2a8670533 2667 */
metin.ozkan@analog.com 0:00d2a8670533 2668 int irq_disable_all();
metin.ozkan@analog.com 0:00d2a8670533 2669
metin.ozkan@analog.com 0:00d2a8670533 2670 /**
metin.ozkan@analog.com 0:00d2a8670533 2671 * @brief Set Interrupt Handler for a Specific Interrupt ID.
metin.ozkan@analog.com 0:00d2a8670533 2672 *
metin.ozkan@analog.com 0:00d2a8670533 2673 * @param[in] id reg_bit_reg_bit_int_glbl_t id, one of INTR_ID_*.
metin.ozkan@analog.com 0:00d2a8670533 2674 * @param[in] func Interrupt handler function.
metin.ozkan@analog.com 0:00d2a8670533 2675 * @param[in] cb Interrupt handler data.
metin.ozkan@analog.com 0:00d2a8670533 2676 */
metin.ozkan@analog.com 0:00d2a8670533 2677 void set_interrupt_handler(reg_bit_int_glbl_t id, interrupt_handler_function func, void *cb);
metin.ozkan@analog.com 0:00d2a8670533 2678 };
metin.ozkan@analog.com 0:00d2a8670533 2679 #endif