1817f42f0SPascal Paillet /* 2817f42f0SPascal Paillet * Copyright (C) 2024, STMicroelectronics - All Rights Reserved 3817f42f0SPascal Paillet * 4817f42f0SPascal Paillet * SPDX-License-Identifier: BSD-3-Clause 5817f42f0SPascal Paillet */ 6817f42f0SPascal Paillet 7817f42f0SPascal Paillet #ifndef STPMIC2_H 8817f42f0SPascal Paillet #define STPMIC2_H 9817f42f0SPascal Paillet 10817f42f0SPascal Paillet #include <drivers/st/stm32_i2c.h> 11817f42f0SPascal Paillet #include <lib/utils_def.h> 12817f42f0SPascal Paillet 13817f42f0SPascal Paillet enum { 14817f42f0SPascal Paillet STPMIC2_BUCK1 = 0, 15817f42f0SPascal Paillet STPMIC2_BUCK2, 16817f42f0SPascal Paillet STPMIC2_BUCK3, 17817f42f0SPascal Paillet STPMIC2_BUCK4, 18817f42f0SPascal Paillet STPMIC2_BUCK5, 19817f42f0SPascal Paillet STPMIC2_BUCK6, 20817f42f0SPascal Paillet STPMIC2_BUCK7, 21817f42f0SPascal Paillet STPMIC2_REFDDR, 22817f42f0SPascal Paillet STPMIC2_LDO1, 23817f42f0SPascal Paillet STPMIC2_LDO2, 24817f42f0SPascal Paillet STPMIC2_LDO3, 25817f42f0SPascal Paillet STPMIC2_LDO4, 26817f42f0SPascal Paillet STPMIC2_LDO5, 27817f42f0SPascal Paillet STPMIC2_LDO6, 28817f42f0SPascal Paillet STPMIC2_LDO7, 29817f42f0SPascal Paillet STPMIC2_LDO8, 30817f42f0SPascal Paillet STPMIC2_NB_REG 31817f42f0SPascal Paillet }; 32817f42f0SPascal Paillet 33817f42f0SPascal Paillet /* Status Registers */ 34817f42f0SPascal Paillet #define PRODUCT_ID 0x00 35817f42f0SPascal Paillet #define VERSION_SR 0x01 36817f42f0SPascal Paillet #define TURN_ON_SR 0x02 37817f42f0SPascal Paillet #define TURN_OFF_SR 0x03 38817f42f0SPascal Paillet #define RESTART_SR 0x04 39817f42f0SPascal Paillet #define OCP_SR1 0x05 40817f42f0SPascal Paillet #define OCP_SR2 0x06 41817f42f0SPascal Paillet #define EN_SR1 0x07 42817f42f0SPascal Paillet #define EN_SR2 0x08 43817f42f0SPascal Paillet #define FS_CNT_SR1 0x09 44817f42f0SPascal Paillet #define FS_CNT_SR2 0x0A 45817f42f0SPascal Paillet #define FS_CNT_SR3 0x0B 46817f42f0SPascal Paillet #define MODE_SR 0x0C 47817f42f0SPascal Paillet /* Control Registers */ 48817f42f0SPascal Paillet #define MAIN_CR 0x10 49817f42f0SPascal Paillet #define VINLOW_CR 0x11 50817f42f0SPascal Paillet #define PKEY_LKP_CR 0x12 51817f42f0SPascal Paillet #define WDG_CR 0x13 52817f42f0SPascal Paillet #define WDG_TMR_CR 0x14 53817f42f0SPascal Paillet #define WDG_TMR_SR 0x15 54817f42f0SPascal Paillet #define FS_OCP_CR1 0x16 55817f42f0SPascal Paillet #define FS_OCP_CR2 0x17 56817f42f0SPascal Paillet #define PADS_PULL_CR 0x18 57817f42f0SPascal Paillet #define BUCKS_PD_CR1 0x19 58817f42f0SPascal Paillet #define BUCKS_PD_CR2 0x1A 59817f42f0SPascal Paillet #define LDOS_PD_CR1 0x1B 60817f42f0SPascal Paillet #define LDOS_PD_CR2 0x1C 61817f42f0SPascal Paillet #define BUCKS_MRST_CR 0x1D 62817f42f0SPascal Paillet #define LDOS_MRST_CR 0x1E 63817f42f0SPascal Paillet /* Buck CR */ 64817f42f0SPascal Paillet #define BUCK1_MAIN_CR1 0x20 65817f42f0SPascal Paillet #define BUCK1_MAIN_CR2 0x21 66817f42f0SPascal Paillet #define BUCK1_ALT_CR1 0x22 67817f42f0SPascal Paillet #define BUCK1_ALT_CR2 0x23 68817f42f0SPascal Paillet #define BUCK1_PWRCTRL_CR 0x24 69817f42f0SPascal Paillet #define BUCK2_MAIN_CR1 0x25 70817f42f0SPascal Paillet #define BUCK2_MAIN_CR2 0x26 71817f42f0SPascal Paillet #define BUCK2_ALT_CR1 0x27 72817f42f0SPascal Paillet #define BUCK2_ALT_CR2 0x28 73817f42f0SPascal Paillet #define BUCK2_PWRCTRL_CR 0x29 74817f42f0SPascal Paillet #define BUCK3_MAIN_CR1 0x2A 75817f42f0SPascal Paillet #define BUCK3_MAIN_CR2 0x2B 76817f42f0SPascal Paillet #define BUCK3_ALT_CR1 0x2C 77817f42f0SPascal Paillet #define BUCK3_ALT_CR2 0x2D 78817f42f0SPascal Paillet #define BUCK3_PWRCTRL_CR 0x2E 79817f42f0SPascal Paillet #define BUCK4_MAIN_CR1 0x2F 80817f42f0SPascal Paillet #define BUCK4_MAIN_CR2 0x30 81817f42f0SPascal Paillet #define BUCK4_ALT_CR1 0x31 82817f42f0SPascal Paillet #define BUCK4_ALT_CR2 0x32 83817f42f0SPascal Paillet #define BUCK4_PWRCTRL_CR 0x33 84817f42f0SPascal Paillet #define BUCK5_MAIN_CR1 0x34 85817f42f0SPascal Paillet #define BUCK5_MAIN_CR2 0x35 86817f42f0SPascal Paillet #define BUCK5_ALT_CR1 0x36 87817f42f0SPascal Paillet #define BUCK5_ALT_CR2 0x37 88817f42f0SPascal Paillet #define BUCK5_PWRCTRL_CR 0x38 89817f42f0SPascal Paillet #define BUCK6_MAIN_CR1 0x39 90817f42f0SPascal Paillet #define BUCK6_MAIN_CR2 0x3A 91817f42f0SPascal Paillet #define BUCK6_ALT_CR1 0x3B 92817f42f0SPascal Paillet #define BUCK6_ALT_CR2 0x3C 93817f42f0SPascal Paillet #define BUCK6_PWRCTRL_CR 0x3D 94817f42f0SPascal Paillet #define BUCK7_MAIN_CR1 0x3E 95817f42f0SPascal Paillet #define BUCK7_MAIN_CR2 0x3F 96817f42f0SPascal Paillet #define BUCK7_ALT_CR1 0x40 97817f42f0SPascal Paillet #define BUCK7_ALT_CR2 0x41 98817f42f0SPascal Paillet #define BUCK7_PWRCTRL_CR 0x42 99817f42f0SPascal Paillet /* LDO CR */ 100817f42f0SPascal Paillet #define LDO1_MAIN_CR 0x4C 101817f42f0SPascal Paillet #define LDO1_ALT_CR 0x4D 102817f42f0SPascal Paillet #define LDO1_PWRCTRL_CR 0x4E 103817f42f0SPascal Paillet #define LDO2_MAIN_CR 0x4F 104817f42f0SPascal Paillet #define LDO2_ALT_CR 0x50 105817f42f0SPascal Paillet #define LDO2_PWRCTRL_CR 0x51 106817f42f0SPascal Paillet #define LDO3_MAIN_CR 0x52 107817f42f0SPascal Paillet #define LDO3_ALT_CR 0x53 108817f42f0SPascal Paillet #define LDO3_PWRCTRL_CR 0x54 109817f42f0SPascal Paillet #define LDO4_MAIN_CR 0x55 110817f42f0SPascal Paillet #define LDO4_ALT_CR 0x56 111817f42f0SPascal Paillet #define LDO4_PWRCTRL_CR 0x57 112817f42f0SPascal Paillet #define LDO5_MAIN_CR 0x58 113817f42f0SPascal Paillet #define LDO5_ALT_CR 0x59 114817f42f0SPascal Paillet #define LDO5_PWRCTRL_CR 0x5A 115817f42f0SPascal Paillet #define LDO6_MAIN_CR 0x5B 116817f42f0SPascal Paillet #define LDO6_ALT_CR 0x5C 117817f42f0SPascal Paillet #define LDO6_PWRCTRL_CR 0x5D 118817f42f0SPascal Paillet #define LDO7_MAIN_CR 0x5E 119817f42f0SPascal Paillet #define LDO7_ALT_CR 0x5F 120817f42f0SPascal Paillet #define LDO7_PWRCTRL_CR 0x60 121817f42f0SPascal Paillet #define LDO8_MAIN_CR 0x61 122817f42f0SPascal Paillet #define LDO8_ALT_CR 0x62 123817f42f0SPascal Paillet #define LDO8_PWRCTRL_CR 0x63 124817f42f0SPascal Paillet #define REFDDR_MAIN_CR 0x64 125817f42f0SPascal Paillet #define REFDDR_ALT_CR 0x65 126817f42f0SPascal Paillet #define REFDDR_PWRCTRL_CR 0x66 127817f42f0SPascal Paillet /* INTERRUPT CR */ 128817f42f0SPascal Paillet #define INT_PENDING_R1 0x70 129817f42f0SPascal Paillet #define INT_PENDING_R2 0x71 130817f42f0SPascal Paillet #define INT_PENDING_R3 0x72 131817f42f0SPascal Paillet #define INT_PENDING_R4 0x73 132817f42f0SPascal Paillet #define INT_CLEAR_R1 0x74 133817f42f0SPascal Paillet #define INT_CLEAR_R2 0x75 134817f42f0SPascal Paillet #define INT_CLEAR_R3 0x76 135817f42f0SPascal Paillet #define INT_CLEAR_R4 0x77 136817f42f0SPascal Paillet #define INT_MASK_R1 0x78 137817f42f0SPascal Paillet #define INT_MASK_R2 0x79 138817f42f0SPascal Paillet #define INT_MASK_R3 0x7A 139817f42f0SPascal Paillet #define INT_MASK_R4 0x7B 140817f42f0SPascal Paillet #define INT_SRC_R1 0x7C 141817f42f0SPascal Paillet #define INT_SRC_R2 0x7D 142817f42f0SPascal Paillet #define INT_SRC_R3 0x7E 143817f42f0SPascal Paillet #define INT_SRC_R4 0x7F 144817f42f0SPascal Paillet #define INT_DBG_LATCH_R1 0x80 145817f42f0SPascal Paillet #define INT_DBG_LATCH_R2 0x81 146817f42f0SPascal Paillet #define INT_DBG_LATCH_R3 0x82 147817f42f0SPascal Paillet #define INT_DBG_LATCH_R4 0x83 148817f42f0SPascal Paillet 149*c1222e7bSBoerge Struempfel /* NVM user control registers */ 150*c1222e7bSBoerge Struempfel #define NVM_SR 0x8E 151*c1222e7bSBoerge Struempfel #define NVM_CR 0x8F 152*c1222e7bSBoerge Struempfel 153*c1222e7bSBoerge Struempfel /* NVM user shadow registers */ 154*c1222e7bSBoerge Struempfel #define NVM_MAIN_CTRL_SHR1 0x90 155*c1222e7bSBoerge Struempfel #define NVM_MAIN_CTRL_SHR2 0x91 156*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR1 0x92 157*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR2 0x93 158*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR3 0x94 159*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR4 0x95 160*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR5 0x96 161*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR6 0x97 162*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR7 0x98 163*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR8 0x99 164*c1222e7bSBoerge Struempfel #define NVM_BUCK_MODE_SHR1 0x9A 165*c1222e7bSBoerge Struempfel #define NVM_BUCK_MODE_SHR2 0x9B 166*c1222e7bSBoerge Struempfel #define NVM_BUCK1_VOUT_SHR 0x9C 167*c1222e7bSBoerge Struempfel #define NVM_BUCK2_VOUT_SHR 0x9D 168*c1222e7bSBoerge Struempfel #define NVM_BUCK3_VOUT_SHR 0x9E 169*c1222e7bSBoerge Struempfel #define NVM_BUCK4_VOUT_SHR 0x9F 170*c1222e7bSBoerge Struempfel #define NVM_BUCK5_VOUT_SHR 0xA0 171*c1222e7bSBoerge Struempfel #define NVM_BUCK6_VOUT_SHR 0xA1 172*c1222e7bSBoerge Struempfel #define NVM_BUCK7_VOUT_SHR 0xA2 173*c1222e7bSBoerge Struempfel #define NVM_LDO2_SHR 0xA3 174*c1222e7bSBoerge Struempfel #define NVM_LDO3_SHR 0xA4 175*c1222e7bSBoerge Struempfel #define NVM_LDO5_SHR 0xA5 176*c1222e7bSBoerge Struempfel #define NVM_LDO6_SHR 0xA6 177*c1222e7bSBoerge Struempfel #define NVM_LDO7_SHR 0xA7 178*c1222e7bSBoerge Struempfel #define NVM_LDO8_SHR 0xA8 179*c1222e7bSBoerge Struempfel #define NVM_PD_SHR1 0xA9 180*c1222e7bSBoerge Struempfel #define NVM_PD_SHR2 0xAA 181*c1222e7bSBoerge Struempfel #define NVM_PD_SHR3 0xAB 182*c1222e7bSBoerge Struempfel #define NVM_BUCKS_IOUT_SHR1 0xAC 183*c1222e7bSBoerge Struempfel #define NVM_BUCKS_IOUT_SHR2 0xAD 184*c1222e7bSBoerge Struempfel #define NVM_LDOS_IOUT_SHR 0xAE 185*c1222e7bSBoerge Struempfel #define NVM_FS_OCP_SHR1 0xAF 186*c1222e7bSBoerge Struempfel #define NVM_FS_OCP_SHR2 0xB0 187*c1222e7bSBoerge Struempfel #define NVM_FS_SHR1 0xB1 188*c1222e7bSBoerge Struempfel #define NVM_FS_SHR2 0xB2 189*c1222e7bSBoerge Struempfel #define NVM_FS_SHR3 0xB3 190*c1222e7bSBoerge Struempfel #define NVM_I2C_ADDR_SHR 0xB5 191*c1222e7bSBoerge Struempfel #define NVM_USER_SHR1 0xB6 192*c1222e7bSBoerge Struempfel #define NVM_USER_SHR2 0xB7 193*c1222e7bSBoerge Struempfel 194817f42f0SPascal Paillet /* BUCKS_MRST_CR bits definition */ 195817f42f0SPascal Paillet #define BUCK1_MRST BIT(0) 196817f42f0SPascal Paillet #define BUCK2_MRST BIT(1) 197817f42f0SPascal Paillet #define BUCK3_MRST BIT(2) 198817f42f0SPascal Paillet #define BUCK4_MRST BIT(3) 199817f42f0SPascal Paillet #define BUCK5_MRST BIT(4) 200817f42f0SPascal Paillet #define BUCK6_MRST BIT(5) 201817f42f0SPascal Paillet #define BUCK7_MRST BIT(6) 202817f42f0SPascal Paillet #define REFDDR_MRST BIT(7) 203817f42f0SPascal Paillet 204817f42f0SPascal Paillet /* LDOS_MRST_CR bits definition */ 205817f42f0SPascal Paillet #define LDO1_MRST BIT(0) 206817f42f0SPascal Paillet #define LDO2_MRST BIT(1) 207817f42f0SPascal Paillet #define LDO3_MRST BIT(2) 208817f42f0SPascal Paillet #define LDO4_MRST BIT(3) 209817f42f0SPascal Paillet #define LDO5_MRST BIT(4) 210817f42f0SPascal Paillet #define LDO6_MRST BIT(5) 211817f42f0SPascal Paillet #define LDO7_MRST BIT(6) 212817f42f0SPascal Paillet #define LDO8_MRST BIT(7) 213817f42f0SPascal Paillet 214817f42f0SPascal Paillet /* LDOx_MAIN_CR */ 215817f42f0SPascal Paillet #define LDO_VOLT_SHIFT 1 216817f42f0SPascal Paillet #define LDO_BYPASS BIT(6) 217817f42f0SPascal Paillet #define LDO1_INPUT_SRC BIT(7) 218817f42f0SPascal Paillet #define LDO3_SNK_SRC BIT(7) 219817f42f0SPascal Paillet #define LDO4_INPUT_SRC_SHIFT 6 220817f42f0SPascal Paillet #define LDO4_INPUT_SRC_MASK GENMASK_32(7, 6) 221817f42f0SPascal Paillet 222817f42f0SPascal Paillet /* PWRCTRL register bit definition */ 223817f42f0SPascal Paillet #define PWRCTRL_EN BIT(0) 224817f42f0SPascal Paillet #define PWRCTRL_RS BIT(1) 225817f42f0SPascal Paillet #define PWRCTRL_SEL_SHIFT 2 226817f42f0SPascal Paillet #define PWRCTRL_SEL_MASK GENMASK_32(3, 2) 227817f42f0SPascal Paillet 228817f42f0SPascal Paillet /* BUCKx_MAIN_CR2 */ 229817f42f0SPascal Paillet #define PREG_MODE_SHIFT 1 230817f42f0SPascal Paillet #define PREG_MODE_MASK GENMASK_32(2, 1) 231817f42f0SPascal Paillet 232817f42f0SPascal Paillet /* BUCKS_PD_CR1 */ 233817f42f0SPascal Paillet #define BUCK1_PD_MASK GENMASK_32(1, 0) 234817f42f0SPascal Paillet #define BUCK2_PD_MASK GENMASK_32(3, 2) 235817f42f0SPascal Paillet #define BUCK3_PD_MASK GENMASK_32(5, 4) 236817f42f0SPascal Paillet #define BUCK4_PD_MASK GENMASK_32(7, 6) 237817f42f0SPascal Paillet 238817f42f0SPascal Paillet #define BUCK1_PD_FAST BIT(1) 239817f42f0SPascal Paillet #define BUCK2_PD_FAST BIT(3) 240817f42f0SPascal Paillet #define BUCK3_PD_FAST BIT(5) 241817f42f0SPascal Paillet #define BUCK4_PD_FAST BIT(7) 242817f42f0SPascal Paillet 243817f42f0SPascal Paillet /* BUCKS_PD_CR2 */ 244817f42f0SPascal Paillet #define BUCK5_PD_MASK GENMASK_32(1, 0) 245817f42f0SPascal Paillet #define BUCK6_PD_MASK GENMASK_32(3, 2) 246817f42f0SPascal Paillet #define BUCK7_PD_MASK GENMASK_32(5, 4) 247817f42f0SPascal Paillet 248817f42f0SPascal Paillet #define BUCK5_PD_FAST BIT(1) 249817f42f0SPascal Paillet #define BUCK6_PD_FAST BIT(3) 250817f42f0SPascal Paillet #define BUCK7_PD_FAST BIT(5) 251817f42f0SPascal Paillet 252817f42f0SPascal Paillet /* LDOS_PD_CR1 */ 253817f42f0SPascal Paillet #define LDO1_PD BIT(0) 254817f42f0SPascal Paillet #define LDO2_PD BIT(1) 255817f42f0SPascal Paillet #define LDO3_PD BIT(2) 256817f42f0SPascal Paillet #define LDO4_PD BIT(3) 257817f42f0SPascal Paillet #define LDO5_PD BIT(4) 258817f42f0SPascal Paillet #define LDO6_PD BIT(5) 259817f42f0SPascal Paillet #define LDO7_PD BIT(6) 260817f42f0SPascal Paillet #define LDO8_PD BIT(7) 261817f42f0SPascal Paillet 262817f42f0SPascal Paillet /* LDOS_PD_CR2 */ 263817f42f0SPascal Paillet #define REFDDR_PD BIT(0) 264817f42f0SPascal Paillet 265817f42f0SPascal Paillet /* FS_OCP_CR1 */ 266817f42f0SPascal Paillet #define FS_OCP_BUCK1 BIT(0) 267817f42f0SPascal Paillet #define FS_OCP_BUCK2 BIT(1) 268817f42f0SPascal Paillet #define FS_OCP_BUCK3 BIT(2) 269817f42f0SPascal Paillet #define FS_OCP_BUCK4 BIT(3) 270817f42f0SPascal Paillet #define FS_OCP_BUCK5 BIT(4) 271817f42f0SPascal Paillet #define FS_OCP_BUCK6 BIT(5) 272817f42f0SPascal Paillet #define FS_OCP_BUCK7 BIT(6) 273817f42f0SPascal Paillet #define FS_OCP_REFDDR BIT(7) 274817f42f0SPascal Paillet 275817f42f0SPascal Paillet /* FS_OCP_CR2 */ 276817f42f0SPascal Paillet #define FS_OCP_LDO1 BIT(0) 277817f42f0SPascal Paillet #define FS_OCP_LDO2 BIT(1) 278817f42f0SPascal Paillet #define FS_OCP_LDO3 BIT(2) 279817f42f0SPascal Paillet #define FS_OCP_LDO4 BIT(3) 280817f42f0SPascal Paillet #define FS_OCP_LDO5 BIT(4) 281817f42f0SPascal Paillet #define FS_OCP_LDO6 BIT(5) 282817f42f0SPascal Paillet #define FS_OCP_LDO7 BIT(6) 283817f42f0SPascal Paillet #define FS_OCP_LDO8 BIT(7) 284817f42f0SPascal Paillet 285*c1222e7bSBoerge Struempfel /* NVM_CR */ 286*c1222e7bSBoerge Struempfel #define NVM_CMD_MASK GENMASK_32(1, 0) 287*c1222e7bSBoerge Struempfel 288*c1222e7bSBoerge Struempfel #define NVM_CMD_PROGRAM 1 289*c1222e7bSBoerge Struempfel #define NVM_CMD_READ 2 290*c1222e7bSBoerge Struempfel 291*c1222e7bSBoerge Struempfel /* NVM_SR */ 292*c1222e7bSBoerge Struempfel #define NVM_BUSY BIT(0) 293*c1222e7bSBoerge Struempfel #define NVM_WRITE_FAIL BIT(1) 294*c1222e7bSBoerge Struempfel 295817f42f0SPascal Paillet /* IRQ definitions */ 296817f42f0SPascal Paillet #define IT_PONKEY_F 0 297817f42f0SPascal Paillet #define IT_PONKEY_R 1 298817f42f0SPascal Paillet #define IT_BUCK1_OCP 16 299817f42f0SPascal Paillet #define IT_BUCK2_OCP 17 300817f42f0SPascal Paillet #define IT_BUCK3_OCP 18 301817f42f0SPascal Paillet #define IT_BUCK4_OCP 19 302817f42f0SPascal Paillet #define IT_BUCK5_OCP 20 303817f42f0SPascal Paillet #define IT_BUCK6_OCP 21 304817f42f0SPascal Paillet #define IT_BUCK7_OCP 22 305817f42f0SPascal Paillet #define IT_REFDDR_OCP 23 306817f42f0SPascal Paillet #define IT_LDO1_OCP 24 307817f42f0SPascal Paillet #define IT_LDO2_OCP 25 308817f42f0SPascal Paillet #define IT_LDO3_OCP 26 309817f42f0SPascal Paillet #define IT_LDO4_OCP 27 310817f42f0SPascal Paillet #define IT_LDO5_OCP 28 311817f42f0SPascal Paillet #define IT_LDO6_OCP 29 312817f42f0SPascal Paillet #define IT_LDO7_OCP 30 313817f42f0SPascal Paillet #define IT_LDO8_OCP 31 314817f42f0SPascal Paillet 315817f42f0SPascal Paillet enum stpmic2_prop_id { 316817f42f0SPascal Paillet STPMIC2_MASK_RESET = 0, 317817f42f0SPascal Paillet STPMIC2_PULL_DOWN, 318817f42f0SPascal Paillet STPMIC2_BYPASS, /* arg: 1=set 0=reset */ 319817f42f0SPascal Paillet STPMIC2_SINK_SOURCE, 320817f42f0SPascal Paillet STPMIC2_OCP, 321817f42f0SPascal Paillet }; 322817f42f0SPascal Paillet 323817f42f0SPascal Paillet struct pmic_handle_s { 324817f42f0SPascal Paillet struct i2c_handle_s *i2c_handle; 325817f42f0SPascal Paillet uint32_t i2c_addr; 326817f42f0SPascal Paillet unsigned int pmic_status; 327817f42f0SPascal Paillet }; 328817f42f0SPascal Paillet 329817f42f0SPascal Paillet int stpmic2_register_read(struct pmic_handle_s *pmic, 330817f42f0SPascal Paillet uint8_t register_id, uint8_t *value); 331817f42f0SPascal Paillet int stpmic2_register_write(struct pmic_handle_s *pmic, 332817f42f0SPascal Paillet uint8_t register_id, uint8_t value); 333817f42f0SPascal Paillet int stpmic2_register_update(struct pmic_handle_s *pmic, 334817f42f0SPascal Paillet uint8_t register_id, uint8_t value, uint8_t mask); 335817f42f0SPascal Paillet 336817f42f0SPascal Paillet int stpmic2_regulator_set_state(struct pmic_handle_s *pmic, 337817f42f0SPascal Paillet uint8_t id, bool enable); 338817f42f0SPascal Paillet int stpmic2_regulator_get_state(struct pmic_handle_s *pmic, 339817f42f0SPascal Paillet uint8_t id, bool *enabled); 340817f42f0SPascal Paillet 341817f42f0SPascal Paillet int stpmic2_regulator_levels_mv(struct pmic_handle_s *pmic, 342817f42f0SPascal Paillet uint8_t id, const uint16_t **levels, 343817f42f0SPascal Paillet size_t *levels_count); 344817f42f0SPascal Paillet int stpmic2_regulator_get_voltage(struct pmic_handle_s *pmic, 345817f42f0SPascal Paillet uint8_t id, uint16_t *val); 346817f42f0SPascal Paillet int stpmic2_regulator_set_voltage(struct pmic_handle_s *pmic, 347817f42f0SPascal Paillet uint8_t id, uint16_t millivolts); 348817f42f0SPascal Paillet 349817f42f0SPascal Paillet void stpmic2_dump_regulators(struct pmic_handle_s *pmic); 350817f42f0SPascal Paillet 351817f42f0SPascal Paillet int stpmic2_get_version(struct pmic_handle_s *pmic, uint8_t *val); 352817f42f0SPascal Paillet int stpmic2_get_product_id(struct pmic_handle_s *pmic, uint8_t *val); 353817f42f0SPascal Paillet 354817f42f0SPascal Paillet int stpmic2_regulator_get_prop(struct pmic_handle_s *pmic, uint8_t id, 355817f42f0SPascal Paillet enum stpmic2_prop_id prop); 356817f42f0SPascal Paillet 357817f42f0SPascal Paillet int stpmic2_regulator_set_prop(struct pmic_handle_s *pmic, uint8_t id, 358817f42f0SPascal Paillet enum stpmic2_prop_id prop, uint32_t arg); 359817f42f0SPascal Paillet 360817f42f0SPascal Paillet #endif /*STPMIC2_H*/ 361