SIMO PMIC with 300mA Switching Charger

Committer:
Okan Sahin
Date:
Mon Aug 22 19:05:12 2022 +0300
Revision:
0:047a7089311e
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Okan Sahin 0:047a7089311e 1 /*******************************************************************************
Okan Sahin 0:047a7089311e 2 * Copyright (C) 2022 Analog Devices, Inc., All rights Reserved.
Okan Sahin 0:047a7089311e 3 *
Okan Sahin 0:047a7089311e 4 * This software is protected by copyright laws of the United States and
Okan Sahin 0:047a7089311e 5 * of foreign countries. This material may also be protected by patent laws
Okan Sahin 0:047a7089311e 6 * and technology transfer regulations of the United States and of foreign
Okan Sahin 0:047a7089311e 7 * countries. This software is furnished under a license agreement and/or a
Okan Sahin 0:047a7089311e 8 * nondisclosure agreement and may only be used or reproduced in accordance
Okan Sahin 0:047a7089311e 9 * with the terms of those agreements. Dissemination of this information to
Okan Sahin 0:047a7089311e 10 * any party or parties not specified in the license agreement and/or
Okan Sahin 0:047a7089311e 11 * nondisclosure agreement is expressly prohibited.
Okan Sahin 0:047a7089311e 12 *
Okan Sahin 0:047a7089311e 13 * The above copyright notice and this permission notice shall be included
Okan Sahin 0:047a7089311e 14 * in all copies or substantial portions of the Software.
Okan Sahin 0:047a7089311e 15 *
Okan Sahin 0:047a7089311e 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
Okan Sahin 0:047a7089311e 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Okan Sahin 0:047a7089311e 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Okan Sahin 0:047a7089311e 19 * IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY CLAIM, DAMAGES
Okan Sahin 0:047a7089311e 20 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
Okan Sahin 0:047a7089311e 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
Okan Sahin 0:047a7089311e 22 * OTHER DEALINGS IN THE SOFTWARE.
Okan Sahin 0:047a7089311e 23 *
Okan Sahin 0:047a7089311e 24 * Except as contained in this notice, the name of Maxim Integrated
Okan Sahin 0:047a7089311e 25 * Products, Inc. shall not be used except as stated in the Maxim Integrated
Okan Sahin 0:047a7089311e 26 * Products, Inc. Branding Policy.
Okan Sahin 0:047a7089311e 27 *
Okan Sahin 0:047a7089311e 28 * The mere transfer of this software does not imply any licenses
Okan Sahin 0:047a7089311e 29 * of trade secrets, proprietary technology, copyrights, patents,
Okan Sahin 0:047a7089311e 30 * trademarks, maskwork rights, or any other form of intellectual
Okan Sahin 0:047a7089311e 31 * property whatsoever. Analog Devices, Inc. retains all
Okan Sahin 0:047a7089311e 32 * ownership rights.
Okan Sahin 0:047a7089311e 33 *******************************************************************************
Okan Sahin 0:047a7089311e 34 */
Okan Sahin 0:047a7089311e 35
Okan Sahin 0:047a7089311e 36 #ifndef _MAX77659_H_
Okan Sahin 0:047a7089311e 37 #define _MAX77659_H_
Okan Sahin 0:047a7089311e 38
Okan Sahin 0:047a7089311e 39 #include "mbed.h"
Okan Sahin 0:047a7089311e 40 #include "MAX77659_regs.h"
Okan Sahin 0:047a7089311e 41
Okan Sahin 0:047a7089311e 42 #define MAX77659_NO_ERROR 0
Okan Sahin 0:047a7089311e 43 #define MAX77659_VALUE_NULL -1
Okan Sahin 0:047a7089311e 44 #define MAX77659_WRITE_DATA_FAILED -2
Okan Sahin 0:047a7089311e 45 #define MAX77659_READ_DATA_FAILED -3
Okan Sahin 0:047a7089311e 46 #define MAX77659_INVALID_DATA -4
Okan Sahin 0:047a7089311e 47
Okan Sahin 0:047a7089311e 48 #define MAX77659_I2C_ADDRESS 0x80
Okan Sahin 0:047a7089311e 49
Okan Sahin 0:047a7089311e 50 /**
Okan Sahin 0:047a7089311e 51 * @brief MAX77659 SIMO PMIC with 300mA Switching Charger.
Okan Sahin 0:047a7089311e 52 *
Okan Sahin 0:047a7089311e 53 * @details The MAX77659 provides highly-efficient integrated battery
Okan Sahin 0:047a7089311e 54 * charging and power supply solutions for low-power applications where size and efficiency are critical.
Okan Sahin 0:047a7089311e 55 * https://www.maximintegrated.com/en/products/power/power-management-ics/MAX77659.html
Okan Sahin 0:047a7089311e 56 *
Okan Sahin 0:047a7089311e 57 * @code
Okan Sahin 0:047a7089311e 58 * @endcode
Okan Sahin 0:047a7089311e 59 */
Okan Sahin 0:047a7089311e 60
Okan Sahin 0:047a7089311e 61 class MAX77659
Okan Sahin 0:047a7089311e 62 {
Okan Sahin 0:047a7089311e 63 private:
Okan Sahin 0:047a7089311e 64 I2C *i2c_handler;
Okan Sahin 0:047a7089311e 65 InterruptIn *irq_pin; // interrupt pin
Okan Sahin 0:047a7089311e 66
Okan Sahin 0:047a7089311e 67 /**
Okan Sahin 0:047a7089311e 68 * @brief Register Addresses
Okan Sahin 0:047a7089311e 69 * @details Enumerated MAX77659 register addresses
Okan Sahin 0:047a7089311e 70 */
Okan Sahin 0:047a7089311e 71 typedef enum {
Okan Sahin 0:047a7089311e 72 /*Global*/
Okan Sahin 0:047a7089311e 73 INT_GLBL0 = 0x00, // Interrupt Status 0
Okan Sahin 0:047a7089311e 74 INT_GLBL1 = 0x04, // Interrupt Status 1
Okan Sahin 0:047a7089311e 75 ERCFLAG = 0x05, // Flags
Okan Sahin 0:047a7089311e 76 STAT_GLBL = 0x06, // Global Status
Okan Sahin 0:047a7089311e 77 INTM_GLBL1 = 0x08, // Interrupt Mask 1
Okan Sahin 0:047a7089311e 78 INTM_GLBL0 = 0x09, // Interrupt Mask 0
Okan Sahin 0:047a7089311e 79 CNFG_GLBL = 0x10, // Configuration Global
Okan Sahin 0:047a7089311e 80 CNFG_GPIO0 = 0x11, // GPIO0 Configuration
Okan Sahin 0:047a7089311e 81 CNFG_GPIO1 = 0x12, // GPIO1 Configuration
Okan Sahin 0:047a7089311e 82 CID = 0x14, // Chip Identification Code
Okan Sahin 0:047a7089311e 83 CNFG_WDT = 0x17, // Configuration WatchDog Timer
Okan Sahin 0:047a7089311e 84 /*Charger*/
Okan Sahin 0:047a7089311e 85 INT_CHG = 0x01, // Charger Interrupt Status
Okan Sahin 0:047a7089311e 86 STAT_CHG_A = 0x02, // Charger Status A
Okan Sahin 0:047a7089311e 87 STAT_CHG_B = 0x03, // Charger Status B
Okan Sahin 0:047a7089311e 88 INT_M_CHG = 0x07, // Charger Interrupt Mask
Okan Sahin 0:047a7089311e 89 CNFG_CHG_A = 0x20, // Charger Configuration A
Okan Sahin 0:047a7089311e 90 CNFG_CHG_B = 0x21, // Charger Configuration B
Okan Sahin 0:047a7089311e 91 CNFG_CHG_C = 0x22, // Charger Configuration C
Okan Sahin 0:047a7089311e 92 CNFG_CHG_D = 0x23, // Charger Configuration D
Okan Sahin 0:047a7089311e 93 CNFG_CHG_E = 0x24, // Charger Configuration E
Okan Sahin 0:047a7089311e 94 CNFG_CHG_F = 0x25, // Charger Configuration F
Okan Sahin 0:047a7089311e 95 CNFG_CHG_G = 0x26, // Charger Configuration G
Okan Sahin 0:047a7089311e 96 CNFG_CHG_H = 0x27, // Charger Configuration H
Okan Sahin 0:047a7089311e 97 CNFG_CHG_I = 0x28, // Charger Configuration I
Okan Sahin 0:047a7089311e 98 /*SBB*/
Okan Sahin 0:047a7089311e 99 CNFG_SBB0_A = 0x29, // SIMO Buck-Boost 0 Configuration A
Okan Sahin 0:047a7089311e 100 CNFG_SBB0_B = 0x2A, // SIMO Buck-Boost 0 Configuration B
Okan Sahin 0:047a7089311e 101 CNFG_SBB1_A = 0x2B, // SIMO Buck-Boost 1 Configuration A
Okan Sahin 0:047a7089311e 102 CNFG_SBB1_B = 0x2C, // SIMO Buck-Boost 1 Configuration B
Okan Sahin 0:047a7089311e 103 CNFG_SBB2_A = 0x2D, // SIMO Buck-Boost 2 Configuration A
Okan Sahin 0:047a7089311e 104 CNFG_SBB2_B = 0x2E, // SIMO Buck-Boost 2 Configuration B
Okan Sahin 0:047a7089311e 105 CNFG_SBB_TOP = 0x2F, // SIMO Buck-Boost Configuration
Okan Sahin 0:047a7089311e 106 CNFG_SBB_TOP_B = 0x30, // SIMO Buck-Boost Configuration
Okan Sahin 0:047a7089311e 107 /*LDO*/
Okan Sahin 0:047a7089311e 108 CNFG_LDO0_A = 0x38, // LDO Configuration A
Okan Sahin 0:047a7089311e 109 CNFG_LDO0_B = 0x39 // LDO Configuration B
Okan Sahin 0:047a7089311e 110 } reg_t;
Okan Sahin 0:047a7089311e 111
Okan Sahin 0:047a7089311e 112 /**
Okan Sahin 0:047a7089311e 113 * @brief Interrupt handler function
Okan Sahin 0:047a7089311e 114 */
Okan Sahin 0:047a7089311e 115 void interrupt_handler();
Okan Sahin 0:047a7089311e 116
Okan Sahin 0:047a7089311e 117 void (MAX77659::*funcptr)(void);
Okan Sahin 0:047a7089311e 118
Okan Sahin 0:047a7089311e 119 /**
Okan Sahin 0:047a7089311e 120 * @brief Post interrupt jobs after interrupt is detected.
Okan Sahin 0:047a7089311e 121 */
Okan Sahin 0:047a7089311e 122 void post_interrupt_work();
Okan Sahin 0:047a7089311e 123
Okan Sahin 0:047a7089311e 124 Thread *post_intr_work_thread;
Okan Sahin 0:047a7089311e 125
Okan Sahin 0:047a7089311e 126 struct handler {
Okan Sahin 0:047a7089311e 127 void (*func)(void *);
Okan Sahin 0:047a7089311e 128 void *cb;
Okan Sahin 0:047a7089311e 129 };
Okan Sahin 0:047a7089311e 130
Okan Sahin 0:047a7089311e 131 handler *interrupt_handler_list;
Okan Sahin 0:047a7089311e 132
Okan Sahin 0:047a7089311e 133 public:
Okan Sahin 0:047a7089311e 134 /**
Okan Sahin 0:047a7089311e 135 * @brief Register Configuration
Okan Sahin 0:047a7089311e 136 * All Interrupt Flags combined from INT_GLBL0, INT_GLBL1 and INT_CHG
Okan Sahin 0:047a7089311e 137 *
Okan Sahin 0:047a7089311e 138 * @details
Okan Sahin 0:047a7089311e 139 * - Register : ERCFLAG (0x05)
Okan Sahin 0:047a7089311e 140 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 141 * - Default : 0x0
Okan Sahin 0:047a7089311e 142 * - Description : Enumerated interrupt flags
Okan Sahin 0:047a7089311e 143 */
Okan Sahin 0:047a7089311e 144 typedef enum {
Okan Sahin 0:047a7089311e 145 INT_GLBL0_GPI0_F,
Okan Sahin 0:047a7089311e 146 INT_GLBL0_GPI0_R,
Okan Sahin 0:047a7089311e 147 INT_GLBL0_NEN_F,
Okan Sahin 0:047a7089311e 148 INT_GLBL0_NEN_R,
Okan Sahin 0:047a7089311e 149 INT_GLBL0_TJAL1_R,
Okan Sahin 0:047a7089311e 150 INT_GLBL0_TJAL2_R,
Okan Sahin 0:047a7089311e 151 INT_GLBL0_DOD_R,
Okan Sahin 0:047a7089311e 152 INT_GLBL1_GPI1_F,
Okan Sahin 0:047a7089311e 153 INT_GLBL1_GPI1_R,
Okan Sahin 0:047a7089311e 154 INT_GLBL1_SBB_TO,
Okan Sahin 0:047a7089311e 155 INT_GLBL1_LDO_F,
Okan Sahin 0:047a7089311e 156 INT_CHG_THM_I,
Okan Sahin 0:047a7089311e 157 INT_CHG_CGH_I,
Okan Sahin 0:047a7089311e 158 INT_CHG_CHGIN_I,
Okan Sahin 0:047a7089311e 159 INT_CHG_TJ_REG_I,
Okan Sahin 0:047a7089311e 160 INT_CHG_SYS_CTRL_I,
Okan Sahin 0:047a7089311e 161 INT_CHG_END
Okan Sahin 0:047a7089311e 162 } reg_bit_int_glbl_t;
Okan Sahin 0:047a7089311e 163
Okan Sahin 0:047a7089311e 164 /**
Okan Sahin 0:047a7089311e 165 * MAX77659 constructor.
Okan Sahin 0:047a7089311e 166 */
Okan Sahin 0:047a7089311e 167 MAX77659(I2C *i2c, PinName IRQPin = NC);
Okan Sahin 0:047a7089311e 168
Okan Sahin 0:047a7089311e 169 /**
Okan Sahin 0:047a7089311e 170 * MAX77659 destructor.
Okan Sahin 0:047a7089311e 171 */
Okan Sahin 0:047a7089311e 172 ~MAX77659();
Okan Sahin 0:047a7089311e 173
Okan Sahin 0:047a7089311e 174 /**
Okan Sahin 0:047a7089311e 175 * @brief Function pointer type to interrupt handler function
Okan Sahin 0:047a7089311e 176 */
Okan Sahin 0:047a7089311e 177 typedef void (*interrupt_handler_function)(void *);
Okan Sahin 0:047a7089311e 178
Okan Sahin 0:047a7089311e 179 /**
Okan Sahin 0:047a7089311e 180 * @brief Read from a register.
Okan Sahin 0:047a7089311e 181 *
Okan Sahin 0:047a7089311e 182 * @param[in] reg Address of a register to be read.
Okan Sahin 0:047a7089311e 183 * @param[out] value Pointer to save result value.
Okan Sahin 0:047a7089311e 184 *
Okan Sahin 0:047a7089311e 185 * @returns 0 on success, negative error code on failure.
Okan Sahin 0:047a7089311e 186 */
Okan Sahin 0:047a7089311e 187 int read_register(uint8_t reg, uint8_t *value);
Okan Sahin 0:047a7089311e 188
Okan Sahin 0:047a7089311e 189 /**
Okan Sahin 0:047a7089311e 190 * @brief Write to a register.
Okan Sahin 0:047a7089311e 191 *
Okan Sahin 0:047a7089311e 192 * @param[in] reg Address of a register to be written.
Okan Sahin 0:047a7089311e 193 * @param[out] value Pointer of value to be written to register.
Okan Sahin 0:047a7089311e 194 *
Okan Sahin 0:047a7089311e 195 * @returns 0 on success, negative error code on failure.
Okan Sahin 0:047a7089311e 196 */
Okan Sahin 0:047a7089311e 197 int write_register(uint8_t reg, const uint8_t *value);
Okan Sahin 0:047a7089311e 198
Okan Sahin 0:047a7089311e 199 /**
Okan Sahin 0:047a7089311e 200 * @brief Register Configuration
Okan Sahin 0:047a7089311e 201 *
Okan Sahin 0:047a7089311e 202 * @details
Okan Sahin 0:047a7089311e 203 * - Register : ERCFLAG (0x05)
Okan Sahin 0:047a7089311e 204 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 205 * - Default : 0x0
Okan Sahin 0:047a7089311e 206 * - Description : Event Recorder Flags.
Okan Sahin 0:047a7089311e 207 */
Okan Sahin 0:047a7089311e 208 typedef enum {
Okan Sahin 0:047a7089311e 209 ERCFLAG_TOVLD,
Okan Sahin 0:047a7089311e 210 ERCFLAG_SYSOVLO,
Okan Sahin 0:047a7089311e 211 ERCFLAG_AVLUVLO,
Okan Sahin 0:047a7089311e 212 ERCFLAG_MRST,
Okan Sahin 0:047a7089311e 213 ERCFLAG_SFT_OFF_F,
Okan Sahin 0:047a7089311e 214 ERCFLAG_SFT_CRST_F,
Okan Sahin 0:047a7089311e 215 ERCFLAG_WDT_OFF,
Okan Sahin 0:047a7089311e 216 ERCFLAG_WDT_RST
Okan Sahin 0:047a7089311e 217 }reg_bit_ercflag_t;
Okan Sahin 0:047a7089311e 218
Okan Sahin 0:047a7089311e 219 /**
Okan Sahin 0:047a7089311e 220 * @brief Get bit field of ERCFLAG (0x05) register.
Okan Sahin 0:047a7089311e 221 *
Okan Sahin 0:047a7089311e 222 * @param[in] bit_field ERCFLAG register bit field to be written.
Okan Sahin 0:047a7089311e 223 * @param[out] flag Pointer to save result of ercglag bit states.
Okan Sahin 0:047a7089311e 224 * For individual bit
Okan Sahin 0:047a7089311e 225 * 0x0: ERCFLAG has not occurred,
Okan Sahin 0:047a7089311e 226 * 0x1: ERCFLAG has occurred.
Okan Sahin 0:047a7089311e 227 *
Okan Sahin 0:047a7089311e 228 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 229 */
Okan Sahin 0:047a7089311e 230 int get_ercflag(reg_bit_ercflag_t bit_field, uint8_t *flag);
Okan Sahin 0:047a7089311e 231
Okan Sahin 0:047a7089311e 232 /**
Okan Sahin 0:047a7089311e 233 * @brief Register Configuration
Okan Sahin 0:047a7089311e 234 *
Okan Sahin 0:047a7089311e 235 * @details
Okan Sahin 0:047a7089311e 236 * - Register : STAT_GLBL (0x06)
Okan Sahin 0:047a7089311e 237 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 238 * - Default : 0x0
Okan Sahin 0:047a7089311e 239 * - Description : Event Recorder Flags.
Okan Sahin 0:047a7089311e 240 */
Okan Sahin 0:047a7089311e 241 typedef enum {
Okan Sahin 0:047a7089311e 242 STAT_GLBL_STAT_IRQ,
Okan Sahin 0:047a7089311e 243 STAT_GLBL_STAT_EN,
Okan Sahin 0:047a7089311e 244 STAT_GLBL_TJAL1_S,
Okan Sahin 0:047a7089311e 245 STAT_GLBL_TJAL2_S,
Okan Sahin 0:047a7089311e 246 STAT_GLBL_RSVD,
Okan Sahin 0:047a7089311e 247 STAT_GLBL_DOD_S,
Okan Sahin 0:047a7089311e 248 STAT_GLBL_BOK,
Okan Sahin 0:047a7089311e 249 STAT_GLBL_DIDM
Okan Sahin 0:047a7089311e 250 }reg_bit_stat_glbl_t;
Okan Sahin 0:047a7089311e 251
Okan Sahin 0:047a7089311e 252 /**
Okan Sahin 0:047a7089311e 253 * @brief Get bit field of STAT_GLBL (0x06) register.
Okan Sahin 0:047a7089311e 254 *
Okan Sahin 0:047a7089311e 255 * @param[in] bit_field STAT_GLBL register bit field to be written.
Okan Sahin 0:047a7089311e 256 * @param[out] status Pointer to save result of Status Global bit state.
Okan Sahin 0:047a7089311e 257 *
Okan Sahin 0:047a7089311e 258 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 259 */
Okan Sahin 0:047a7089311e 260 int get_stat_glbl(reg_bit_stat_glbl_t bit_field, uint8_t *status);
Okan Sahin 0:047a7089311e 261
Okan Sahin 0:047a7089311e 262 /**
Okan Sahin 0:047a7089311e 263 * @brief Register Configuration
Okan Sahin 0:047a7089311e 264 *
Okan Sahin 0:047a7089311e 265 * @details
Okan Sahin 0:047a7089311e 266 * - Register : INT_M_CHG (0x07), INTM_GLBL1 (0x08) and INTM_GLBL0 (0x09)
Okan Sahin 0:047a7089311e 267 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 268 * - Default : 0x0
Okan Sahin 0:047a7089311e 269 * - Description : All interrupt mask bits.
Okan Sahin 0:047a7089311e 270 */
Okan Sahin 0:047a7089311e 271 typedef enum {
Okan Sahin 0:047a7089311e 272 INT_M_CHG_THM_M,
Okan Sahin 0:047a7089311e 273 INT_M_CHG_CHG_M,
Okan Sahin 0:047a7089311e 274 INT_M_CHG_CHGIN_M,
Okan Sahin 0:047a7089311e 275 INT_M_CHG_TJ_REG_M,
Okan Sahin 0:047a7089311e 276 INT_M_CHG_SYS_CTRL_M,
Okan Sahin 0:047a7089311e 277 INTM_GLBL1_GPI1_FM = 8,
Okan Sahin 0:047a7089311e 278 INTM_GLBL1_GPI1_RM,
Okan Sahin 0:047a7089311e 279 INTM_GLBL1_SBB_TO_M,
Okan Sahin 0:047a7089311e 280 INTM_GLBL1_LDO_M,
Okan Sahin 0:047a7089311e 281 INTM_GLBL0_GPI0_FM = 16,
Okan Sahin 0:047a7089311e 282 INTM_GLBL0_GPI0_RM,
Okan Sahin 0:047a7089311e 283 INTM_GLBL0_nEN_FM,
Okan Sahin 0:047a7089311e 284 INTM_GLBL0_nEN_RM,
Okan Sahin 0:047a7089311e 285 INTM_GLBL0_TJAL1_RM,
Okan Sahin 0:047a7089311e 286 INTM_GLBL0_TJAL2_RM,
Okan Sahin 0:047a7089311e 287 INTM_GLBL0_DOD_RM,
Okan Sahin 0:047a7089311e 288 INTM_NUM_OF_BIT
Okan Sahin 0:047a7089311e 289 }reg_bit_int_mask_t;
Okan Sahin 0:047a7089311e 290
Okan Sahin 0:047a7089311e 291 /**
Okan Sahin 0:047a7089311e 292 * @brief Set bit field of INT_M_CHG (0x07), INTM_GLBL1 (0x08) or INTM_GLBL0 (0x09) register.
Okan Sahin 0:047a7089311e 293 *
Okan Sahin 0:047a7089311e 294 * @param[in] bit_field Register bit field to be set.
Okan Sahin 0:047a7089311e 295 * @param[out] maskBit 0x0: Interrupt is unmasked,
Okan Sahin 0:047a7089311e 296 * 0x1: Interrupt is masked.
Okan Sahin 0:047a7089311e 297 *
Okan Sahin 0:047a7089311e 298 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 299 */
Okan Sahin 0:047a7089311e 300 int set_interrupt_mask(reg_bit_int_mask_t bit_field, uint8_t maskBit);
Okan Sahin 0:047a7089311e 301
Okan Sahin 0:047a7089311e 302 /**
Okan Sahin 0:047a7089311e 303 * @brief Get bit field of INT_M_CHG (0x07), INTM_GLBL0 (0x08) or INTM_GLBL1 (0x09) register.
Okan Sahin 0:047a7089311e 304 *
Okan Sahin 0:047a7089311e 305 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 306 * @param[out] maskBit 0x0: Interrupt is unmasked,
Okan Sahin 0:047a7089311e 307 * 0x1: Interrupt is masked.
Okan Sahin 0:047a7089311e 308 *
Okan Sahin 0:047a7089311e 309 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 310 */
Okan Sahin 0:047a7089311e 311 int get_interrupt_mask(reg_bit_int_mask_t bit_field, uint8_t *maskBit);
Okan Sahin 0:047a7089311e 312
Okan Sahin 0:047a7089311e 313 /**
Okan Sahin 0:047a7089311e 314 * @brief Register Configuration
Okan Sahin 0:047a7089311e 315 *
Okan Sahin 0:047a7089311e 316 * @details
Okan Sahin 0:047a7089311e 317 * - Register : CNFG_GLBL (0x10)
Okan Sahin 0:047a7089311e 318 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 319 * - Default : 0x0
Okan Sahin 0:047a7089311e 320 * - Description : Event Recorder Flags.
Okan Sahin 0:047a7089311e 321 */
Okan Sahin 0:047a7089311e 322 typedef enum {
Okan Sahin 0:047a7089311e 323 CNFG_GLBL_SFT_CTRL,
Okan Sahin 0:047a7089311e 324 CNFG_GLBL_DBEN_nEN,
Okan Sahin 0:047a7089311e 325 CNFG_GLBL_nEN_MODE,
Okan Sahin 0:047a7089311e 326 CNFG_GLBL_SBIA_EN,
Okan Sahin 0:047a7089311e 327 CNFG_GLBL_SBIA_LPM,
Okan Sahin 0:047a7089311e 328 CNFG_GLBL_T_MRST,
Okan Sahin 0:047a7089311e 329 CNFG_GLBL_PU_DIS
Okan Sahin 0:047a7089311e 330 }reg_bit_cnfg_glbl_t;
Okan Sahin 0:047a7089311e 331
Okan Sahin 0:047a7089311e 332 /**
Okan Sahin 0:047a7089311e 333 * @brief Set CNFG_GLBL (0x10) register.
Okan Sahin 0:047a7089311e 334 *
Okan Sahin 0:047a7089311e 335 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 336 * @param[in] config Register bit field to be written.
Okan Sahin 0:047a7089311e 337 *
Okan Sahin 0:047a7089311e 338 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 339 */
Okan Sahin 0:047a7089311e 340 int set_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t config);
Okan Sahin 0:047a7089311e 341
Okan Sahin 0:047a7089311e 342 /**
Okan Sahin 0:047a7089311e 343 * @brief Get CNFG_GLBL (0x10) register.
Okan Sahin 0:047a7089311e 344 *
Okan Sahin 0:047a7089311e 345 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 346 * @param[out] config Pointer of value to be read.
Okan Sahin 0:047a7089311e 347 *
Okan Sahin 0:047a7089311e 348 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 349 */
Okan Sahin 0:047a7089311e 350 int get_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t *config);
Okan Sahin 0:047a7089311e 351
Okan Sahin 0:047a7089311e 352 /**
Okan Sahin 0:047a7089311e 353 * @brief Register Configuration
Okan Sahin 0:047a7089311e 354 *
Okan Sahin 0:047a7089311e 355 * @details
Okan Sahin 0:047a7089311e 356 * - Register : CNFG_GPIO0 (0x11) or CNFG_GPIO1 (0x12)
Okan Sahin 0:047a7089311e 357 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 358 * - Default : 0x0
Okan Sahin 0:047a7089311e 359 * - Description : Event Recorder Flags.
Okan Sahin 0:047a7089311e 360 */
Okan Sahin 0:047a7089311e 361 typedef enum {
Okan Sahin 0:047a7089311e 362 CNFG_GPIO_DIR,
Okan Sahin 0:047a7089311e 363 CNFG_GPIO_DI,
Okan Sahin 0:047a7089311e 364 CNFG_GPIO_DRV,
Okan Sahin 0:047a7089311e 365 CNFG_GPIO_DO,
Okan Sahin 0:047a7089311e 366 CNFG_GPIO_DBEN_GPI,
Okan Sahin 0:047a7089311e 367 CNFG_GPIO_ALT_GPIO,
Okan Sahin 0:047a7089311e 368 CNFG_GPIO_RSVD
Okan Sahin 0:047a7089311e 369 }reg_bit_cnfg_gpio_t;
Okan Sahin 0:047a7089311e 370
Okan Sahin 0:047a7089311e 371 /**
Okan Sahin 0:047a7089311e 372 * @brief Set either CNFG_GPIO0 (0x11) or CNFG_GPIO1 (0x12).
Okan Sahin 0:047a7089311e 373 *
Okan Sahin 0:047a7089311e 374 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 375 * @param[in] channel Channel number: 0 or 1
Okan Sahin 0:047a7089311e 376 * @param[in] config Register bit field to be written.
Okan Sahin 0:047a7089311e 377 *
Okan Sahin 0:047a7089311e 378 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 379 */
Okan Sahin 0:047a7089311e 380 int set_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t config);
Okan Sahin 0:047a7089311e 381
Okan Sahin 0:047a7089311e 382 /**
Okan Sahin 0:047a7089311e 383 * @brief Get either CNFG_GPIO0 (0x11) or CNFG_GPIO1 (0x12).
Okan Sahin 0:047a7089311e 384 *
Okan Sahin 0:047a7089311e 385 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 386 * @param[in] channel Channel number: 0 or 1
Okan Sahin 0:047a7089311e 387 * @param[out] config Pointer of value to be read.
Okan Sahin 0:047a7089311e 388 *
Okan Sahin 0:047a7089311e 389 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 390 */
Okan Sahin 0:047a7089311e 391 int get_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t *config);
Okan Sahin 0:047a7089311e 392
Okan Sahin 0:047a7089311e 393 /**
Okan Sahin 0:047a7089311e 394 * @brief Get bit field of CID (0x14) register.
Okan Sahin 0:047a7089311e 395 *
Okan Sahin 0:047a7089311e 396 * @return CID on success, error code on failure.
Okan Sahin 0:047a7089311e 397 */
Okan Sahin 0:047a7089311e 398 int get_cid(void);
Okan Sahin 0:047a7089311e 399
Okan Sahin 0:047a7089311e 400 /**
Okan Sahin 0:047a7089311e 401 * @brief Register Configuration
Okan Sahin 0:047a7089311e 402 *
Okan Sahin 0:047a7089311e 403 * @details
Okan Sahin 0:047a7089311e 404 * - Register : CNFG_WDT (0x17)
Okan Sahin 0:047a7089311e 405 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 406 * - Default : 0x0
Okan Sahin 0:047a7089311e 407 * - Description : Watchdog Timer Configuration.
Okan Sahin 0:047a7089311e 408 */
Okan Sahin 0:047a7089311e 409 typedef enum {
Okan Sahin 0:047a7089311e 410 CNFG_WDT_WDT_LOCK,
Okan Sahin 0:047a7089311e 411 CNFG_WDT_WDT_EN,
Okan Sahin 0:047a7089311e 412 CNFG_WDT_WDT_CLR,
Okan Sahin 0:047a7089311e 413 CNFG_WDT_WDT_MODE,
Okan Sahin 0:047a7089311e 414 CNFG_WDT_WDT_PER,
Okan Sahin 0:047a7089311e 415 CNFG_WDT_RSVD
Okan Sahin 0:047a7089311e 416 }reg_bit_cnfg_wdt_t;
Okan Sahin 0:047a7089311e 417
Okan Sahin 0:047a7089311e 418 /**
Okan Sahin 0:047a7089311e 419 * @brief Set CNFG_WDT (0x17) register.
Okan Sahin 0:047a7089311e 420 *
Okan Sahin 0:047a7089311e 421 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 422 * @param[in] config Field value to be written.
Okan Sahin 0:047a7089311e 423 *
Okan Sahin 0:047a7089311e 424 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 425 */
Okan Sahin 0:047a7089311e 426 int set_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t config);
Okan Sahin 0:047a7089311e 427
Okan Sahin 0:047a7089311e 428 /**
Okan Sahin 0:047a7089311e 429 * @brief Get CNFG_WDT (0x17) register.
Okan Sahin 0:047a7089311e 430 *
Okan Sahin 0:047a7089311e 431 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 432 * @param[out] config Pointer of value to be read.
Okan Sahin 0:047a7089311e 433 *
Okan Sahin 0:047a7089311e 434 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 435 */
Okan Sahin 0:047a7089311e 436 int get_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t *config);
Okan Sahin 0:047a7089311e 437
Okan Sahin 0:047a7089311e 438 /**
Okan Sahin 0:047a7089311e 439 * @brief Register Configuration
Okan Sahin 0:047a7089311e 440 *
Okan Sahin 0:047a7089311e 441 * @details
Okan Sahin 0:047a7089311e 442 * - Register : STAT_CHG_A (0x02)
Okan Sahin 0:047a7089311e 443 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 444 * - Default : 0x0
Okan Sahin 0:047a7089311e 445 * - Description : Watchdog Timer Configuration.
Okan Sahin 0:047a7089311e 446 */
Okan Sahin 0:047a7089311e 447 typedef enum {
Okan Sahin 0:047a7089311e 448 STAT_CHG_A_THM_DTLS,
Okan Sahin 0:047a7089311e 449 STAT_CHG_A_TJ_REG_STAT,
Okan Sahin 0:047a7089311e 450 STAT_CHG_A_VSYS_MIN_STAT,
Okan Sahin 0:047a7089311e 451 STAT_CHG_A_RSVD
Okan Sahin 0:047a7089311e 452 }reg_bit_stat_chg_a_t;
Okan Sahin 0:047a7089311e 453
Okan Sahin 0:047a7089311e 454 /**
Okan Sahin 0:047a7089311e 455 * @brief Get STAT_CHG_A (0x02) register.
Okan Sahin 0:047a7089311e 456 *
Okan Sahin 0:047a7089311e 457 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 458 * @param[out] status Pointer of value to be read.
Okan Sahin 0:047a7089311e 459 * For individual bit,
Okan Sahin 0:047a7089311e 460 * 0x0 = It is not engaged,
Okan Sahin 0:047a7089311e 461 * 0x1 = It is engaged.
Okan Sahin 0:047a7089311e 462 *
Okan Sahin 0:047a7089311e 463 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 464 */
Okan Sahin 0:047a7089311e 465 int get_stat_chg_a(reg_bit_stat_chg_a_t bit_field, uint8_t *status);
Okan Sahin 0:047a7089311e 466
Okan Sahin 0:047a7089311e 467 /**
Okan Sahin 0:047a7089311e 468 * @brief Register Configuration
Okan Sahin 0:047a7089311e 469 *
Okan Sahin 0:047a7089311e 470 * @details
Okan Sahin 0:047a7089311e 471 * - Register : STAT_CHG_A (0x02)
Okan Sahin 0:047a7089311e 472 * - Bit Fields : [2:0]
Okan Sahin 0:047a7089311e 473 * - Default : 0x0
Okan Sahin 0:047a7089311e 474 * - Description : Battery Temperature Details.
Okan Sahin 0:047a7089311e 475 */
Okan Sahin 0:047a7089311e 476 typedef enum {
Okan Sahin 0:047a7089311e 477 THM_DTLS_THERMISTOR_DISABLED,
Okan Sahin 0:047a7089311e 478 THM_DTLS_BATTERY_COLD,
Okan Sahin 0:047a7089311e 479 THM_DTLS_BATTERY_COOL,
Okan Sahin 0:047a7089311e 480 THM_DTLS_BATTERY_WARM,
Okan Sahin 0:047a7089311e 481 THM_DTLS_BATTERY_HOT,
Okan Sahin 0:047a7089311e 482 THM_DTLS_BATTERY_NORMAL,
Okan Sahin 0:047a7089311e 483 THM_DTLS_RESERVED_0x06,
Okan Sahin 0:047a7089311e 484 THM_DTLS_RESERVED_0x07
Okan Sahin 0:047a7089311e 485 }decode_thm_dtls_t;
Okan Sahin 0:047a7089311e 486
Okan Sahin 0:047a7089311e 487 /**
Okan Sahin 0:047a7089311e 488 * @brief Get Battery Temperature Details.
Okan Sahin 0:047a7089311e 489 * Valid only when CHGIN_DTLS[1:0] = 0b11.
Okan Sahin 0:047a7089311e 490 *
Okan Sahin 0:047a7089311e 491 * @param[out] thm_dtls Battery temperature details field to be read.
Okan Sahin 0:047a7089311e 492 *
Okan Sahin 0:047a7089311e 493 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 494 */
Okan Sahin 0:047a7089311e 495 int get_thm_dtls(decode_thm_dtls_t *thm_dtls);
Okan Sahin 0:047a7089311e 496
Okan Sahin 0:047a7089311e 497 /**
Okan Sahin 0:047a7089311e 498 * @brief Register Configuration
Okan Sahin 0:047a7089311e 499 *
Okan Sahin 0:047a7089311e 500 * @details
Okan Sahin 0:047a7089311e 501 * - Register : STAT_CHG_B (0x03)
Okan Sahin 0:047a7089311e 502 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 503 * - Default : 0x0
Okan Sahin 0:047a7089311e 504 * - Description : Watchdog Timer Configuration.
Okan Sahin 0:047a7089311e 505 */
Okan Sahin 0:047a7089311e 506 typedef enum {
Okan Sahin 0:047a7089311e 507 STAT_CHG_B_TIME_SUS,
Okan Sahin 0:047a7089311e 508 STAT_CHG_B_CHG,
Okan Sahin 0:047a7089311e 509 STAT_CHG_B_CHGIN_DTLS,
Okan Sahin 0:047a7089311e 510 STAT_CHG_B_CHG_DTLS
Okan Sahin 0:047a7089311e 511 }reg_bit_stat_chg_b_t;
Okan Sahin 0:047a7089311e 512
Okan Sahin 0:047a7089311e 513 /**
Okan Sahin 0:047a7089311e 514 * @brief Get STAT_CHG_B (0x03) register.
Okan Sahin 0:047a7089311e 515 *
Okan Sahin 0:047a7089311e 516 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 517 * @param[out] status Pointer of value to be read.
Okan Sahin 0:047a7089311e 518 *
Okan Sahin 0:047a7089311e 519 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 520 */
Okan Sahin 0:047a7089311e 521 int get_stat_chg_b(reg_bit_stat_chg_b_t bit_field, uint8_t *status);
Okan Sahin 0:047a7089311e 522
Okan Sahin 0:047a7089311e 523 /**
Okan Sahin 0:047a7089311e 524 * @brief Register Configuration
Okan Sahin 0:047a7089311e 525 *
Okan Sahin 0:047a7089311e 526 * @details
Okan Sahin 0:047a7089311e 527 * - Register : STAT_CHG_B (0x03)
Okan Sahin 0:047a7089311e 528 * - Bit Fields : [7:4]
Okan Sahin 0:047a7089311e 529 * - Default : 0x0
Okan Sahin 0:047a7089311e 530 * - Description : CHG_DTLS[3:0] Charger Details.
Okan Sahin 0:047a7089311e 531 */
Okan Sahin 0:047a7089311e 532 typedef enum {
Okan Sahin 0:047a7089311e 533 CHG_DTLS_OFF,
Okan Sahin 0:047a7089311e 534 CHG_DTLS_PREQUALIFICATION_MODE,
Okan Sahin 0:047a7089311e 535 CHG_DTLS_FAST_CHARGE_CC,
Okan Sahin 0:047a7089311e 536 CHG_DTLS_JEITA_FAST_CHARGE_CC,
Okan Sahin 0:047a7089311e 537 CHG_DTLS_FAST_CHARGE_CV,
Okan Sahin 0:047a7089311e 538 CHG_DTLS_JEITA_FAST_CHARGE_CV,
Okan Sahin 0:047a7089311e 539 CHG_DTLS_TOP_OFF_MODE,
Okan Sahin 0:047a7089311e 540 CHG_DTLS_JEITA_MODIFIED_TOP_OFF_MODE,
Okan Sahin 0:047a7089311e 541 CHG_DTLS_DONE,
Okan Sahin 0:047a7089311e 542 CHG_DTLS_JEITA_MODIFIED_DONE,
Okan Sahin 0:047a7089311e 543 CHG_DTLS_PREQUALIFICATION_TIMER_FAULT,
Okan Sahin 0:047a7089311e 544 CHG_DTLS_FAST_CHARGE_TIMER_FAULT,
Okan Sahin 0:047a7089311e 545 CHG_DTLS_BATTERY_TEMPERATURE_FAULT,
Okan Sahin 0:047a7089311e 546 CHG_DTLS_RESERVED_0x0D,
Okan Sahin 0:047a7089311e 547 CHG_DTLS_RESERVED_0x0E,
Okan Sahin 0:047a7089311e 548 CHG_DTLS_RESERVED_0x0F
Okan Sahin 0:047a7089311e 549 }decode_chg_dtls_t;
Okan Sahin 0:047a7089311e 550
Okan Sahin 0:047a7089311e 551 /**
Okan Sahin 0:047a7089311e 552 * @brief Get Charger Details.
Okan Sahin 0:047a7089311e 553 *
Okan Sahin 0:047a7089311e 554 * @param[out] chg_dtls Charger details field to be read.
Okan Sahin 0:047a7089311e 555 *
Okan Sahin 0:047a7089311e 556 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 557 */
Okan Sahin 0:047a7089311e 558 int get_chg_dtls(decode_chg_dtls_t *chg_dtls);
Okan Sahin 0:047a7089311e 559
Okan Sahin 0:047a7089311e 560 /**
Okan Sahin 0:047a7089311e 561 * @brief Register Configuration
Okan Sahin 0:047a7089311e 562 *
Okan Sahin 0:047a7089311e 563 * @details
Okan Sahin 0:047a7089311e 564 * - Register : CNFG_CHG_A (0x20)
Okan Sahin 0:047a7089311e 565 * - Bit Fields : [7:6]
Okan Sahin 0:047a7089311e 566 * - Default : 0x0
Okan Sahin 0:047a7089311e 567 * - Description : VHOT JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 568 */
Okan Sahin 0:047a7089311e 569 typedef enum {
Okan Sahin 0:047a7089311e 570 THM_HOT_VOLT_0_411V,
Okan Sahin 0:047a7089311e 571 THM_HOT_VOLT_0_367V,
Okan Sahin 0:047a7089311e 572 THM_HOT_VOLT_0_327V,
Okan Sahin 0:047a7089311e 573 THM_HOT_VOLT_0_291V
Okan Sahin 0:047a7089311e 574 }decode_thm_hot_t;
Okan Sahin 0:047a7089311e 575
Okan Sahin 0:047a7089311e 576 /**
Okan Sahin 0:047a7089311e 577 * @brief Set the VHOT JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 578 *
Okan Sahin 0:047a7089311e 579 * @param[in] thm_hot The VHOT JEITA temperature threshold field to be written.
Okan Sahin 0:047a7089311e 580 *
Okan Sahin 0:047a7089311e 581 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 582 */
Okan Sahin 0:047a7089311e 583 int set_thm_hot(decode_thm_hot_t thm_hot);
Okan Sahin 0:047a7089311e 584
Okan Sahin 0:047a7089311e 585 /**
Okan Sahin 0:047a7089311e 586 * @brief Get the VHOT JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 587 *
Okan Sahin 0:047a7089311e 588 * @param[out] thm_hot The VHOT JEITA temperature threshold field to be read.
Okan Sahin 0:047a7089311e 589 *
Okan Sahin 0:047a7089311e 590 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 591 */
Okan Sahin 0:047a7089311e 592 int get_thm_hot(decode_thm_hot_t *thm_hot);
Okan Sahin 0:047a7089311e 593
Okan Sahin 0:047a7089311e 594 /**
Okan Sahin 0:047a7089311e 595 * @brief Register Configuration
Okan Sahin 0:047a7089311e 596 *
Okan Sahin 0:047a7089311e 597 * @details
Okan Sahin 0:047a7089311e 598 * - Register : CNFG_CHG_A (0x20)
Okan Sahin 0:047a7089311e 599 * - Bit Fields : [5:4]
Okan Sahin 0:047a7089311e 600 * - Default : 0x0
Okan Sahin 0:047a7089311e 601 * - Description : VWARM JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 602 */
Okan Sahin 0:047a7089311e 603 typedef enum {
Okan Sahin 0:047a7089311e 604 THM_WARM_VOLT_0_511V,
Okan Sahin 0:047a7089311e 605 THM_WARM_VOLT_0_459V,
Okan Sahin 0:047a7089311e 606 THM_WARM_VOLT_0_411V,
Okan Sahin 0:047a7089311e 607 THM_WARM_VOLT_0_367V
Okan Sahin 0:047a7089311e 608 }decode_thm_warm_t;
Okan Sahin 0:047a7089311e 609
Okan Sahin 0:047a7089311e 610 /**
Okan Sahin 0:047a7089311e 611 * @brief Set the VWARM JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 612 *
Okan Sahin 0:047a7089311e 613 * @param[in] thm_warm The VWARM JEITA temperature threshold field to be written.
Okan Sahin 0:047a7089311e 614 *
Okan Sahin 0:047a7089311e 615 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 616 */
Okan Sahin 0:047a7089311e 617 int set_thm_warm(decode_thm_warm_t thm_warm);
Okan Sahin 0:047a7089311e 618
Okan Sahin 0:047a7089311e 619 /**
Okan Sahin 0:047a7089311e 620 * @brief Get the VWARM JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 621 *
Okan Sahin 0:047a7089311e 622 * @param[out] thm_warm The VWARM JEITA temperature threshold field to be read.
Okan Sahin 0:047a7089311e 623 *
Okan Sahin 0:047a7089311e 624 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 625 */
Okan Sahin 0:047a7089311e 626 int get_thm_warm(decode_thm_warm_t *thm_warm);
Okan Sahin 0:047a7089311e 627
Okan Sahin 0:047a7089311e 628 /**
Okan Sahin 0:047a7089311e 629 * @brief Register Configuration
Okan Sahin 0:047a7089311e 630 *
Okan Sahin 0:047a7089311e 631 * @details
Okan Sahin 0:047a7089311e 632 * - Register : CNFG_CHG_A (0x20)
Okan Sahin 0:047a7089311e 633 * - Bit Fields : [3:2]
Okan Sahin 0:047a7089311e 634 * - Default : 0x0
Okan Sahin 0:047a7089311e 635 * - Description : VCOOL JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 636 */
Okan Sahin 0:047a7089311e 637 typedef enum {
Okan Sahin 0:047a7089311e 638 THM_COOL_VOLT_0_923V,
Okan Sahin 0:047a7089311e 639 THM_COOL_VOLT_0_867V,
Okan Sahin 0:047a7089311e 640 THM_COOL_VOLT_0_807V,
Okan Sahin 0:047a7089311e 641 THM_COOL_VOLT_0_747V
Okan Sahin 0:047a7089311e 642 }decode_thm_cool_t;
Okan Sahin 0:047a7089311e 643
Okan Sahin 0:047a7089311e 644 /**
Okan Sahin 0:047a7089311e 645 * @brief Set the VCOOL JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 646 *
Okan Sahin 0:047a7089311e 647 * @param[in] thm_cool The VCOOL JEITA temperature threshold field to be written.
Okan Sahin 0:047a7089311e 648 *
Okan Sahin 0:047a7089311e 649 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 650 */
Okan Sahin 0:047a7089311e 651 int set_thm_cool(decode_thm_cool_t thm_cool);
Okan Sahin 0:047a7089311e 652
Okan Sahin 0:047a7089311e 653 /**
Okan Sahin 0:047a7089311e 654 * @brief Get the VCOOL JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 655 *
Okan Sahin 0:047a7089311e 656 * @param[out] thm_cool The VCOOL JEITA temperature threshold field to be read.
Okan Sahin 0:047a7089311e 657 *
Okan Sahin 0:047a7089311e 658 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 659 */
Okan Sahin 0:047a7089311e 660 int get_thm_cool(decode_thm_cool_t *thm_cool);
Okan Sahin 0:047a7089311e 661
Okan Sahin 0:047a7089311e 662 /**
Okan Sahin 0:047a7089311e 663 * @brief Register Configuration
Okan Sahin 0:047a7089311e 664 *
Okan Sahin 0:047a7089311e 665 * @details
Okan Sahin 0:047a7089311e 666 * - Register : CNFG_CHG_A (0x20)
Okan Sahin 0:047a7089311e 667 * - Bit Fields : [1:0]
Okan Sahin 0:047a7089311e 668 * - Default : 0x0
Okan Sahin 0:047a7089311e 669 * - Description : VCOLD JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 670 */
Okan Sahin 0:047a7089311e 671 typedef enum {
Okan Sahin 0:047a7089311e 672 THM_COLD_VOLT_1_024V,
Okan Sahin 0:047a7089311e 673 THM_COLD_VOLT_0_976V,
Okan Sahin 0:047a7089311e 674 THM_COLD_VOLT_0_923V,
Okan Sahin 0:047a7089311e 675 THM_COLD_VOLT_0_867V
Okan Sahin 0:047a7089311e 676 }decode_thm_cold_t;
Okan Sahin 0:047a7089311e 677
Okan Sahin 0:047a7089311e 678 /**
Okan Sahin 0:047a7089311e 679 * @brief Set the VCOLD JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 680 *
Okan Sahin 0:047a7089311e 681 * @param[in] thm_cold The VCOLD JEITA temperature threshold field to be written.
Okan Sahin 0:047a7089311e 682 *
Okan Sahin 0:047a7089311e 683 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 684 */
Okan Sahin 0:047a7089311e 685 int set_thm_cold(decode_thm_cold_t thm_cold);
Okan Sahin 0:047a7089311e 686
Okan Sahin 0:047a7089311e 687 /**
Okan Sahin 0:047a7089311e 688 * @brief Get the VCOLD JEITA Temperature Threshold.
Okan Sahin 0:047a7089311e 689 *
Okan Sahin 0:047a7089311e 690 * @param[out] thm_cold The VCOLD JEITA temperature threshold field to be read.
Okan Sahin 0:047a7089311e 691 *
Okan Sahin 0:047a7089311e 692 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 693 */
Okan Sahin 0:047a7089311e 694 int get_thm_cold(decode_thm_cold_t *thm_cold);
Okan Sahin 0:047a7089311e 695
Okan Sahin 0:047a7089311e 696 /**
Okan Sahin 0:047a7089311e 697 * @brief Register Configuration
Okan Sahin 0:047a7089311e 698 *
Okan Sahin 0:047a7089311e 699 * @details
Okan Sahin 0:047a7089311e 700 * - Register : CNFG_CHG_B (0x21)
Okan Sahin 0:047a7089311e 701 * - Bit Fields : [7:0]
Okan Sahin 0:047a7089311e 702 * - Default : 0x0
Okan Sahin 0:047a7089311e 703 * - Description : Watchdog Timer Configuration.
Okan Sahin 0:047a7089311e 704 */
Okan Sahin 0:047a7089311e 705 typedef enum {
Okan Sahin 0:047a7089311e 706 CNFG_CHG_B_CHG_EN,
Okan Sahin 0:047a7089311e 707 CNFG_CHG_B_I_PQ,
Okan Sahin 0:047a7089311e 708 CNFG_CHG_B_RSVD
Okan Sahin 0:047a7089311e 709 }reg_bit_cnfg_chg_b_t;
Okan Sahin 0:047a7089311e 710
Okan Sahin 0:047a7089311e 711 /**
Okan Sahin 0:047a7089311e 712 * @brief Set CNFG_CHG_B (0x21) register.
Okan Sahin 0:047a7089311e 713 *
Okan Sahin 0:047a7089311e 714 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 715 * @param[in] config Register bit field to be written.
Okan Sahin 0:047a7089311e 716 *
Okan Sahin 0:047a7089311e 717 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 718 */
Okan Sahin 0:047a7089311e 719 int set_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t config);
Okan Sahin 0:047a7089311e 720
Okan Sahin 0:047a7089311e 721 /**
Okan Sahin 0:047a7089311e 722 * @brief Get CNFG_CHG_B (0x21) register.
Okan Sahin 0:047a7089311e 723 *
Okan Sahin 0:047a7089311e 724 * @param[in] bit_field Register bit field to be written.
Okan Sahin 0:047a7089311e 725 * @param[out] config Pointer of value to be read.
Okan Sahin 0:047a7089311e 726 *
Okan Sahin 0:047a7089311e 727 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 728 */
Okan Sahin 0:047a7089311e 729 int get_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t *config);
Okan Sahin 0:047a7089311e 730
Okan Sahin 0:047a7089311e 731 /**
Okan Sahin 0:047a7089311e 732 * @brief Set Battery Prequalification Voltage Threshold (VPQ).
Okan Sahin 0:047a7089311e 733 * Bit 7:5 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 734 *
Okan Sahin 0:047a7089311e 735 * @param[in] voltV
Okan Sahin 0:047a7089311e 736 * 2.3V, 2.4V, 2.5V, 2.6V,
Okan Sahin 0:047a7089311e 737 * 2.7V, 2.8V, 2.9V, 3.0V.
Okan Sahin 0:047a7089311e 738 *
Okan Sahin 0:047a7089311e 739 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 740 */
Okan Sahin 0:047a7089311e 741 int set_chg_pq(float voltV);
Okan Sahin 0:047a7089311e 742
Okan Sahin 0:047a7089311e 743 /**
Okan Sahin 0:047a7089311e 744 * @brief Get Battery Prequalification Voltage Threshold (VPQ).
Okan Sahin 0:047a7089311e 745 * Bit 7:5 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 746 *
Okan Sahin 0:047a7089311e 747 * @param[out] voltV Pointer of value to be read.
Okan Sahin 0:047a7089311e 748 * 2.3V, 2.4V, 2.5V, 2.6V,
Okan Sahin 0:047a7089311e 749 * 2.7V, 2.8V, 2.9V, 3.0V.
Okan Sahin 0:047a7089311e 750 *
Okan Sahin 0:047a7089311e 751 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 752 */
Okan Sahin 0:047a7089311e 753 int get_chg_pq(float *voltV);
Okan Sahin 0:047a7089311e 754
Okan Sahin 0:047a7089311e 755 /**
Okan Sahin 0:047a7089311e 756 * @brief Set Charger Termination Current (ITERM).
Okan Sahin 0:047a7089311e 757 * I_TERM[1:0] sets the charger termination current
Okan Sahin 0:047a7089311e 758 * as a percentage of the fast charge current IFAST-CHG.
Okan Sahin 0:047a7089311e 759 * Bit 4:3 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 760 *
Okan Sahin 0:047a7089311e 761 * @param[in] percent
Okan Sahin 0:047a7089311e 762 * 5%, 7.5%, 10%, 15%.
Okan Sahin 0:047a7089311e 763 *
Okan Sahin 0:047a7089311e 764 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 765 */
Okan Sahin 0:047a7089311e 766 int set_i_term(float percent);
Okan Sahin 0:047a7089311e 767
Okan Sahin 0:047a7089311e 768 /**
Okan Sahin 0:047a7089311e 769 * @brief Get Charger Termination Current (ITERM).
Okan Sahin 0:047a7089311e 770 * I_TERM[1:0] sets the charger termination current
Okan Sahin 0:047a7089311e 771 * as a percentage of the fast charge current IFAST-CHG.
Okan Sahin 0:047a7089311e 772 * Bit 4:3 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 773 *
Okan Sahin 0:047a7089311e 774 * @param[out] percent Pointer of value to be read.
Okan Sahin 0:047a7089311e 775 * 5%, 7.5%, 10%, 15%.
Okan Sahin 0:047a7089311e 776 *
Okan Sahin 0:047a7089311e 777 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 778 */
Okan Sahin 0:047a7089311e 779 int get_i_term(float *percent);
Okan Sahin 0:047a7089311e 780
Okan Sahin 0:047a7089311e 781 /**
Okan Sahin 0:047a7089311e 782 * @brief Set Top-off Timer Value.
Okan Sahin 0:047a7089311e 783 * Bit 2:0 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 784 *
Okan Sahin 0:047a7089311e 785 * @param[in] minute
Okan Sahin 0:047a7089311e 786 * 0 minutes, 5 minutes, 10 minutes
Okan Sahin 0:047a7089311e 787 * 15 minutes, 20 minutes, 25 minutes,
Okan Sahin 0:047a7089311e 788 * 30 minutes, 35 minutes.
Okan Sahin 0:047a7089311e 789 *
Okan Sahin 0:047a7089311e 790 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 791 */
Okan Sahin 0:047a7089311e 792 int set_t_topoff(uint8_t minute);
Okan Sahin 0:047a7089311e 793
Okan Sahin 0:047a7089311e 794 /**
Okan Sahin 0:047a7089311e 795 * @brief Get Top-off Timer Value.
Okan Sahin 0:047a7089311e 796 * Bit 2:0 of CNFG_CHG_C (0x22) register.
Okan Sahin 0:047a7089311e 797 *
Okan Sahin 0:047a7089311e 798 * @param[out] minute Pointer of value to be read.
Okan Sahin 0:047a7089311e 799 0 minutes, 5 minutes, 10 minutes
Okan Sahin 0:047a7089311e 800 * 15 minutes, 20 minutes, 25 minutes,
Okan Sahin 0:047a7089311e 801 * 30 minutes, 35 minutes.
Okan Sahin 0:047a7089311e 802 *
Okan Sahin 0:047a7089311e 803 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 804 */
Okan Sahin 0:047a7089311e 805 int get_t_topoff(uint8_t *minute);
Okan Sahin 0:047a7089311e 806
Okan Sahin 0:047a7089311e 807 /**
Okan Sahin 0:047a7089311e 808 * @brief Set the Die Junction Temperature Regulation Point, TJ-REG.
Okan Sahin 0:047a7089311e 809 * Bit 7:5 of CNFG_CHG_D (0x23) register.
Okan Sahin 0:047a7089311e 810 *
Okan Sahin 0:047a7089311e 811 * @param[in] tempDegC 60ºC, 70ºC, 80ºC,
Okan Sahin 0:047a7089311e 812 * 90ºC, 100ºC.
Okan Sahin 0:047a7089311e 813 *
Okan Sahin 0:047a7089311e 814 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 815 */
Okan Sahin 0:047a7089311e 816 int set_tj_reg(uint8_t tempDegC);
Okan Sahin 0:047a7089311e 817
Okan Sahin 0:047a7089311e 818 /**
Okan Sahin 0:047a7089311e 819 * @brief Get the Die Junction Temperature Regulation Point, TJ-REG.
Okan Sahin 0:047a7089311e 820 * Bit 7:5 of CNFG_CHG_D (0x23) register.
Okan Sahin 0:047a7089311e 821 *
Okan Sahin 0:047a7089311e 822 * @param[out] tempDegC Pointer of value to be read.
Okan Sahin 0:047a7089311e 823 * 60ºC, 70ºC, 80ºC, 90ºC, 100ºC.
Okan Sahin 0:047a7089311e 824 *
Okan Sahin 0:047a7089311e 825 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 826 */
Okan Sahin 0:047a7089311e 827 int get_tj_reg(uint8_t *tempDegC);
Okan Sahin 0:047a7089311e 828
Okan Sahin 0:047a7089311e 829 /**
Okan Sahin 0:047a7089311e 830 * @brief Register Configuration
Okan Sahin 0:047a7089311e 831 *
Okan Sahin 0:047a7089311e 832 * @details
Okan Sahin 0:047a7089311e 833 * - Register : CNFG_CHG_D (0x23)
Okan Sahin 0:047a7089311e 834 * - Bit Fields : [4]
Okan Sahin 0:047a7089311e 835 * - Default : 0x0
Okan Sahin 0:047a7089311e 836 * - Description : SYS Headroom Voltage Regulation.
Okan Sahin 0:047a7089311e 837 */
Okan Sahin 0:047a7089311e 838 typedef enum {
Okan Sahin 0:047a7089311e 839 VSYS_HDRM_VOLT_0_15,
Okan Sahin 0:047a7089311e 840 VSYS_HDRM_VOLT_0_20
Okan Sahin 0:047a7089311e 841 }decode_vsys_hdrm_t;
Okan Sahin 0:047a7089311e 842
Okan Sahin 0:047a7089311e 843 /**
Okan Sahin 0:047a7089311e 844 * @brief Set SYS Headroom Voltage Regulation.
Okan Sahin 0:047a7089311e 845 *
Okan Sahin 0:047a7089311e 846 * @param[in] vsys_hdrm SYS Headroom Voltage field to be written.
Okan Sahin 0:047a7089311e 847 *
Okan Sahin 0:047a7089311e 848 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 849 */
Okan Sahin 0:047a7089311e 850 int set_vsys_hdrm(decode_vsys_hdrm_t vsys_hdrm);
Okan Sahin 0:047a7089311e 851
Okan Sahin 0:047a7089311e 852 /**
Okan Sahin 0:047a7089311e 853 * @brief Get SYS Headroom Voltage Regulation.
Okan Sahin 0:047a7089311e 854 *
Okan Sahin 0:047a7089311e 855 * @param[out] vsys_hdrm SYS Headroom Voltage field to be read.
Okan Sahin 0:047a7089311e 856 *
Okan Sahin 0:047a7089311e 857 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 858 */
Okan Sahin 0:047a7089311e 859 int get_vsys_hdrm(decode_vsys_hdrm_t *vsys_hdrm);
Okan Sahin 0:047a7089311e 860
Okan Sahin 0:047a7089311e 861 /**
Okan Sahin 0:047a7089311e 862 * @brief Register Configuration
Okan Sahin 0:047a7089311e 863 *
Okan Sahin 0:047a7089311e 864 * @details
Okan Sahin 0:047a7089311e 865 * - Register : CNFG_CHG_D (0x23)
Okan Sahin 0:047a7089311e 866 * - Bit Fields : [1:0]
Okan Sahin 0:047a7089311e 867 * - Default : 0x0
Okan Sahin 0:047a7089311e 868 * - Description : Minimum SYS Voltage.
Okan Sahin 0:047a7089311e 869 */
Okan Sahin 0:047a7089311e 870 typedef enum {
Okan Sahin 0:047a7089311e 871 VSYS_MIN_VOLT_3_2,
Okan Sahin 0:047a7089311e 872 VSYS_MIN_VOLT_3_3,
Okan Sahin 0:047a7089311e 873 VSYS_MIN_VOLT_3_4,
Okan Sahin 0:047a7089311e 874 VSYS_MIN_VOLT_3_5
Okan Sahin 0:047a7089311e 875 }decode_vsys_min_t;
Okan Sahin 0:047a7089311e 876
Okan Sahin 0:047a7089311e 877 /**
Okan Sahin 0:047a7089311e 878 * @brief Set Minimum SYS Voltage.
Okan Sahin 0:047a7089311e 879 * Bit 1:0 of CNFG_CHG_D (0x23) register.
Okan Sahin 0:047a7089311e 880 *
Okan Sahin 0:047a7089311e 881 * @param[in] vsys_min Decoded values for 3.2V, 3.3V, 3.4V, 3.5V.
Okan Sahin 0:047a7089311e 882 *
Okan Sahin 0:047a7089311e 883 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 884 */
Okan Sahin 0:047a7089311e 885 int set_vsys_min(decode_vsys_min_t vsys_min);
Okan Sahin 0:047a7089311e 886
Okan Sahin 0:047a7089311e 887 /**
Okan Sahin 0:047a7089311e 888 * @brief Get Minimum SYS Voltage.
Okan Sahin 0:047a7089311e 889 * Bit 1:0 of CNFG_CHG_D (0x23) register.
Okan Sahin 0:047a7089311e 890 *
Okan Sahin 0:047a7089311e 891 * @param[out] vsys_min Pointer of value to be read.
Okan Sahin 0:047a7089311e 892 *
Okan Sahin 0:047a7089311e 893 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 894 */
Okan Sahin 0:047a7089311e 895 int get_vsys_min(decode_vsys_min_t *vsys_min);
Okan Sahin 0:047a7089311e 896
Okan Sahin 0:047a7089311e 897 /**
Okan Sahin 0:047a7089311e 898 * @brief Set the Fast-Charge Constant Current Value, IFAST-CHG.
Okan Sahin 0:047a7089311e 899 * Bit 7:2 of CNFG_CHG_E (0x24) register.
Okan Sahin 0:047a7089311e 900 *
Okan Sahin 0:047a7089311e 901 * @param[in] currentmA 7.5mA, 15.0mA, 22.5mA, ...
Okan Sahin 0:047a7089311e 902 * 292.5mA, 300.0mA.
Okan Sahin 0:047a7089311e 903 *
Okan Sahin 0:047a7089311e 904 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 905 */
Okan Sahin 0:047a7089311e 906 int set_chg_cc(float currentmA);
Okan Sahin 0:047a7089311e 907
Okan Sahin 0:047a7089311e 908 /**
Okan Sahin 0:047a7089311e 909 * @brief Get the Fast-Charge Constant Current Value, IFAST-CHG.
Okan Sahin 0:047a7089311e 910 * Bit 7:2 of CNFG_CHG_E (0x24) register.
Okan Sahin 0:047a7089311e 911 *
Okan Sahin 0:047a7089311e 912 * @param[out] currentmA Pointer of value to be read.
Okan Sahin 0:047a7089311e 913 * 7.5mA, 15.0mA, 22.5mA, ...
Okan Sahin 0:047a7089311e 914 * 292.5mA, 300.0mA.
Okan Sahin 0:047a7089311e 915 *
Okan Sahin 0:047a7089311e 916 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 917 */
Okan Sahin 0:047a7089311e 918 int get_chg_cc(float *currentmA);
Okan Sahin 0:047a7089311e 919
Okan Sahin 0:047a7089311e 920 /**
Okan Sahin 0:047a7089311e 921 * @brief Register Configuration
Okan Sahin 0:047a7089311e 922 *
Okan Sahin 0:047a7089311e 923 * @details
Okan Sahin 0:047a7089311e 924 * - Register : CNFG_CHG_E (0x24)
Okan Sahin 0:047a7089311e 925 * - Bit Fields : [1:0]
Okan Sahin 0:047a7089311e 926 * - Default : 0x0
Okan Sahin 0:047a7089311e 927 * - Description : Fast-charge Safety timer, tFC.
Okan Sahin 0:047a7089311e 928 */
Okan Sahin 0:047a7089311e 929 typedef enum {
Okan Sahin 0:047a7089311e 930 T_FAST_CHG_TIMER_DISABLED,
Okan Sahin 0:047a7089311e 931 T_FAST_CHG_HOUR_3H,
Okan Sahin 0:047a7089311e 932 T_FAST_CHG_HOUR_5H,
Okan Sahin 0:047a7089311e 933 T_FAST_CHG_HOUR_7H
Okan Sahin 0:047a7089311e 934 }decode_t_fast_chg_t;
Okan Sahin 0:047a7089311e 935
Okan Sahin 0:047a7089311e 936 /**
Okan Sahin 0:047a7089311e 937 * @brief Set the Fast-charge Safety timer, tFC.
Okan Sahin 0:047a7089311e 938 * Bit 1:0 of CNFG_CHG_E (0x24) register.
Okan Sahin 0:047a7089311e 939 *
Okan Sahin 0:047a7089311e 940 * @param[in] t_fast_chg Fast-charge safety timer field to be written.
Okan Sahin 0:047a7089311e 941 *
Okan Sahin 0:047a7089311e 942 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 943 */
Okan Sahin 0:047a7089311e 944 int set_t_fast_chg(decode_t_fast_chg_t t_fast_chg);
Okan Sahin 0:047a7089311e 945
Okan Sahin 0:047a7089311e 946 /**
Okan Sahin 0:047a7089311e 947 * @brief Get the Fast-charge Safety timer, tFC.
Okan Sahin 0:047a7089311e 948 * Bit 1:0 of CNFG_CHG_E (0x24) register.
Okan Sahin 0:047a7089311e 949 *
Okan Sahin 0:047a7089311e 950 * @param[out] t_fast_chg Fast-charge safety timer field to be read.
Okan Sahin 0:047a7089311e 951 *
Okan Sahin 0:047a7089311e 952 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 953 */
Okan Sahin 0:047a7089311e 954 int get_t_fast_chg(decode_t_fast_chg_t *t_fast_chg);
Okan Sahin 0:047a7089311e 955
Okan Sahin 0:047a7089311e 956 /**
Okan Sahin 0:047a7089311e 957 * @brief Set IFAST-CHG-JEITA
Okan Sahin 0:047a7089311e 958 * when the battery is either cool or warm as defined by the
Okan Sahin 0:047a7089311e 959 * VCOOL and VWARM temperature thresholds.
Okan Sahin 0:047a7089311e 960 * Bit 7:2 of CNFG_CHG_F (0x25) register.
Okan Sahin 0:047a7089311e 961 *
Okan Sahin 0:047a7089311e 962 * @param[in] currentmA 7.5mA, 15.0mA, 22.5mA, ...
Okan Sahin 0:047a7089311e 963 * 292.5mA, 300.0mA.
Okan Sahin 0:047a7089311e 964 *
Okan Sahin 0:047a7089311e 965 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 966 */
Okan Sahin 0:047a7089311e 967 int set_chg_cc_jeita(float currentmA);
Okan Sahin 0:047a7089311e 968
Okan Sahin 0:047a7089311e 969 /**
Okan Sahin 0:047a7089311e 970 * @brief Get IFAST-CHG-JEITA
Okan Sahin 0:047a7089311e 971 * when the battery is either cool or warm as defined by the
Okan Sahin 0:047a7089311e 972 * VCOOL and VWARM temperature thresholds.
Okan Sahin 0:047a7089311e 973 * Bit 7:2 of CNFG_CHG_F (0x25) register.
Okan Sahin 0:047a7089311e 974 *
Okan Sahin 0:047a7089311e 975 * @param[out] currentmA Pointer of value to be read.
Okan Sahin 0:047a7089311e 976 * 7.5mA, 15.0mA, 22.5mA, ...
Okan Sahin 0:047a7089311e 977 * 292.5mA, 300.0mA.
Okan Sahin 0:047a7089311e 978 *
Okan Sahin 0:047a7089311e 979 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 980 */
Okan Sahin 0:047a7089311e 981 int get_chg_cc_jeita(float *currentmA);
Okan Sahin 0:047a7089311e 982
Okan Sahin 0:047a7089311e 983 /**
Okan Sahin 0:047a7089311e 984 * @brief Register Configuration
Okan Sahin 0:047a7089311e 985 *
Okan Sahin 0:047a7089311e 986 * @details
Okan Sahin 0:047a7089311e 987 * - Register : CNFG_CHG_F (0x25)
Okan Sahin 0:047a7089311e 988 * - Bit Fields : [1]
Okan Sahin 0:047a7089311e 989 * - Default : 0x0
Okan Sahin 0:047a7089311e 990 * - Description : Thermistor Enable Bit
Okan Sahin 0:047a7089311e 991 */
Okan Sahin 0:047a7089311e 992 typedef enum {
Okan Sahin 0:047a7089311e 993 THM_EN_DISABLED,
Okan Sahin 0:047a7089311e 994 THM_EN_ENABLED
Okan Sahin 0:047a7089311e 995 }decode_thm_en_t;
Okan Sahin 0:047a7089311e 996
Okan Sahin 0:047a7089311e 997 /**
Okan Sahin 0:047a7089311e 998 * @brief Set Thermistor Enable Bit.
Okan Sahin 0:047a7089311e 999 * Bit 1 of CNFG_CHG_F (0x25) register.
Okan Sahin 0:047a7089311e 1000 *
Okan Sahin 0:047a7089311e 1001 * @param[in] thm_en Thermistor Enable Bit to be written.
Okan Sahin 0:047a7089311e 1002 *
Okan Sahin 0:047a7089311e 1003 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1004 */
Okan Sahin 0:047a7089311e 1005 int set_thm_en(decode_thm_en_t thm_en);
Okan Sahin 0:047a7089311e 1006
Okan Sahin 0:047a7089311e 1007 /**
Okan Sahin 0:047a7089311e 1008 * @brief Get Thermistor Enable Bit.
Okan Sahin 0:047a7089311e 1009 * Bit 1:0 of CNFG_CHG_F (0x25) register.
Okan Sahin 0:047a7089311e 1010 *
Okan Sahin 0:047a7089311e 1011 * @param[out] thm_en Thermistor Enable Bit field to be read.
Okan Sahin 0:047a7089311e 1012 *
Okan Sahin 0:047a7089311e 1013 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1014 */
Okan Sahin 0:047a7089311e 1015 int get_thm_en(decode_thm_en_t *thm_en);
Okan Sahin 0:047a7089311e 1016
Okan Sahin 0:047a7089311e 1017 /**
Okan Sahin 0:047a7089311e 1018 * @brief Set Fast-Charge Battery Regulation Voltage, VFAST-CHG.
Okan Sahin 0:047a7089311e 1019 * Bit 7:2 of CNFG_CHG_G (0x26) register.
Okan Sahin 0:047a7089311e 1020 *
Okan Sahin 0:047a7089311e 1021 * @param[in] voltV 3.600V, 3.625V, 3.650V, ...
Okan Sahin 0:047a7089311e 1022 * 4.575V, 4.600V.
Okan Sahin 0:047a7089311e 1023 *
Okan Sahin 0:047a7089311e 1024 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1025 */
Okan Sahin 0:047a7089311e 1026 int set_chg_cv(float voltV);
Okan Sahin 0:047a7089311e 1027
Okan Sahin 0:047a7089311e 1028 /**
Okan Sahin 0:047a7089311e 1029 * @brief Get Fast-Charge Battery Regulation Voltage, VFAST-CHG.
Okan Sahin 0:047a7089311e 1030 * Bit 7:2 of CNFG_CHG_G (0x26) register.
Okan Sahin 0:047a7089311e 1031 *
Okan Sahin 0:047a7089311e 1032 * @param[out] voltV Pointer of value to be read.
Okan Sahin 0:047a7089311e 1033 * 3.600V, 3.625V, 3.650V, ...
Okan Sahin 0:047a7089311e 1034 * 4.575V, 4.600V.
Okan Sahin 0:047a7089311e 1035 *
Okan Sahin 0:047a7089311e 1036 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1037 */
Okan Sahin 0:047a7089311e 1038 int get_chg_cv(float *voltV);
Okan Sahin 0:047a7089311e 1039
Okan Sahin 0:047a7089311e 1040 /**
Okan Sahin 0:047a7089311e 1041 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1042 *
Okan Sahin 0:047a7089311e 1043 * @details
Okan Sahin 0:047a7089311e 1044 * - Register : CNFG_CHG_G (0x26)
Okan Sahin 0:047a7089311e 1045 * - Bit Fields : [1]
Okan Sahin 0:047a7089311e 1046 * - Default : 0x0
Okan Sahin 0:047a7089311e 1047 * - Description : Setting this bit places CHGIN in USB suspend mode.
Okan Sahin 0:047a7089311e 1048 */
Okan Sahin 0:047a7089311e 1049 typedef enum {
Okan Sahin 0:047a7089311e 1050 USBS_CHGIN_NOT_SUSPENDED,
Okan Sahin 0:047a7089311e 1051 USBS_CHGIN_SUSPENDED
Okan Sahin 0:047a7089311e 1052 }decode_usbs_t;
Okan Sahin 0:047a7089311e 1053
Okan Sahin 0:047a7089311e 1054 /**
Okan Sahin 0:047a7089311e 1055 * @brief Set USB Suspend Mode Bit.
Okan Sahin 0:047a7089311e 1056 * Bit 1 of CNFG_CHG_G (0x26) register.
Okan Sahin 0:047a7089311e 1057 *
Okan Sahin 0:047a7089311e 1058 * @param[in] usbs CHGIN in USB suspend mode bit to be written.
Okan Sahin 0:047a7089311e 1059 *
Okan Sahin 0:047a7089311e 1060 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1061 */
Okan Sahin 0:047a7089311e 1062 int set_usbs(decode_usbs_t usbs);
Okan Sahin 0:047a7089311e 1063
Okan Sahin 0:047a7089311e 1064 /**
Okan Sahin 0:047a7089311e 1065 * @brief Get USB Suspend Mode Bit.
Okan Sahin 0:047a7089311e 1066 * Bit 1:0 of CNFG_CHG_G (0x26) register.
Okan Sahin 0:047a7089311e 1067 *
Okan Sahin 0:047a7089311e 1068 * @param[out] usbs CHGIN in USB suspend mode bit field to be read.
Okan Sahin 0:047a7089311e 1069 *
Okan Sahin 0:047a7089311e 1070 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1071 */
Okan Sahin 0:047a7089311e 1072 int get_usbs(decode_usbs_t *usbs);
Okan Sahin 0:047a7089311e 1073
Okan Sahin 0:047a7089311e 1074 /**
Okan Sahin 0:047a7089311e 1075 * @brief Set the modified VFAST-CHG-JEITA for when the battery is either
Okan Sahin 0:047a7089311e 1076 * cool or warm as defined by the VCOOL and VWARM temperature thresholds.
Okan Sahin 0:047a7089311e 1077 * Bit 7:2 of CNFG_CHG_H (0x27) register.
Okan Sahin 0:047a7089311e 1078 *
Okan Sahin 0:047a7089311e 1079 * @param[in] voltV Pointer of value to be read.
Okan Sahin 0:047a7089311e 1080 * 3.600V, 3.625V, 3.650V, ...
Okan Sahin 0:047a7089311e 1081 * 4.575V, 4.600V.
Okan Sahin 0:047a7089311e 1082 *
Okan Sahin 0:047a7089311e 1083 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1084 */
Okan Sahin 0:047a7089311e 1085 int set_chg_cv_jeita(float voltV);
Okan Sahin 0:047a7089311e 1086
Okan Sahin 0:047a7089311e 1087 /**
Okan Sahin 0:047a7089311e 1088 * @brief Get the modified VFAST-CHG-JEITA for when the battery is either
Okan Sahin 0:047a7089311e 1089 * cool or warm as defined by the VCOOL and VWARM temperature thresholds.
Okan Sahin 0:047a7089311e 1090 * Bit 7:2 of CNFG_CHG_H (0x27) register.
Okan Sahin 0:047a7089311e 1091 *
Okan Sahin 0:047a7089311e 1092 * @param[out] voltV Pointer of value to be read.
Okan Sahin 0:047a7089311e 1093 * 3.600V, 3.625V, 3.650V, ...
Okan Sahin 0:047a7089311e 1094 * 4.575V, 4.600V.
Okan Sahin 0:047a7089311e 1095 *
Okan Sahin 0:047a7089311e 1096 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1097 */
Okan Sahin 0:047a7089311e 1098 int get_chg_cv_jeita(float *voltV);
Okan Sahin 0:047a7089311e 1099
Okan Sahin 0:047a7089311e 1100 /**
Okan Sahin 0:047a7089311e 1101 * @brief Set the Battery Discharge Current Full-Scale Current Value.
Okan Sahin 0:047a7089311e 1102 * Bit 7:4 of CNFG_CHG_I (0x28) register.
Okan Sahin 0:047a7089311e 1103 *
Okan Sahin 0:047a7089311e 1104 * @param[in] currentmA 8.2mA, 40.5mA, 72.3mA, 103.4mA,
Okan Sahin 0:047a7089311e 1105 * 134.1mA, 164.1mA, 193.7mA, 222.7mA,
Okan Sahin 0:047a7089311e 1106 * 251.2mA, 279.3mA, 300.0mA
Okan Sahin 0:047a7089311e 1107 *
Okan Sahin 0:047a7089311e 1108 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1109 */
Okan Sahin 0:047a7089311e 1110 int set_imon_dischg_scale(float currentmA);
Okan Sahin 0:047a7089311e 1111
Okan Sahin 0:047a7089311e 1112 /**
Okan Sahin 0:047a7089311e 1113 * @brief Get the Battery Discharge Current Full-Scale Current Value.
Okan Sahin 0:047a7089311e 1114 * Bit 7:4 of CNFG_CHG_I (0x28) register.
Okan Sahin 0:047a7089311e 1115 *
Okan Sahin 0:047a7089311e 1116 * @param[out] currentmA Pointer of value to be read.
Okan Sahin 0:047a7089311e 1117 * 8.2mA, 40.5mA, 72.3mA, 103.4mA,
Okan Sahin 0:047a7089311e 1118 * 134.1mA, 164.1mA, 193.7mA, 222.7mA,
Okan Sahin 0:047a7089311e 1119 * 251.2mA, 279.3mA, 300.0mA
Okan Sahin 0:047a7089311e 1120 *
Okan Sahin 0:047a7089311e 1121 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1122 */
Okan Sahin 0:047a7089311e 1123 int get_imon_dischg_scale(float *currentmA);
Okan Sahin 0:047a7089311e 1124
Okan Sahin 0:047a7089311e 1125 /**
Okan Sahin 0:047a7089311e 1126 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1127 *
Okan Sahin 0:047a7089311e 1128 * @details
Okan Sahin 0:047a7089311e 1129 * - Register : CNFG_CHG_I (0x28)
Okan Sahin 0:047a7089311e 1130 * - Bit Fields : [3:0]
Okan Sahin 0:047a7089311e 1131 * - Default : 0x0
Okan Sahin 0:047a7089311e 1132 * - Description : Analog channel to connect to AMUX.
Okan Sahin 0:047a7089311e 1133 */
Okan Sahin 0:047a7089311e 1134 typedef enum {
Okan Sahin 0:047a7089311e 1135 MUX_SEL_MULTIPLEXER_DISABLED,
Okan Sahin 0:047a7089311e 1136 MUX_SEL_CHGIN_VOLTAGE_MONITOR,
Okan Sahin 0:047a7089311e 1137 MUX_SEL_CHGIN_CURRENT_MONITOR,
Okan Sahin 0:047a7089311e 1138 MUX_SEL_BATTERY_VOLTAGE_MONITOR,
Okan Sahin 0:047a7089311e 1139 MUX_SEL_BATTERY_CHARGE_CURRENT_MONITOR,
Okan Sahin 0:047a7089311e 1140 MUX_SEL_BATTERY_DISCHARGE_CURRENT_MONITOR_NORMAL,
Okan Sahin 0:047a7089311e 1141 MUX_SEL_BATTERY_DISCHARGE_CURRENT_MONITOR_NULL,
Okan Sahin 0:047a7089311e 1142 MUX_SEL_RESERVED_0x07,
Okan Sahin 0:047a7089311e 1143 MUX_SEL_RESERVED_0x08,
Okan Sahin 0:047a7089311e 1144 MUX_SEL_AGND_VOLTAGE_MONITOR,
Okan Sahin 0:047a7089311e 1145 MUX_SEL_SYS_VOLTAGE_MONITOR,
Okan Sahin 0:047a7089311e 1146 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0B,
Okan Sahin 0:047a7089311e 1147 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0C,
Okan Sahin 0:047a7089311e 1148 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0D,
Okan Sahin 0:047a7089311e 1149 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0E,
Okan Sahin 0:047a7089311e 1150 MUX_SEL_SYS_VOLTAGE_MONITOR_0x0F
Okan Sahin 0:047a7089311e 1151 }decode_mux_sel_t;
Okan Sahin 0:047a7089311e 1152
Okan Sahin 0:047a7089311e 1153 /**
Okan Sahin 0:047a7089311e 1154 * @brief Set the analog channel to connect to AMUX.
Okan Sahin 0:047a7089311e 1155 *
Okan Sahin 0:047a7089311e 1156 * @param[in] selection AMUX value field to be written.
Okan Sahin 0:047a7089311e 1157 *
Okan Sahin 0:047a7089311e 1158 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1159 */
Okan Sahin 0:047a7089311e 1160 int set_mux_sel(decode_mux_sel_t selection);
Okan Sahin 0:047a7089311e 1161
Okan Sahin 0:047a7089311e 1162 /**
Okan Sahin 0:047a7089311e 1163 * @brief Get the analog channel to connect to AMUX.
Okan Sahin 0:047a7089311e 1164 *
Okan Sahin 0:047a7089311e 1165 * @param[out] selection AMUX value field to be read.
Okan Sahin 0:047a7089311e 1166 *
Okan Sahin 0:047a7089311e 1167 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1168 */
Okan Sahin 0:047a7089311e 1169 int get_mux_sel(decode_mux_sel_t *selection);
Okan Sahin 0:047a7089311e 1170
Okan Sahin 0:047a7089311e 1171 /**
Okan Sahin 0:047a7089311e 1172 * @brief Set SIMO Buck-Boost Channel x Target Output Voltage.
Okan Sahin 0:047a7089311e 1173 * CNFG_SBB0_A (0x29), CNFG_SBB1_A (0x2B) and CNFG_SBB2_A (0x2D)
Okan Sahin 0:047a7089311e 1174 *
Okan Sahin 0:047a7089311e 1175 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1176 * @param[in] voltV SIMO buck-boost channel x target output voltage field to be written.
Okan Sahin 0:047a7089311e 1177 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
Okan Sahin 0:047a7089311e 1178 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
Okan Sahin 0:047a7089311e 1179 * 0.650V, 0.675V, 0.700V, ...
Okan Sahin 0:047a7089311e 1180 * 5.425V, 5.450V, 5.475V, 5.500V.
Okan Sahin 0:047a7089311e 1181 *
Okan Sahin 0:047a7089311e 1182 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1183 */
Okan Sahin 0:047a7089311e 1184 int set_tv_sbb(uint8_t channel, float voltV);
Okan Sahin 0:047a7089311e 1185
Okan Sahin 0:047a7089311e 1186 /**
Okan Sahin 0:047a7089311e 1187 * @brief Get SIMO Buck-Boost Channel x Target Output Voltage.
Okan Sahin 0:047a7089311e 1188 * CNFG_SBB0_A (0x29), CNFG_SBB1_A (0x2B) and CNFG_SBB2_A (0x2D)
Okan Sahin 0:047a7089311e 1189 *
Okan Sahin 0:047a7089311e 1190 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1191 * @param[out] voltV SIMO buck-boost channel x target output voltage field to be read.
Okan Sahin 0:047a7089311e 1192 * SBBx = 500mV + 25mV x TV_SBBx[7:0]
Okan Sahin 0:047a7089311e 1193 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
Okan Sahin 0:047a7089311e 1194 * 0.650V, 0.675V, 0.700V, ...
Okan Sahin 0:047a7089311e 1195 * 5.425V, 5.450V, 5.475V, 5.500V.
Okan Sahin 0:047a7089311e 1196 *
Okan Sahin 0:047a7089311e 1197 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1198 */
Okan Sahin 0:047a7089311e 1199 int get_tv_sbb(uint8_t channel, float *voltV);
Okan Sahin 0:047a7089311e 1200
Okan Sahin 0:047a7089311e 1201 /**
Okan Sahin 0:047a7089311e 1202 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1203 *
Okan Sahin 0:047a7089311e 1204 * @details
Okan Sahin 0:047a7089311e 1205 * - Register : CNFG_SBB0_B (0x2A), CNFG_SBB1_B (0x2C) and CNFG_SBB2_B (0x2E)
Okan Sahin 0:047a7089311e 1206 * - Bit Fields : [6]
Okan Sahin 0:047a7089311e 1207 * - Default : 0x0
Okan Sahin 0:047a7089311e 1208 * - Description : Operation mode of SBB0, 1 or 2.
Okan Sahin 0:047a7089311e 1209 */
Okan Sahin 0:047a7089311e 1210 typedef enum {
Okan Sahin 0:047a7089311e 1211 OP_MODE_BUCK_BOOST_MODE,
Okan Sahin 0:047a7089311e 1212 OP_MODE_BUCK_MODE
Okan Sahin 0:047a7089311e 1213 }decode_op_mode_t;
Okan Sahin 0:047a7089311e 1214
Okan Sahin 0:047a7089311e 1215 /**
Okan Sahin 0:047a7089311e 1216 * @brief Set Operation mode of SBBx.
Okan Sahin 0:047a7089311e 1217 *
Okan Sahin 0:047a7089311e 1218 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1219 * @param[in] mode Operation mode of SBBx bit to be written.
Okan Sahin 0:047a7089311e 1220 *
Okan Sahin 0:047a7089311e 1221 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1222 */
Okan Sahin 0:047a7089311e 1223 int set_op_mode(uint8_t channel, decode_op_mode_t mode);
Okan Sahin 0:047a7089311e 1224
Okan Sahin 0:047a7089311e 1225 /**
Okan Sahin 0:047a7089311e 1226 * @brief Get Operation mode of SBBx.
Okan Sahin 0:047a7089311e 1227 *
Okan Sahin 0:047a7089311e 1228 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1229 * @param[out] mode Operation mode of SBBx bit to be read.
Okan Sahin 0:047a7089311e 1230 *
Okan Sahin 0:047a7089311e 1231 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1232 */
Okan Sahin 0:047a7089311e 1233 int get_op_mode(uint8_t channel, decode_op_mode_t *mode);
Okan Sahin 0:047a7089311e 1234
Okan Sahin 0:047a7089311e 1235 /**
Okan Sahin 0:047a7089311e 1236 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1237 *
Okan Sahin 0:047a7089311e 1238 * @details
Okan Sahin 0:047a7089311e 1239 * - Register : CNFG_SBB0_B (0x2A), CNFG_SBB1_B (0x2C) and CNFG_SBB2_B (0x2E)
Okan Sahin 0:047a7089311e 1240 * - Bit Fields : [3]
Okan Sahin 0:047a7089311e 1241 * - Default : 0x0
Okan Sahin 0:047a7089311e 1242 * - Description : SIMO Buck-Boost Channel 0, 1 or 2 Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1243 */
Okan Sahin 0:047a7089311e 1244 typedef enum {
Okan Sahin 0:047a7089311e 1245 ADE_SBB_DISABLED,
Okan Sahin 0:047a7089311e 1246 ADE_SBB_ENABLED
Okan Sahin 0:047a7089311e 1247 }decode_ade_sbb_t;
Okan Sahin 0:047a7089311e 1248
Okan Sahin 0:047a7089311e 1249 /**
Okan Sahin 0:047a7089311e 1250 * @brief Set SIMO Buck-Boost Channel x Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1251 *
Okan Sahin 0:047a7089311e 1252 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1253 * @param[in] ade_sbb SIMO buck-boost channel 2 active-discharge enable bit to be written.
Okan Sahin 0:047a7089311e 1254 *
Okan Sahin 0:047a7089311e 1255 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1256 */
Okan Sahin 0:047a7089311e 1257 int set_ade_sbb(uint8_t channel, decode_ade_sbb_t ade_sbb);
Okan Sahin 0:047a7089311e 1258
Okan Sahin 0:047a7089311e 1259 /**
Okan Sahin 0:047a7089311e 1260 * @brief Get SIMO Buck-Boost Channel x Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1261 *
Okan Sahin 0:047a7089311e 1262 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1263 * @param[out] ade_sbb SIMO buck-boost channel 2 active-discharge enable bit to be read.
Okan Sahin 0:047a7089311e 1264 *
Okan Sahin 0:047a7089311e 1265 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1266 */
Okan Sahin 0:047a7089311e 1267 int get_ade_sbb(uint8_t channel, decode_ade_sbb_t *ade_sbb);
Okan Sahin 0:047a7089311e 1268
Okan Sahin 0:047a7089311e 1269 /**
Okan Sahin 0:047a7089311e 1270 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1271 *
Okan Sahin 0:047a7089311e 1272 * @details
Okan Sahin 0:047a7089311e 1273 * - Register : CNFG_SBB0_B (0x2A), CNFG_SBB1_B (0x2C) and CNFG_SBB2_B (0x2E)
Okan Sahin 0:047a7089311e 1274 * - Bit Fields : [2:0]
Okan Sahin 0:047a7089311e 1275 * - Default : 0x0
Okan Sahin 0:047a7089311e 1276 * - Description : Enable Control for SIMO Buck-Boost Channel 0, 1 or 2.
Okan Sahin 0:047a7089311e 1277 */
Okan Sahin 0:047a7089311e 1278 typedef enum {
Okan Sahin 0:047a7089311e 1279 EN_SBB_FPS_SLOT_0,
Okan Sahin 0:047a7089311e 1280 EN_SBB_FPS_SLOT_1,
Okan Sahin 0:047a7089311e 1281 EN_SBB_FPS_SLOT_2,
Okan Sahin 0:047a7089311e 1282 EN_SBB_FPS_SLOT_3,
Okan Sahin 0:047a7089311e 1283 EN_SBB_OFF,
Okan Sahin 0:047a7089311e 1284 EN_SBB_SAME_AS_0X04,
Okan Sahin 0:047a7089311e 1285 EN_SBB_ON,
Okan Sahin 0:047a7089311e 1286 EN_SBB_SAME_AS_0X06
Okan Sahin 0:047a7089311e 1287 }decode_en_sbb_t;
Okan Sahin 0:047a7089311e 1288
Okan Sahin 0:047a7089311e 1289 /**
Okan Sahin 0:047a7089311e 1290 * @brief Set Enable Control for SIMO Buck-Boost Channel x.
Okan Sahin 0:047a7089311e 1291 *
Okan Sahin 0:047a7089311e 1292 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1293 * @param[in] en_sbb Enable control for SIMO buck-boost channel x field to be written.
Okan Sahin 0:047a7089311e 1294 *
Okan Sahin 0:047a7089311e 1295 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1296 */
Okan Sahin 0:047a7089311e 1297 int set_en_sbb(uint8_t channel, decode_en_sbb_t en_sbb);
Okan Sahin 0:047a7089311e 1298
Okan Sahin 0:047a7089311e 1299 /**
Okan Sahin 0:047a7089311e 1300 * @brief Get Enable Control for SIMO Buck-Boost Channel x.
Okan Sahin 0:047a7089311e 1301 *
Okan Sahin 0:047a7089311e 1302 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1303 * @param[out] en_sbb Enable control for SIMO buck-boost channel x field to be read.
Okan Sahin 0:047a7089311e 1304 *
Okan Sahin 0:047a7089311e 1305 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1306 */
Okan Sahin 0:047a7089311e 1307 int get_en_sbb(uint8_t channel, decode_en_sbb_t *en_sbb);
Okan Sahin 0:047a7089311e 1308
Okan Sahin 0:047a7089311e 1309 /**
Okan Sahin 0:047a7089311e 1310 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1311 *
Okan Sahin 0:047a7089311e 1312 * @details
Okan Sahin 0:047a7089311e 1313 * - Register : CNFG_SBB_TOP (0x2F)
Okan Sahin 0:047a7089311e 1314 * - Bit Fields : [7]
Okan Sahin 0:047a7089311e 1315 * - Default : 0x0
Okan Sahin 0:047a7089311e 1316 * - Description : Operation mode of the charging channel of SIMO
Okan Sahin 0:047a7089311e 1317 */
Okan Sahin 0:047a7089311e 1318 typedef enum {
Okan Sahin 0:047a7089311e 1319 OP_MODE_CHG_BUCK_BOOST,
Okan Sahin 0:047a7089311e 1320 OP_MODE_CHG_BUCK
Okan Sahin 0:047a7089311e 1321 }decode_op_mode_chg_t;
Okan Sahin 0:047a7089311e 1322
Okan Sahin 0:047a7089311e 1323 /**
Okan Sahin 0:047a7089311e 1324 * @brief Set Operation mode of the charging channel of SIMO.
Okan Sahin 0:047a7089311e 1325 *
Okan Sahin 0:047a7089311e 1326 * @param[in] op_mode_chg Operation mode of the charging channel of SIMO bit to be written.
Okan Sahin 0:047a7089311e 1327 *
Okan Sahin 0:047a7089311e 1328 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1329 */
Okan Sahin 0:047a7089311e 1330 int set_op_mode_chg(decode_op_mode_chg_t op_mode_chg);
Okan Sahin 0:047a7089311e 1331
Okan Sahin 0:047a7089311e 1332 /**
Okan Sahin 0:047a7089311e 1333 * @brief Get Operation mode of the charging channel of SIMO.
Okan Sahin 0:047a7089311e 1334 *
Okan Sahin 0:047a7089311e 1335 * @param[out] op_mode_chg Operation mode of the charging channel of SIMO bit to be read.
Okan Sahin 0:047a7089311e 1336 *
Okan Sahin 0:047a7089311e 1337 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1338 */
Okan Sahin 0:047a7089311e 1339 int get_op_mode_chg(decode_op_mode_chg_t *op_mode_chg);
Okan Sahin 0:047a7089311e 1340
Okan Sahin 0:047a7089311e 1341 /**
Okan Sahin 0:047a7089311e 1342 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1343 *
Okan Sahin 0:047a7089311e 1344 * @details
Okan Sahin 0:047a7089311e 1345 * - Register : CNFG_SBB_TOP (0x2F)
Okan Sahin 0:047a7089311e 1346 * - Bit Fields : [1:0]
Okan Sahin 0:047a7089311e 1347 * - Default : 0x0
Okan Sahin 0:047a7089311e 1348 * - Description : SIMO Buck-Boost (all channels) Drive Strength Trim.
Okan Sahin 0:047a7089311e 1349 */
Okan Sahin 0:047a7089311e 1350 typedef enum {
Okan Sahin 0:047a7089311e 1351 DRV_SBB_FASTEST_TRANSITION_TIME,
Okan Sahin 0:047a7089311e 1352 DRV_SBB_A_LITTLE_SLOWER_THAN_0X00,
Okan Sahin 0:047a7089311e 1353 DRV_SBB_A_LITTLE_SLOWER_THAN_0X01,
Okan Sahin 0:047a7089311e 1354 DRV_SBB_A_LITTLE_SLOWER_THAN_0X02
Okan Sahin 0:047a7089311e 1355 }decode_drv_sbb_t;
Okan Sahin 0:047a7089311e 1356
Okan Sahin 0:047a7089311e 1357 /**
Okan Sahin 0:047a7089311e 1358 * @brief Set SIMO Buck-Boost (all channels) Drive Strength Trim.
Okan Sahin 0:047a7089311e 1359 *
Okan Sahin 0:047a7089311e 1360 * @param[in] drv_sbb SIMO buck-boost drive strength trim field to be written.
Okan Sahin 0:047a7089311e 1361 *
Okan Sahin 0:047a7089311e 1362 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1363 */
Okan Sahin 0:047a7089311e 1364 int set_drv_sbb(decode_drv_sbb_t drv_sbb);
Okan Sahin 0:047a7089311e 1365
Okan Sahin 0:047a7089311e 1366 /**
Okan Sahin 0:047a7089311e 1367 * @brief Get SIMO Buck-Boost (all channels) Drive Strength Trim.
Okan Sahin 0:047a7089311e 1368 *
Okan Sahin 0:047a7089311e 1369 * @param[out] drv_sbb SIMO buck-boost drive strength trim field to be read.
Okan Sahin 0:047a7089311e 1370 *
Okan Sahin 0:047a7089311e 1371 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1372 */
Okan Sahin 0:047a7089311e 1373 int get_drv_sbb(decode_drv_sbb_t *drv_sbb);
Okan Sahin 0:047a7089311e 1374
Okan Sahin 0:047a7089311e 1375 /**
Okan Sahin 0:047a7089311e 1376 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1377 *
Okan Sahin 0:047a7089311e 1378 * @details
Okan Sahin 0:047a7089311e 1379 * - Register : CNFG_SBB_TOP_B (0x30)
Okan Sahin 0:047a7089311e 1380 * - Bit Fields : [7:6]
Okan Sahin 0:047a7089311e 1381 * - Default : 0x0
Okan Sahin 0:047a7089311e 1382 * - Description : SIMO Buck-Boost Charging Channel Peak Current Limit
Okan Sahin 0:047a7089311e 1383 */
Okan Sahin 0:047a7089311e 1384 typedef enum {
Okan Sahin 0:047a7089311e 1385 IP_CHG_AMP_2_000,
Okan Sahin 0:047a7089311e 1386 IP_CHG_AMP_1_500,
Okan Sahin 0:047a7089311e 1387 IP_CHG_AMP_1_000,
Okan Sahin 0:047a7089311e 1388 IP_CHG_AMP_0_500
Okan Sahin 0:047a7089311e 1389 }decode_ip_chg_t;
Okan Sahin 0:047a7089311e 1390
Okan Sahin 0:047a7089311e 1391 /**
Okan Sahin 0:047a7089311e 1392 * @brief Set SIMO Buck-Boost Charging Channel Peak Current Limit.
Okan Sahin 0:047a7089311e 1393 *
Okan Sahin 0:047a7089311e 1394 * @param[in] ip_chg SIMO Buck-Boost Charging Channel Peak Current Limit field to be written.
Okan Sahin 0:047a7089311e 1395 *
Okan Sahin 0:047a7089311e 1396 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1397 */
Okan Sahin 0:047a7089311e 1398 int set_ip_chg(decode_ip_chg_t ip_chg);
Okan Sahin 0:047a7089311e 1399
Okan Sahin 0:047a7089311e 1400 /**
Okan Sahin 0:047a7089311e 1401 * @brief Get SIMO Buck-Boost Charging Channel Peak Current Limit.
Okan Sahin 0:047a7089311e 1402 *
Okan Sahin 0:047a7089311e 1403 * @param[out] ip_chg SIMO Buck-Boost Charging Channel Peak Current Limit field to be read.
Okan Sahin 0:047a7089311e 1404 *
Okan Sahin 0:047a7089311e 1405 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1406 */
Okan Sahin 0:047a7089311e 1407 int get_ip_chg(decode_ip_chg_t *ip_chg);
Okan Sahin 0:047a7089311e 1408
Okan Sahin 0:047a7089311e 1409 /**
Okan Sahin 0:047a7089311e 1410 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1411 *
Okan Sahin 0:047a7089311e 1412 * @details
Okan Sahin 0:047a7089311e 1413 * - Register : CNFG_SBB_TOP_B (0x30)
Okan Sahin 0:047a7089311e 1414 * - Bit Fields : [5:4], [3:2] and [1:0]
Okan Sahin 0:047a7089311e 1415 * - Default : 0x0
Okan Sahin 0:047a7089311e 1416 * - Description : SIMO Buck-Boost Channel 0, 1 or 2 Peak Current Limit
Okan Sahin 0:047a7089311e 1417 */
Okan Sahin 0:047a7089311e 1418 typedef enum {
Okan Sahin 0:047a7089311e 1419 IP_SBB_AMP_1_000,
Okan Sahin 0:047a7089311e 1420 IP_SBB_AMP_0_750,
Okan Sahin 0:047a7089311e 1421 IP_SBB_AMP_0_500,
Okan Sahin 0:047a7089311e 1422 IP_SBB_AMP_0_333
Okan Sahin 0:047a7089311e 1423 }decode_ip_sbb_t;
Okan Sahin 0:047a7089311e 1424
Okan Sahin 0:047a7089311e 1425 /**
Okan Sahin 0:047a7089311e 1426 * @brief Set SIMO Buck-Boost Channel 0, 1 or 2 Peak Current Limit.
Okan Sahin 0:047a7089311e 1427 *
Okan Sahin 0:047a7089311e 1428 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1429 * @param[in] ip_sbb SIMO Buck-Boost Channel x Peak Current Limit field to be written.
Okan Sahin 0:047a7089311e 1430 *
Okan Sahin 0:047a7089311e 1431 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1432 */
Okan Sahin 0:047a7089311e 1433 int set_ip_sbb(uint8_t channel, decode_ip_sbb_t ip_sbb);
Okan Sahin 0:047a7089311e 1434
Okan Sahin 0:047a7089311e 1435 /**
Okan Sahin 0:047a7089311e 1436 * @brief Get SIMO Buck-Boost Channel 0, 1 or 2 Peak Current Limit.
Okan Sahin 0:047a7089311e 1437 *
Okan Sahin 0:047a7089311e 1438 * @param[in] channel Channel number: 0, 1 or 2.
Okan Sahin 0:047a7089311e 1439 * @param[out] ip_sbb SIMO Buck-Boost Channel x Peak Current Limit field to be read.
Okan Sahin 0:047a7089311e 1440 *
Okan Sahin 0:047a7089311e 1441 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1442 */
Okan Sahin 0:047a7089311e 1443 int get_ip_sbb(uint8_t channel, decode_ip_sbb_t *ip_sbb);
Okan Sahin 0:047a7089311e 1444
Okan Sahin 0:047a7089311e 1445 /**
Okan Sahin 0:047a7089311e 1446 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1447 *
Okan Sahin 0:047a7089311e 1448 * @details
Okan Sahin 0:047a7089311e 1449 * - Register : CNFG_LDO0_A (0x38)
Okan Sahin 0:047a7089311e 1450 * - Bit Fields : [7]
Okan Sahin 0:047a7089311e 1451 * - Default : 0x0
Okan Sahin 0:047a7089311e 1452 * - Description : LDO Output Voltage. This bit applies a 1.325V offset to the output voltage of the LDO.
Okan Sahin 0:047a7089311e 1453 */
Okan Sahin 0:047a7089311e 1454 typedef enum {
Okan Sahin 0:047a7089311e 1455 TV_LDO_NO_OFFSET,
Okan Sahin 0:047a7089311e 1456 TV_LDO_NO_1_325V
Okan Sahin 0:047a7089311e 1457 }decode_tv_ldo_offset_t;
Okan Sahin 0:047a7089311e 1458
Okan Sahin 0:047a7089311e 1459 /**
Okan Sahin 0:047a7089311e 1460 * @brief Set LDO Output Channel 0 Target Output Voltage. Bit 7.
Okan Sahin 0:047a7089311e 1461 * CNFG_LDO0_A (0x38)
Okan Sahin 0:047a7089311e 1462 *
Okan Sahin 0:047a7089311e 1463 * @param[in] offset LDO Output Channel 0 target output voltage offset field to be read.
Okan Sahin 0:047a7089311e 1464 *
Okan Sahin 0:047a7089311e 1465 *
Okan Sahin 0:047a7089311e 1466 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1467 */
Okan Sahin 0:047a7089311e 1468 int set_tv_ldo_offset(decode_tv_ldo_offset_t offset);
Okan Sahin 0:047a7089311e 1469
Okan Sahin 0:047a7089311e 1470 /**
Okan Sahin 0:047a7089311e 1471 * @brief Get LDO Output Channel 0 Target Output Voltage. Bit 7.
Okan Sahin 0:047a7089311e 1472 * CNFG_LDO0_A (0x38)
Okan Sahin 0:047a7089311e 1473 *
Okan Sahin 0:047a7089311e 1474 * @param[out] offset LDO Output Channel 0 target output voltage offset field to be read.
Okan Sahin 0:047a7089311e 1475 *
Okan Sahin 0:047a7089311e 1476 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1477 */
Okan Sahin 0:047a7089311e 1478 int get_tv_ldo_offset(decode_tv_ldo_offset_t *offset);
Okan Sahin 0:047a7089311e 1479
Okan Sahin 0:047a7089311e 1480 /**
Okan Sahin 0:047a7089311e 1481 * @brief Set LDO Output Channel 0 Target Output Voltage. Bit 6:0.
Okan Sahin 0:047a7089311e 1482 * CNFG_LDO0_A (0x38)
Okan Sahin 0:047a7089311e 1483 *
Okan Sahin 0:047a7089311e 1484 * @param[in] voltV LDO Output Channel 0 target output voltage field to be read.
Okan Sahin 0:047a7089311e 1485 * LDOx = 500mV + 25mV x TV_LDOx[6:0]
Okan Sahin 0:047a7089311e 1486 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
Okan Sahin 0:047a7089311e 1487 * 0.650V, 0.675V, 0.700V, ...
Okan Sahin 0:047a7089311e 1488 * 3.650, 3.675.
Okan Sahin 0:047a7089311e 1489 *
Okan Sahin 0:047a7089311e 1490 * When TV_LDO[7] = 0, TV_LDO[6:0] sets the
Okan Sahin 0:047a7089311e 1491 * LDO's output voltage range from 0.5V to 3.675V.
Okan Sahin 0:047a7089311e 1492 * When TV_LDO[7] = 1, TV_LDO[6:0] sets the
Okan Sahin 0:047a7089311e 1493 * LDO's output voltage from 1.825V to 5V.
Okan Sahin 0:047a7089311e 1494 *
Okan Sahin 0:047a7089311e 1495 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1496 */
Okan Sahin 0:047a7089311e 1497 int set_tv_ldo_volt(float voltV);
Okan Sahin 0:047a7089311e 1498
Okan Sahin 0:047a7089311e 1499 /**
Okan Sahin 0:047a7089311e 1500 * @brief Get LDO Output Channel 0 Target Output Voltage. Bit 6:0.
Okan Sahin 0:047a7089311e 1501 * CNFG_LDO0_A (0x38)
Okan Sahin 0:047a7089311e 1502 *
Okan Sahin 0:047a7089311e 1503 * @param[out] voltV LDO Output Channel 0 target output voltage field to be read.
Okan Sahin 0:047a7089311e 1504 * LDOx = 500mV + 25mV x TV_LDOx[6:0]
Okan Sahin 0:047a7089311e 1505 * 0.500V, 0.525V, 0.550V, 0.575V, 0.600V, 0.625V,
Okan Sahin 0:047a7089311e 1506 * 0.650V, 0.675V, 0.700V, ...
Okan Sahin 0:047a7089311e 1507 * 3.650, 3.675.
Okan Sahin 0:047a7089311e 1508 *
Okan Sahin 0:047a7089311e 1509 * When TV_LDO[7] = 0, TV_LDO[6:0] sets the
Okan Sahin 0:047a7089311e 1510 * LDO's output voltage range from 0.5V to 3.675V.
Okan Sahin 0:047a7089311e 1511 * When TV_LDO[7] = 1, TV_LDO[6:0] sets the
Okan Sahin 0:047a7089311e 1512 * LDO's output voltage from 1.825V to 5V.
Okan Sahin 0:047a7089311e 1513 *
Okan Sahin 0:047a7089311e 1514 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1515 */
Okan Sahin 0:047a7089311e 1516 int get_tv_ldo_volt(float *voltV);
Okan Sahin 0:047a7089311e 1517
Okan Sahin 0:047a7089311e 1518 /**
Okan Sahin 0:047a7089311e 1519 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1520 *
Okan Sahin 0:047a7089311e 1521 * @details
Okan Sahin 0:047a7089311e 1522 * - Register : CNFG_LDO0_B (0x39)
Okan Sahin 0:047a7089311e 1523 * - Bit Fields : [2:0]
Okan Sahin 0:047a7089311e 1524 * - Default : 0x0
Okan Sahin 0:047a7089311e 1525 * - Description : Enable Control for LDO0.
Okan Sahin 0:047a7089311e 1526 */
Okan Sahin 0:047a7089311e 1527 typedef enum {
Okan Sahin 0:047a7089311e 1528 EN_LDO_FPS_SLOT_0,
Okan Sahin 0:047a7089311e 1529 EN_LDO_FPS_SLOT_1,
Okan Sahin 0:047a7089311e 1530 EN_LDO_FPS_SLOT_2,
Okan Sahin 0:047a7089311e 1531 EN_LDO_FPS_SLOT_3,
Okan Sahin 0:047a7089311e 1532 EN_LDO_OFF,
Okan Sahin 0:047a7089311e 1533 EN_LDO_SAME_AS_0X04,
Okan Sahin 0:047a7089311e 1534 EN_LDO_ON,
Okan Sahin 0:047a7089311e 1535 EN_LDO_SAME_AS_0X06
Okan Sahin 0:047a7089311e 1536 }decode_en_ldo_t;
Okan Sahin 0:047a7089311e 1537
Okan Sahin 0:047a7089311e 1538 /**
Okan Sahin 0:047a7089311e 1539 * @brief Set Enable Control for LDO Channel0.
Okan Sahin 0:047a7089311e 1540 *
Okan Sahin 0:047a7089311e 1541 * @param[in] en_ldo Enable control for LDO channel x field to be written.
Okan Sahin 0:047a7089311e 1542 *
Okan Sahin 0:047a7089311e 1543 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1544 */
Okan Sahin 0:047a7089311e 1545 int set_en_ldo(decode_en_ldo_t en_ldo);
Okan Sahin 0:047a7089311e 1546
Okan Sahin 0:047a7089311e 1547 /**
Okan Sahin 0:047a7089311e 1548 * @brief Get Enable Control for LDO Channel x.
Okan Sahin 0:047a7089311e 1549 *
Okan Sahin 0:047a7089311e 1550 * @param[out] en_ldo Enable control for LDO channel x field to be read.
Okan Sahin 0:047a7089311e 1551 *
Okan Sahin 0:047a7089311e 1552 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1553 */
Okan Sahin 0:047a7089311e 1554 int get_en_ldo(decode_en_ldo_t *en_ldo);
Okan Sahin 0:047a7089311e 1555
Okan Sahin 0:047a7089311e 1556 /**
Okan Sahin 0:047a7089311e 1557 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1558 *
Okan Sahin 0:047a7089311e 1559 * @details
Okan Sahin 0:047a7089311e 1560 * - Register : CNFG_LDO0_B (0x39)
Okan Sahin 0:047a7089311e 1561 * - Bit Fields : [3]
Okan Sahin 0:047a7089311e 1562 * - Default : 0x0
Okan Sahin 0:047a7089311e 1563 * - Description : LDO0 Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1564 */
Okan Sahin 0:047a7089311e 1565 typedef enum {
Okan Sahin 0:047a7089311e 1566 ADE_LDO_DISABLED,
Okan Sahin 0:047a7089311e 1567 ADE_LDO_ENABLED
Okan Sahin 0:047a7089311e 1568 }decode_ade_ldo_t;
Okan Sahin 0:047a7089311e 1569
Okan Sahin 0:047a7089311e 1570 /**
Okan Sahin 0:047a7089311e 1571 * @brief Set LDO0 Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1572 *
Okan Sahin 0:047a7089311e 1573 * @param[in] ade_ldo LDO0 active-discharge enable bit to be written.
Okan Sahin 0:047a7089311e 1574 *
Okan Sahin 0:047a7089311e 1575 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1576 */
Okan Sahin 0:047a7089311e 1577 int set_ade_ldo(decode_ade_ldo_t ade_ldo);
Okan Sahin 0:047a7089311e 1578
Okan Sahin 0:047a7089311e 1579 /**
Okan Sahin 0:047a7089311e 1580 * @brief Get LDO0 Active-Discharge Enable.
Okan Sahin 0:047a7089311e 1581 *
Okan Sahin 0:047a7089311e 1582 * @param[out] ade_ldo LDO0 active-discharge enable bit to be read.
Okan Sahin 0:047a7089311e 1583 *
Okan Sahin 0:047a7089311e 1584 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1585 */
Okan Sahin 0:047a7089311e 1586 int get_ade_ldo(decode_ade_ldo_t *ade_ldo);
Okan Sahin 0:047a7089311e 1587
Okan Sahin 0:047a7089311e 1588 /**
Okan Sahin 0:047a7089311e 1589 * @brief Register Configuration
Okan Sahin 0:047a7089311e 1590 *
Okan Sahin 0:047a7089311e 1591 * @details
Okan Sahin 0:047a7089311e 1592 * - Register : CNFG_LDO0_B (0x39)
Okan Sahin 0:047a7089311e 1593 * - Bit Fields : [4]
Okan Sahin 0:047a7089311e 1594 * - Default : 0x0
Okan Sahin 0:047a7089311e 1595 * - Description : Operation mode of LDO0.
Okan Sahin 0:047a7089311e 1596 */
Okan Sahin 0:047a7089311e 1597 typedef enum {
Okan Sahin 0:047a7089311e 1598 LDO_MD_LDO_MODE,
Okan Sahin 0:047a7089311e 1599 LDO_MD_LSW_MODE
Okan Sahin 0:047a7089311e 1600 }decode_ldo_md_t;
Okan Sahin 0:047a7089311e 1601
Okan Sahin 0:047a7089311e 1602 /**
Okan Sahin 0:047a7089311e 1603 * @brief Set Operation mode of LDOx.
Okan Sahin 0:047a7089311e 1604 *
Okan Sahin 0:047a7089311e 1605 * @param[in] mode Operation mode of LDOx bit to be written.
Okan Sahin 0:047a7089311e 1606 *
Okan Sahin 0:047a7089311e 1607 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1608 */
Okan Sahin 0:047a7089311e 1609 int set_ldo_md(decode_ldo_md_t mode);
Okan Sahin 0:047a7089311e 1610
Okan Sahin 0:047a7089311e 1611 /**
Okan Sahin 0:047a7089311e 1612 * @brief Get Operation mode of LDOx.
Okan Sahin 0:047a7089311e 1613 *
Okan Sahin 0:047a7089311e 1614 * @param[out] mode Operation mode of LDOx bit to be read.
Okan Sahin 0:047a7089311e 1615 *
Okan Sahin 0:047a7089311e 1616 * @return 0 on success, error code on failure.
Okan Sahin 0:047a7089311e 1617 */
Okan Sahin 0:047a7089311e 1618 int get_ldo_md(decode_ldo_md_t *mode);
Okan Sahin 0:047a7089311e 1619
Okan Sahin 0:047a7089311e 1620 /**
Okan Sahin 0:047a7089311e 1621 * @brief Disable all interrupts
Okan Sahin 0:047a7089311e 1622 *
Okan Sahin 0:047a7089311e 1623 * @return 0 on success, error code on failure
Okan Sahin 0:047a7089311e 1624 */
Okan Sahin 0:047a7089311e 1625 int irq_disable_all();
Okan Sahin 0:047a7089311e 1626
Okan Sahin 0:047a7089311e 1627 /**
Okan Sahin 0:047a7089311e 1628 * @brief Set Interrupt Handler for a Specific Interrupt ID.
Okan Sahin 0:047a7089311e 1629 *
Okan Sahin 0:047a7089311e 1630 * @param[in] id Interrupt id, one of INTR_ID_*.
Okan Sahin 0:047a7089311e 1631 * @param[in] func Interrupt handler function.
Okan Sahin 0:047a7089311e 1632 * @param[in] cb Interrupt handler data.
Okan Sahin 0:047a7089311e 1633 */
Okan Sahin 0:047a7089311e 1634 void set_interrupt_handler(reg_bit_int_glbl_t id, interrupt_handler_function func, void *cb);
Okan Sahin 0:047a7089311e 1635 };
Okan Sahin 0:047a7089311e 1636 #endif /*_MAX77659_H_*/