1*74c17a0aSJerome Neanne /* SPDX-License-Identifier: GPL-2.0 */ 2*74c17a0aSJerome Neanne /* 3*74c17a0aSJerome Neanne * Functions to access TPS65219 Power Management IC. 4*74c17a0aSJerome Neanne * 5*74c17a0aSJerome Neanne * Copyright (C) 2022 BayLibre Incorporated - https://www.baylibre.com/ 6*74c17a0aSJerome Neanne */ 7*74c17a0aSJerome Neanne 8*74c17a0aSJerome Neanne #ifndef MFD_TPS65219_H 9*74c17a0aSJerome Neanne #define MFD_TPS65219_H 10*74c17a0aSJerome Neanne 11*74c17a0aSJerome Neanne #include <linux/bitops.h> 12*74c17a0aSJerome Neanne #include <linux/notifier.h> 13*74c17a0aSJerome Neanne #include <linux/regulator/driver.h> 14*74c17a0aSJerome Neanne 15*74c17a0aSJerome Neanne struct regmap; 16*74c17a0aSJerome Neanne struct regmap_irq_chip_data; 17*74c17a0aSJerome Neanne 18*74c17a0aSJerome Neanne #define TPS65219_1V35 1350000 19*74c17a0aSJerome Neanne #define TPS65219_1V8 1800000 20*74c17a0aSJerome Neanne 21*74c17a0aSJerome Neanne /* TPS chip id list */ 22*74c17a0aSJerome Neanne #define TPS65219 0xF0 23*74c17a0aSJerome Neanne 24*74c17a0aSJerome Neanne /* I2C ID for TPS65219 part */ 25*74c17a0aSJerome Neanne #define TPS65219_I2C_ID 0x24 26*74c17a0aSJerome Neanne 27*74c17a0aSJerome Neanne /* All register addresses */ 28*74c17a0aSJerome Neanne #define TPS65219_REG_TI_DEV_ID 0x00 29*74c17a0aSJerome Neanne #define TPS65219_REG_NVM_ID 0x01 30*74c17a0aSJerome Neanne #define TPS65219_REG_ENABLE_CTRL 0x02 31*74c17a0aSJerome Neanne #define TPS65219_REG_BUCKS_CONFIG 0x03 32*74c17a0aSJerome Neanne #define TPS65219_REG_LDO4_VOUT 0x04 33*74c17a0aSJerome Neanne #define TPS65219_REG_LDO3_VOUT 0x05 34*74c17a0aSJerome Neanne #define TPS65219_REG_LDO2_VOUT 0x06 35*74c17a0aSJerome Neanne #define TPS65219_REG_LDO1_VOUT 0x07 36*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK3_VOUT 0x8 37*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK2_VOUT 0x9 38*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK1_VOUT 0xA 39*74c17a0aSJerome Neanne #define TPS65219_REG_LDO4_SEQUENCE_SLOT 0xB 40*74c17a0aSJerome Neanne #define TPS65219_REG_LDO3_SEQUENCE_SLOT 0xC 41*74c17a0aSJerome Neanne #define TPS65219_REG_LDO2_SEQUENCE_SLOT 0xD 42*74c17a0aSJerome Neanne #define TPS65219_REG_LDO1_SEQUENCE_SLOT 0xE 43*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK3_SEQUENCE_SLOT 0xF 44*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK2_SEQUENCE_SLOT 0x10 45*74c17a0aSJerome Neanne #define TPS65219_REG_BUCK1_SEQUENCE_SLOT 0x11 46*74c17a0aSJerome Neanne #define TPS65219_REG_nRST_SEQUENCE_SLOT 0x12 47*74c17a0aSJerome Neanne #define TPS65219_REG_GPIO_SEQUENCE_SLOT 0x13 48*74c17a0aSJerome Neanne #define TPS65219_REG_GPO2_SEQUENCE_SLOT 0x14 49*74c17a0aSJerome Neanne #define TPS65219_REG_GPO1_SEQUENCE_SLOT 0x15 50*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_1 0x16 51*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_2 0x17 52*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_3 0x18 53*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_4 0x19 54*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_1 0x1A 55*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_2 0x1B 56*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_3 0x1C 57*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_4 0x1D 58*74c17a0aSJerome Neanne #define TPS65219_REG_GENERAL_CONFIG 0x1E 59*74c17a0aSJerome Neanne #define TPS65219_REG_MFP_1_CONFIG 0x1F 60*74c17a0aSJerome Neanne #define TPS65219_REG_MFP_2_CONFIG 0x20 61*74c17a0aSJerome Neanne #define TPS65219_REG_STBY_1_CONFIG 0x21 62*74c17a0aSJerome Neanne #define TPS65219_REG_STBY_2_CONFIG 0x22 63*74c17a0aSJerome Neanne #define TPS65219_REG_OC_DEGL_CONFIG 0x23 64*74c17a0aSJerome Neanne /* 'sub irq' MASK registers */ 65*74c17a0aSJerome Neanne #define TPS65219_REG_INT_MASK_UV 0x24 66*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_CONFIG 0x25 67*74c17a0aSJerome Neanne 68*74c17a0aSJerome Neanne #define TPS65219_REG_I2C_ADDRESS_REG 0x26 69*74c17a0aSJerome Neanne #define TPS65219_REG_USER_GENERAL_NVM_STORAGE 0x27 70*74c17a0aSJerome Neanne #define TPS65219_REG_MANUFACTURING_VER 0x28 71*74c17a0aSJerome Neanne #define TPS65219_REG_MFP_CTRL 0x29 72*74c17a0aSJerome Neanne #define TPS65219_REG_DISCHARGE_CONFIG 0x2A 73*74c17a0aSJerome Neanne /* main irq registers */ 74*74c17a0aSJerome Neanne #define TPS65219_REG_INT_SOURCE 0x2B 75*74c17a0aSJerome Neanne /* 'sub irq' registers */ 76*74c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_3_4 0x2C 77*74c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_1_2 0x2D 78*74c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_3 0x2E 79*74c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_1_2 0x2F 80*74c17a0aSJerome Neanne #define TPS65219_REG_INT_SYSTEM 0x30 81*74c17a0aSJerome Neanne #define TPS65219_REG_INT_RV 0x31 82*74c17a0aSJerome Neanne #define TPS65219_REG_INT_TIMEOUT_RV_SD 0x32 83*74c17a0aSJerome Neanne #define TPS65219_REG_INT_PB 0x33 84*74c17a0aSJerome Neanne 85*74c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_3_4_POS 0 86*74c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_1_2_POS 1 87*74c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_3_POS 2 88*74c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_1_2_POS 3 89*74c17a0aSJerome Neanne #define TPS65219_REG_INT_SYS_POS 4 90*74c17a0aSJerome Neanne #define TPS65219_REG_INT_RV_POS 5 91*74c17a0aSJerome Neanne #define TPS65219_REG_INT_TO_RV_POS 6 92*74c17a0aSJerome Neanne #define TPS65219_REG_INT_PB_POS 7 93*74c17a0aSJerome Neanne 94*74c17a0aSJerome Neanne #define TPS65219_REG_USER_NVM_CMD 0x34 95*74c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_STATUS 0x35 96*74c17a0aSJerome Neanne #define TPS65219_REG_SPARE_2 0x36 97*74c17a0aSJerome Neanne #define TPS65219_REG_SPARE_3 0x37 98*74c17a0aSJerome Neanne #define TPS65219_REG_FACTORY_CONFIG_2 0x41 99*74c17a0aSJerome Neanne 100*74c17a0aSJerome Neanne /* Register field definitions */ 101*74c17a0aSJerome Neanne #define TPS65219_DEVID_REV_MASK GENMASK(7, 0) 102*74c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_VOUT_VSET_MASK GENMASK(5, 0) 103*74c17a0aSJerome Neanne #define TPS65219_BUCKS_UV_THR_SEL_MASK BIT(6) 104*74c17a0aSJerome Neanne #define TPS65219_BUCKS_BW_SEL_MASK BIT(7) 105*74c17a0aSJerome Neanne #define LDO_BYP_SHIFT 6 106*74c17a0aSJerome Neanne #define TPS65219_LDOS_BYP_CONFIG_MASK BIT(LDO_BYP_SHIFT) 107*74c17a0aSJerome Neanne #define TPS65219_LDOS_LSW_CONFIG_MASK BIT(7) 108*74c17a0aSJerome Neanne /* Regulators enable control */ 109*74c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK1_EN_MASK BIT(0) 110*74c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK2_EN_MASK BIT(1) 111*74c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK3_EN_MASK BIT(2) 112*74c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO1_EN_MASK BIT(3) 113*74c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO2_EN_MASK BIT(4) 114*74c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO3_EN_MASK BIT(5) 115*74c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO4_EN_MASK BIT(6) 116*74c17a0aSJerome Neanne /* power ON-OFF sequence slot */ 117*74c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_SEQUENCE_OFF_SLOT_MASK GENMASK(3, 0) 118*74c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_SEQUENCE_ON_SLOT_MASK GENMASK(7, 4) 119*74c17a0aSJerome Neanne /* TODO: Not needed, same mapping as TPS65219_ENABLE_REGNAME_EN, factorize */ 120*74c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK1_STBY_EN_MASK BIT(0) 121*74c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK2_STBY_EN_MASK BIT(1) 122*74c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK3_STBY_EN_MASK BIT(2) 123*74c17a0aSJerome Neanne #define TPS65219_STBY1_LDO1_STBY_EN_MASK BIT(3) 124*74c17a0aSJerome Neanne #define TPS65219_STBY1_LDO2_STBY_EN_MASK BIT(4) 125*74c17a0aSJerome Neanne #define TPS65219_STBY1_LDO3_STBY_EN_MASK BIT(5) 126*74c17a0aSJerome Neanne #define TPS65219_STBY1_LDO4_STBY_EN_MASK BIT(6) 127*74c17a0aSJerome Neanne /* STBY_2 config */ 128*74c17a0aSJerome Neanne #define TPS65219_STBY2_GPO1_STBY_EN_MASK BIT(0) 129*74c17a0aSJerome Neanne #define TPS65219_STBY2_GPO2_STBY_EN_MASK BIT(1) 130*74c17a0aSJerome Neanne #define TPS65219_STBY2_GPIO_STBY_EN_MASK BIT(2) 131*74c17a0aSJerome Neanne /* MFP Control */ 132*74c17a0aSJerome Neanne #define TPS65219_MFP_I2C_OFF_REQ_MASK BIT(0) 133*74c17a0aSJerome Neanne #define TPS65219_MFP_STBY_I2C_CTRL_MASK BIT(1) 134*74c17a0aSJerome Neanne #define TPS65219_MFP_COLD_RESET_I2C_CTRL_MASK BIT(2) 135*74c17a0aSJerome Neanne #define TPS65219_MFP_WARM_RESET_I2C_CTRL_MASK BIT(3) 136*74c17a0aSJerome Neanne #define TPS65219_MFP_GPIO_STATUS_MASK BIT(4) 137*74c17a0aSJerome Neanne /* MFP_1 Config */ 138*74c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_DDR_SEL_MASK BIT(0) 139*74c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_SD_POL_MASK BIT(1) 140*74c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_RAIL_MASK BIT(2) 141*74c17a0aSJerome Neanne /* MFP_2 Config */ 142*74c17a0aSJerome Neanne #define TPS65219_MFP_2_MODE_STBY_MASK GENMASK(1, 0) 143*74c17a0aSJerome Neanne #define TPS65219_MFP_2_MODE_RESET_MASK BIT(2) 144*74c17a0aSJerome Neanne #define TPS65219_MFP_2_EN_PB_VSENSE_DEGL_MASK BIT(3) 145*74c17a0aSJerome Neanne #define TPS65219_MFP_2_EN_PB_VSENSE_MASK GENMASK(5, 4) 146*74c17a0aSJerome Neanne #define TPS65219_MFP_2_WARM_COLD_RESET_MASK BIT(6) 147*74c17a0aSJerome Neanne #define TPS65219_MFP_2_PU_ON_FSD_MASK BIT(7) 148*74c17a0aSJerome Neanne #define TPS65219_MFP_2_EN 0 149*74c17a0aSJerome Neanne #define TPS65219_MFP_2_PB BIT(4) 150*74c17a0aSJerome Neanne #define TPS65219_MFP_2_VSENSE BIT(5) 151*74c17a0aSJerome Neanne /* MASK_UV Config */ 152*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO1_UV_MASK BIT(0) 153*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO2_UV_MASK BIT(1) 154*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO3_UV_MASK BIT(2) 155*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO4_UV_MASK BIT(3) 156*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK1_UV_MASK BIT(4) 157*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK2_UV_MASK BIT(5) 158*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK3_UV_MASK BIT(6) 159*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_RETRY_MASK BIT(7) 160*74c17a0aSJerome Neanne /* MASK Config */ 161*74c17a0aSJerome Neanne // SENSOR_N_WARM_MASK already defined in Thermal 162*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_INT_FOR_RV_MASK BIT(4) 163*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_EFFECT_MASK GENMASK(2, 1) 164*74c17a0aSJerome Neanne #define TPS65219_REG_MASK_INT_FOR_PB_MASK BIT(7) 165*74c17a0aSJerome Neanne /* UnderVoltage - Short to GND - OverCurrent*/ 166*74c17a0aSJerome Neanne /* LDO3-4 */ 167*74c17a0aSJerome Neanne #define TPS65219_INT_LDO3_SCG_MASK BIT(0) 168*74c17a0aSJerome Neanne #define TPS65219_INT_LDO3_OC_MASK BIT(1) 169*74c17a0aSJerome Neanne #define TPS65219_INT_LDO3_UV_MASK BIT(2) 170*74c17a0aSJerome Neanne #define TPS65219_INT_LDO4_SCG_MASK BIT(3) 171*74c17a0aSJerome Neanne #define TPS65219_INT_LDO4_OC_MASK BIT(4) 172*74c17a0aSJerome Neanne #define TPS65219_INT_LDO4_UV_MASK BIT(5) 173*74c17a0aSJerome Neanne /* LDO1-2 */ 174*74c17a0aSJerome Neanne #define TPS65219_INT_LDO1_SCG_MASK BIT(0) 175*74c17a0aSJerome Neanne #define TPS65219_INT_LDO1_OC_MASK BIT(1) 176*74c17a0aSJerome Neanne #define TPS65219_INT_LDO1_UV_MASK BIT(2) 177*74c17a0aSJerome Neanne #define TPS65219_INT_LDO2_SCG_MASK BIT(3) 178*74c17a0aSJerome Neanne #define TPS65219_INT_LDO2_OC_MASK BIT(4) 179*74c17a0aSJerome Neanne #define TPS65219_INT_LDO2_UV_MASK BIT(5) 180*74c17a0aSJerome Neanne /* BUCK3 */ 181*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_SCG_MASK BIT(0) 182*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_OC_MASK BIT(1) 183*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_NEG_OC_MASK BIT(2) 184*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_UV_MASK BIT(3) 185*74c17a0aSJerome Neanne /* BUCK1-2 */ 186*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_SCG_MASK BIT(0) 187*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_OC_MASK BIT(1) 188*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_NEG_OC_MASK BIT(2) 189*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_UV_MASK BIT(3) 190*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_SCG_MASK BIT(4) 191*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_OC_MASK BIT(5) 192*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_NEG_OC_MASK BIT(6) 193*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_UV_MASK BIT(7) 194*74c17a0aSJerome Neanne /* Thermal Sensor */ 195*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_3_WARM_MASK BIT(0) 196*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_2_WARM_MASK BIT(1) 197*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_1_WARM_MASK BIT(2) 198*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_0_WARM_MASK BIT(3) 199*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_3_HOT_MASK BIT(4) 200*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_2_HOT_MASK BIT(5) 201*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_1_HOT_MASK BIT(6) 202*74c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_0_HOT_MASK BIT(7) 203*74c17a0aSJerome Neanne /* Residual Voltage */ 204*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_RV_MASK BIT(0) 205*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_RV_MASK BIT(1) 206*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_RV_MASK BIT(2) 207*74c17a0aSJerome Neanne #define TPS65219_INT_LDO1_RV_MASK BIT(3) 208*74c17a0aSJerome Neanne #define TPS65219_INT_LDO2_RV_MASK BIT(4) 209*74c17a0aSJerome Neanne #define TPS65219_INT_LDO3_RV_MASK BIT(5) 210*74c17a0aSJerome Neanne #define TPS65219_INT_LDO4_RV_MASK BIT(6) 211*74c17a0aSJerome Neanne /* Residual Voltage ShutDown */ 212*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_RV_SD_MASK BIT(0) 213*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_RV_SD_MASK BIT(1) 214*74c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_RV_SD_MASK BIT(2) 215*74c17a0aSJerome Neanne #define TPS65219_INT_LDO1_RV_SD_MASK BIT(3) 216*74c17a0aSJerome Neanne #define TPS65219_INT_LDO2_RV_SD_MASK BIT(4) 217*74c17a0aSJerome Neanne #define TPS65219_INT_LDO3_RV_SD_MASK BIT(5) 218*74c17a0aSJerome Neanne #define TPS65219_INT_LDO4_RV_SD_MASK BIT(6) 219*74c17a0aSJerome Neanne #define TPS65219_INT_TIMEOUT_MASK BIT(7) 220*74c17a0aSJerome Neanne /* Power Button */ 221*74c17a0aSJerome Neanne #define TPS65219_INT_PB_FALLING_EDGE_DETECT_MASK BIT(0) 222*74c17a0aSJerome Neanne #define TPS65219_INT_PB_RISING_EDGE_DETECT_MASK BIT(1) 223*74c17a0aSJerome Neanne #define TPS65219_INT_PB_REAL_TIME_STATUS_MASK BIT(2) 224*74c17a0aSJerome Neanne 225*74c17a0aSJerome Neanne #define TPS65219_PB_POS 7 226*74c17a0aSJerome Neanne #define TPS65219_TO_RV_POS 6 227*74c17a0aSJerome Neanne #define TPS65219_RV_POS 5 228*74c17a0aSJerome Neanne #define TPS65219_SYS_POS 4 229*74c17a0aSJerome Neanne #define TPS65219_BUCK_1_2_POS 3 230*74c17a0aSJerome Neanne #define TPS65219_BUCK_3_POS 2 231*74c17a0aSJerome Neanne #define TPS65219_LDO_1_2_POS 1 232*74c17a0aSJerome Neanne #define TPS65219_LDO_3_4_POS 0 233*74c17a0aSJerome Neanne 234*74c17a0aSJerome Neanne /* IRQs */ 235*74c17a0aSJerome Neanne enum { 236*74c17a0aSJerome Neanne /* LDO3-4 register IRQs */ 237*74c17a0aSJerome Neanne TPS65219_INT_LDO3_SCG, 238*74c17a0aSJerome Neanne TPS65219_INT_LDO3_OC, 239*74c17a0aSJerome Neanne TPS65219_INT_LDO3_UV, 240*74c17a0aSJerome Neanne TPS65219_INT_LDO4_SCG, 241*74c17a0aSJerome Neanne TPS65219_INT_LDO4_OC, 242*74c17a0aSJerome Neanne TPS65219_INT_LDO4_UV, 243*74c17a0aSJerome Neanne /* LDO1-2 */ 244*74c17a0aSJerome Neanne TPS65219_INT_LDO1_SCG, 245*74c17a0aSJerome Neanne TPS65219_INT_LDO1_OC, 246*74c17a0aSJerome Neanne TPS65219_INT_LDO1_UV, 247*74c17a0aSJerome Neanne TPS65219_INT_LDO2_SCG, 248*74c17a0aSJerome Neanne TPS65219_INT_LDO2_OC, 249*74c17a0aSJerome Neanne TPS65219_INT_LDO2_UV, 250*74c17a0aSJerome Neanne /* BUCK3 */ 251*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_SCG, 252*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_OC, 253*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_NEG_OC, 254*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_UV, 255*74c17a0aSJerome Neanne /* BUCK1-2 */ 256*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_SCG, 257*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_OC, 258*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_NEG_OC, 259*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_UV, 260*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_SCG, 261*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_OC, 262*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_NEG_OC, 263*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_UV, 264*74c17a0aSJerome Neanne /* Thermal Sensor */ 265*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_3_WARM, 266*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_2_WARM, 267*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_1_WARM, 268*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_0_WARM, 269*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_3_HOT, 270*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_2_HOT, 271*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_1_HOT, 272*74c17a0aSJerome Neanne TPS65219_INT_SENSOR_0_HOT, 273*74c17a0aSJerome Neanne /* Residual Voltage */ 274*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_RV, 275*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_RV, 276*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_RV, 277*74c17a0aSJerome Neanne TPS65219_INT_LDO1_RV, 278*74c17a0aSJerome Neanne TPS65219_INT_LDO2_RV, 279*74c17a0aSJerome Neanne TPS65219_INT_LDO3_RV, 280*74c17a0aSJerome Neanne TPS65219_INT_LDO4_RV, 281*74c17a0aSJerome Neanne /* Residual Voltage ShutDown */ 282*74c17a0aSJerome Neanne TPS65219_INT_BUCK1_RV_SD, 283*74c17a0aSJerome Neanne TPS65219_INT_BUCK2_RV_SD, 284*74c17a0aSJerome Neanne TPS65219_INT_BUCK3_RV_SD, 285*74c17a0aSJerome Neanne TPS65219_INT_LDO1_RV_SD, 286*74c17a0aSJerome Neanne TPS65219_INT_LDO2_RV_SD, 287*74c17a0aSJerome Neanne TPS65219_INT_LDO3_RV_SD, 288*74c17a0aSJerome Neanne TPS65219_INT_LDO4_RV_SD, 289*74c17a0aSJerome Neanne TPS65219_INT_TIMEOUT, 290*74c17a0aSJerome Neanne /* Power Button */ 291*74c17a0aSJerome Neanne TPS65219_INT_PB_FALLING_EDGE_DETECT, 292*74c17a0aSJerome Neanne TPS65219_INT_PB_RISING_EDGE_DETECT, 293*74c17a0aSJerome Neanne }; 294*74c17a0aSJerome Neanne 295*74c17a0aSJerome Neanne enum tps65219_regulator_id { 296*74c17a0aSJerome Neanne /* DCDC's */ 297*74c17a0aSJerome Neanne TPS65219_BUCK_1, 298*74c17a0aSJerome Neanne TPS65219_BUCK_2, 299*74c17a0aSJerome Neanne TPS65219_BUCK_3, 300*74c17a0aSJerome Neanne /* LDOs */ 301*74c17a0aSJerome Neanne TPS65219_LDO_1, 302*74c17a0aSJerome Neanne TPS65219_LDO_2, 303*74c17a0aSJerome Neanne TPS65219_LDO_3, 304*74c17a0aSJerome Neanne TPS65219_LDO_4, 305*74c17a0aSJerome Neanne }; 306*74c17a0aSJerome Neanne 307*74c17a0aSJerome Neanne /* Number of step-down converters available */ 308*74c17a0aSJerome Neanne #define TPS65219_NUM_DCDC 3 309*74c17a0aSJerome Neanne /* Number of LDO voltage regulators available */ 310*74c17a0aSJerome Neanne #define TPS65219_NUM_LDO 4 311*74c17a0aSJerome Neanne /* Number of total regulators available */ 312*74c17a0aSJerome Neanne #define TPS65219_NUM_REGULATOR (TPS65219_NUM_DCDC + TPS65219_NUM_LDO) 313*74c17a0aSJerome Neanne 314*74c17a0aSJerome Neanne /* Define the TPS65219 IRQ numbers */ 315*74c17a0aSJerome Neanne enum tps65219_irqs { 316*74c17a0aSJerome Neanne /* INT source registers */ 317*74c17a0aSJerome Neanne TPS65219_TO_RV_SD_SET_IRQ, 318*74c17a0aSJerome Neanne TPS65219_RV_SET_IRQ, 319*74c17a0aSJerome Neanne TPS65219_SYS_SET_IRQ, 320*74c17a0aSJerome Neanne TPS65219_BUCK_1_2_SET_IRQ, 321*74c17a0aSJerome Neanne TPS65219_BUCK_3_SET_IRQ, 322*74c17a0aSJerome Neanne TPS65219_LDO_1_2_SET_IRQ, 323*74c17a0aSJerome Neanne TPS65219_LDO_3_4_SET_IRQ, 324*74c17a0aSJerome Neanne TPS65219_PB_SET_IRQ, 325*74c17a0aSJerome Neanne }; 326*74c17a0aSJerome Neanne 327*74c17a0aSJerome Neanne /** 328*74c17a0aSJerome Neanne * struct tps65219 - tps65219 sub-driver chip access routines 329*74c17a0aSJerome Neanne * 330*74c17a0aSJerome Neanne * Device data may be used to access the TPS65219 chip 331*74c17a0aSJerome Neanne * 332*74c17a0aSJerome Neanne * @dev: MFD device 333*74c17a0aSJerome Neanne * @regmap: Regmap for accessing the device registers 334*74c17a0aSJerome Neanne * @irq_data: Regmap irq data used for the irq chip 335*74c17a0aSJerome Neanne * @nb: notifier block for the restart handler 336*74c17a0aSJerome Neanne */ 337*74c17a0aSJerome Neanne struct tps65219 { 338*74c17a0aSJerome Neanne struct device *dev; 339*74c17a0aSJerome Neanne struct regmap *regmap; 340*74c17a0aSJerome Neanne 341*74c17a0aSJerome Neanne struct regmap_irq_chip_data *irq_data; 342*74c17a0aSJerome Neanne struct notifier_block nb; 343*74c17a0aSJerome Neanne }; 344*74c17a0aSJerome Neanne 345*74c17a0aSJerome Neanne #endif /* MFD_TPS65219_H */ 346