174c17a0aSJerome Neanne /* SPDX-License-Identifier: GPL-2.0 */ 274c17a0aSJerome Neanne /* 374c17a0aSJerome Neanne * Functions to access TPS65219 Power Management IC. 474c17a0aSJerome Neanne * 574c17a0aSJerome Neanne * Copyright (C) 2022 BayLibre Incorporated - https://www.baylibre.com/ 674c17a0aSJerome Neanne */ 774c17a0aSJerome Neanne 874c17a0aSJerome Neanne #ifndef MFD_TPS65219_H 974c17a0aSJerome Neanne #define MFD_TPS65219_H 1074c17a0aSJerome Neanne 1174c17a0aSJerome Neanne #include <linux/bitops.h> 1274c17a0aSJerome Neanne #include <linux/notifier.h> 13*09a89743SShree Ramamoorthy #include <linux/regmap.h> 1474c17a0aSJerome Neanne #include <linux/regulator/driver.h> 1574c17a0aSJerome Neanne 1674c17a0aSJerome Neanne /* TPS chip id list */ 1774c17a0aSJerome Neanne #define TPS65219 0xF0 1874c17a0aSJerome Neanne 1974c17a0aSJerome Neanne /* I2C ID for TPS65219 part */ 2074c17a0aSJerome Neanne #define TPS65219_I2C_ID 0x24 2174c17a0aSJerome Neanne 2274c17a0aSJerome Neanne /* All register addresses */ 2374c17a0aSJerome Neanne #define TPS65219_REG_TI_DEV_ID 0x00 2474c17a0aSJerome Neanne #define TPS65219_REG_NVM_ID 0x01 2574c17a0aSJerome Neanne #define TPS65219_REG_ENABLE_CTRL 0x02 2674c17a0aSJerome Neanne #define TPS65219_REG_BUCKS_CONFIG 0x03 2774c17a0aSJerome Neanne #define TPS65219_REG_LDO4_VOUT 0x04 2874c17a0aSJerome Neanne #define TPS65219_REG_LDO3_VOUT 0x05 2974c17a0aSJerome Neanne #define TPS65219_REG_LDO2_VOUT 0x06 3074c17a0aSJerome Neanne #define TPS65219_REG_LDO1_VOUT 0x07 3174c17a0aSJerome Neanne #define TPS65219_REG_BUCK3_VOUT 0x8 3274c17a0aSJerome Neanne #define TPS65219_REG_BUCK2_VOUT 0x9 3374c17a0aSJerome Neanne #define TPS65219_REG_BUCK1_VOUT 0xA 3474c17a0aSJerome Neanne #define TPS65219_REG_LDO4_SEQUENCE_SLOT 0xB 3574c17a0aSJerome Neanne #define TPS65219_REG_LDO3_SEQUENCE_SLOT 0xC 3674c17a0aSJerome Neanne #define TPS65219_REG_LDO2_SEQUENCE_SLOT 0xD 3774c17a0aSJerome Neanne #define TPS65219_REG_LDO1_SEQUENCE_SLOT 0xE 3874c17a0aSJerome Neanne #define TPS65219_REG_BUCK3_SEQUENCE_SLOT 0xF 3974c17a0aSJerome Neanne #define TPS65219_REG_BUCK2_SEQUENCE_SLOT 0x10 4074c17a0aSJerome Neanne #define TPS65219_REG_BUCK1_SEQUENCE_SLOT 0x11 4174c17a0aSJerome Neanne #define TPS65219_REG_nRST_SEQUENCE_SLOT 0x12 4274c17a0aSJerome Neanne #define TPS65219_REG_GPIO_SEQUENCE_SLOT 0x13 4374c17a0aSJerome Neanne #define TPS65219_REG_GPO2_SEQUENCE_SLOT 0x14 4474c17a0aSJerome Neanne #define TPS65219_REG_GPO1_SEQUENCE_SLOT 0x15 4574c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_1 0x16 4674c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_2 0x17 4774c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_3 0x18 4874c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_SLOT_DURATION_4 0x19 4974c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_1 0x1A 5074c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_2 0x1B 5174c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_3 0x1C 5274c17a0aSJerome Neanne #define TPS65219_REG_POWER_DOWN_SLOT_DURATION_4 0x1D 5374c17a0aSJerome Neanne #define TPS65219_REG_GENERAL_CONFIG 0x1E 5474c17a0aSJerome Neanne #define TPS65219_REG_MFP_1_CONFIG 0x1F 5574c17a0aSJerome Neanne #define TPS65219_REG_MFP_2_CONFIG 0x20 5674c17a0aSJerome Neanne #define TPS65219_REG_STBY_1_CONFIG 0x21 5774c17a0aSJerome Neanne #define TPS65219_REG_STBY_2_CONFIG 0x22 5874c17a0aSJerome Neanne #define TPS65219_REG_OC_DEGL_CONFIG 0x23 5974c17a0aSJerome Neanne /* 'sub irq' MASK registers */ 6074c17a0aSJerome Neanne #define TPS65219_REG_INT_MASK_UV 0x24 6174c17a0aSJerome Neanne #define TPS65219_REG_MASK_CONFIG 0x25 6274c17a0aSJerome Neanne 6374c17a0aSJerome Neanne #define TPS65219_REG_I2C_ADDRESS_REG 0x26 6474c17a0aSJerome Neanne #define TPS65219_REG_USER_GENERAL_NVM_STORAGE 0x27 6574c17a0aSJerome Neanne #define TPS65219_REG_MANUFACTURING_VER 0x28 6674c17a0aSJerome Neanne #define TPS65219_REG_MFP_CTRL 0x29 6774c17a0aSJerome Neanne #define TPS65219_REG_DISCHARGE_CONFIG 0x2A 6874c17a0aSJerome Neanne /* main irq registers */ 6974c17a0aSJerome Neanne #define TPS65219_REG_INT_SOURCE 0x2B 7074c17a0aSJerome Neanne /* 'sub irq' registers */ 7174c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_3_4 0x2C 7274c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_1_2 0x2D 7374c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_3 0x2E 7474c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_1_2 0x2F 7574c17a0aSJerome Neanne #define TPS65219_REG_INT_SYSTEM 0x30 7674c17a0aSJerome Neanne #define TPS65219_REG_INT_RV 0x31 7774c17a0aSJerome Neanne #define TPS65219_REG_INT_TIMEOUT_RV_SD 0x32 7874c17a0aSJerome Neanne #define TPS65219_REG_INT_PB 0x33 7974c17a0aSJerome Neanne 8074c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_3_4_POS 0 8174c17a0aSJerome Neanne #define TPS65219_REG_INT_LDO_1_2_POS 1 8274c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_3_POS 2 8374c17a0aSJerome Neanne #define TPS65219_REG_INT_BUCK_1_2_POS 3 8474c17a0aSJerome Neanne #define TPS65219_REG_INT_SYS_POS 4 8574c17a0aSJerome Neanne #define TPS65219_REG_INT_RV_POS 5 8674c17a0aSJerome Neanne #define TPS65219_REG_INT_TO_RV_POS 6 8774c17a0aSJerome Neanne #define TPS65219_REG_INT_PB_POS 7 8874c17a0aSJerome Neanne 8974c17a0aSJerome Neanne #define TPS65219_REG_USER_NVM_CMD 0x34 9074c17a0aSJerome Neanne #define TPS65219_REG_POWER_UP_STATUS 0x35 9174c17a0aSJerome Neanne #define TPS65219_REG_SPARE_2 0x36 9274c17a0aSJerome Neanne #define TPS65219_REG_SPARE_3 0x37 9374c17a0aSJerome Neanne #define TPS65219_REG_FACTORY_CONFIG_2 0x41 9474c17a0aSJerome Neanne 9574c17a0aSJerome Neanne /* Register field definitions */ 9674c17a0aSJerome Neanne #define TPS65219_DEVID_REV_MASK GENMASK(7, 0) 9774c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_VOUT_VSET_MASK GENMASK(5, 0) 9874c17a0aSJerome Neanne #define TPS65219_BUCKS_UV_THR_SEL_MASK BIT(6) 9974c17a0aSJerome Neanne #define TPS65219_BUCKS_BW_SEL_MASK BIT(7) 10074c17a0aSJerome Neanne #define LDO_BYP_SHIFT 6 10174c17a0aSJerome Neanne #define TPS65219_LDOS_BYP_CONFIG_MASK BIT(LDO_BYP_SHIFT) 10274c17a0aSJerome Neanne #define TPS65219_LDOS_LSW_CONFIG_MASK BIT(7) 10374c17a0aSJerome Neanne /* Regulators enable control */ 10474c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK1_EN_MASK BIT(0) 10574c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK2_EN_MASK BIT(1) 10674c17a0aSJerome Neanne #define TPS65219_ENABLE_BUCK3_EN_MASK BIT(2) 10774c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO1_EN_MASK BIT(3) 10874c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO2_EN_MASK BIT(4) 10974c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO3_EN_MASK BIT(5) 11074c17a0aSJerome Neanne #define TPS65219_ENABLE_LDO4_EN_MASK BIT(6) 11174c17a0aSJerome Neanne /* power ON-OFF sequence slot */ 11274c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_SEQUENCE_OFF_SLOT_MASK GENMASK(3, 0) 11374c17a0aSJerome Neanne #define TPS65219_BUCKS_LDOS_SEQUENCE_ON_SLOT_MASK GENMASK(7, 4) 11474c17a0aSJerome Neanne /* TODO: Not needed, same mapping as TPS65219_ENABLE_REGNAME_EN, factorize */ 11574c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK1_STBY_EN_MASK BIT(0) 11674c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK2_STBY_EN_MASK BIT(1) 11774c17a0aSJerome Neanne #define TPS65219_STBY1_BUCK3_STBY_EN_MASK BIT(2) 11874c17a0aSJerome Neanne #define TPS65219_STBY1_LDO1_STBY_EN_MASK BIT(3) 11974c17a0aSJerome Neanne #define TPS65219_STBY1_LDO2_STBY_EN_MASK BIT(4) 12074c17a0aSJerome Neanne #define TPS65219_STBY1_LDO3_STBY_EN_MASK BIT(5) 12174c17a0aSJerome Neanne #define TPS65219_STBY1_LDO4_STBY_EN_MASK BIT(6) 12274c17a0aSJerome Neanne /* STBY_2 config */ 12374c17a0aSJerome Neanne #define TPS65219_STBY2_GPO1_STBY_EN_MASK BIT(0) 12474c17a0aSJerome Neanne #define TPS65219_STBY2_GPO2_STBY_EN_MASK BIT(1) 12574c17a0aSJerome Neanne #define TPS65219_STBY2_GPIO_STBY_EN_MASK BIT(2) 12674c17a0aSJerome Neanne /* MFP Control */ 12774c17a0aSJerome Neanne #define TPS65219_MFP_I2C_OFF_REQ_MASK BIT(0) 12874c17a0aSJerome Neanne #define TPS65219_MFP_STBY_I2C_CTRL_MASK BIT(1) 12974c17a0aSJerome Neanne #define TPS65219_MFP_COLD_RESET_I2C_CTRL_MASK BIT(2) 13074c17a0aSJerome Neanne #define TPS65219_MFP_WARM_RESET_I2C_CTRL_MASK BIT(3) 13174c17a0aSJerome Neanne #define TPS65219_MFP_GPIO_STATUS_MASK BIT(4) 13274c17a0aSJerome Neanne /* MFP_1 Config */ 13374c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_DDR_SEL_MASK BIT(0) 13474c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_SD_POL_MASK BIT(1) 13574c17a0aSJerome Neanne #define TPS65219_MFP_1_VSEL_RAIL_MASK BIT(2) 13674c17a0aSJerome Neanne /* MFP_2 Config */ 13774c17a0aSJerome Neanne #define TPS65219_MFP_2_MODE_STBY_MASK GENMASK(1, 0) 13874c17a0aSJerome Neanne #define TPS65219_MFP_2_MODE_RESET_MASK BIT(2) 13974c17a0aSJerome Neanne #define TPS65219_MFP_2_EN_PB_VSENSE_DEGL_MASK BIT(3) 14074c17a0aSJerome Neanne #define TPS65219_MFP_2_EN_PB_VSENSE_MASK GENMASK(5, 4) 14174c17a0aSJerome Neanne #define TPS65219_MFP_2_WARM_COLD_RESET_MASK BIT(6) 14274c17a0aSJerome Neanne #define TPS65219_MFP_2_PU_ON_FSD_MASK BIT(7) 14374c17a0aSJerome Neanne #define TPS65219_MFP_2_EN 0 14474c17a0aSJerome Neanne #define TPS65219_MFP_2_PB BIT(4) 14574c17a0aSJerome Neanne #define TPS65219_MFP_2_VSENSE BIT(5) 14674c17a0aSJerome Neanne /* MASK_UV Config */ 14774c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO1_UV_MASK BIT(0) 14874c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO2_UV_MASK BIT(1) 14974c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO3_UV_MASK BIT(2) 15074c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_LDO4_UV_MASK BIT(3) 15174c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK1_UV_MASK BIT(4) 15274c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK2_UV_MASK BIT(5) 15374c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_BUCK3_UV_MASK BIT(6) 15474c17a0aSJerome Neanne #define TPS65219_REG_MASK_UV_RETRY_MASK BIT(7) 15574c17a0aSJerome Neanne /* MASK Config */ 15674c17a0aSJerome Neanne // SENSOR_N_WARM_MASK already defined in Thermal 15774c17a0aSJerome Neanne #define TPS65219_REG_MASK_INT_FOR_RV_MASK BIT(4) 15874c17a0aSJerome Neanne #define TPS65219_REG_MASK_EFFECT_MASK GENMASK(2, 1) 15974c17a0aSJerome Neanne #define TPS65219_REG_MASK_INT_FOR_PB_MASK BIT(7) 16074c17a0aSJerome Neanne /* UnderVoltage - Short to GND - OverCurrent*/ 16174c17a0aSJerome Neanne /* LDO3-4 */ 16274c17a0aSJerome Neanne #define TPS65219_INT_LDO3_SCG_MASK BIT(0) 16374c17a0aSJerome Neanne #define TPS65219_INT_LDO3_OC_MASK BIT(1) 16474c17a0aSJerome Neanne #define TPS65219_INT_LDO3_UV_MASK BIT(2) 16574c17a0aSJerome Neanne #define TPS65219_INT_LDO4_SCG_MASK BIT(3) 16674c17a0aSJerome Neanne #define TPS65219_INT_LDO4_OC_MASK BIT(4) 16774c17a0aSJerome Neanne #define TPS65219_INT_LDO4_UV_MASK BIT(5) 16874c17a0aSJerome Neanne /* LDO1-2 */ 16974c17a0aSJerome Neanne #define TPS65219_INT_LDO1_SCG_MASK BIT(0) 17074c17a0aSJerome Neanne #define TPS65219_INT_LDO1_OC_MASK BIT(1) 17174c17a0aSJerome Neanne #define TPS65219_INT_LDO1_UV_MASK BIT(2) 17274c17a0aSJerome Neanne #define TPS65219_INT_LDO2_SCG_MASK BIT(3) 17374c17a0aSJerome Neanne #define TPS65219_INT_LDO2_OC_MASK BIT(4) 17474c17a0aSJerome Neanne #define TPS65219_INT_LDO2_UV_MASK BIT(5) 17574c17a0aSJerome Neanne /* BUCK3 */ 17674c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_SCG_MASK BIT(0) 17774c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_OC_MASK BIT(1) 17874c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_NEG_OC_MASK BIT(2) 17974c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_UV_MASK BIT(3) 18074c17a0aSJerome Neanne /* BUCK1-2 */ 18174c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_SCG_MASK BIT(0) 18274c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_OC_MASK BIT(1) 18374c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_NEG_OC_MASK BIT(2) 18474c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_UV_MASK BIT(3) 18574c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_SCG_MASK BIT(4) 18674c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_OC_MASK BIT(5) 18774c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_NEG_OC_MASK BIT(6) 18874c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_UV_MASK BIT(7) 18974c17a0aSJerome Neanne /* Thermal Sensor */ 19074c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_3_WARM_MASK BIT(0) 19174c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_2_WARM_MASK BIT(1) 19274c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_1_WARM_MASK BIT(2) 19374c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_0_WARM_MASK BIT(3) 19474c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_3_HOT_MASK BIT(4) 19574c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_2_HOT_MASK BIT(5) 19674c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_1_HOT_MASK BIT(6) 19774c17a0aSJerome Neanne #define TPS65219_INT_SENSOR_0_HOT_MASK BIT(7) 19874c17a0aSJerome Neanne /* Residual Voltage */ 19974c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_RV_MASK BIT(0) 20074c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_RV_MASK BIT(1) 20174c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_RV_MASK BIT(2) 20274c17a0aSJerome Neanne #define TPS65219_INT_LDO1_RV_MASK BIT(3) 20374c17a0aSJerome Neanne #define TPS65219_INT_LDO2_RV_MASK BIT(4) 20474c17a0aSJerome Neanne #define TPS65219_INT_LDO3_RV_MASK BIT(5) 20574c17a0aSJerome Neanne #define TPS65219_INT_LDO4_RV_MASK BIT(6) 20674c17a0aSJerome Neanne /* Residual Voltage ShutDown */ 20774c17a0aSJerome Neanne #define TPS65219_INT_BUCK1_RV_SD_MASK BIT(0) 20874c17a0aSJerome Neanne #define TPS65219_INT_BUCK2_RV_SD_MASK BIT(1) 20974c17a0aSJerome Neanne #define TPS65219_INT_BUCK3_RV_SD_MASK BIT(2) 21074c17a0aSJerome Neanne #define TPS65219_INT_LDO1_RV_SD_MASK BIT(3) 21174c17a0aSJerome Neanne #define TPS65219_INT_LDO2_RV_SD_MASK BIT(4) 21274c17a0aSJerome Neanne #define TPS65219_INT_LDO3_RV_SD_MASK BIT(5) 21374c17a0aSJerome Neanne #define TPS65219_INT_LDO4_RV_SD_MASK BIT(6) 21474c17a0aSJerome Neanne #define TPS65219_INT_TIMEOUT_MASK BIT(7) 21574c17a0aSJerome Neanne /* Power Button */ 21674c17a0aSJerome Neanne #define TPS65219_INT_PB_FALLING_EDGE_DETECT_MASK BIT(0) 21774c17a0aSJerome Neanne #define TPS65219_INT_PB_RISING_EDGE_DETECT_MASK BIT(1) 21874c17a0aSJerome Neanne #define TPS65219_INT_PB_REAL_TIME_STATUS_MASK BIT(2) 21974c17a0aSJerome Neanne 22074c17a0aSJerome Neanne #define TPS65219_PB_POS 7 22174c17a0aSJerome Neanne #define TPS65219_TO_RV_POS 6 22274c17a0aSJerome Neanne #define TPS65219_RV_POS 5 22374c17a0aSJerome Neanne #define TPS65219_SYS_POS 4 22474c17a0aSJerome Neanne #define TPS65219_BUCK_1_2_POS 3 22574c17a0aSJerome Neanne #define TPS65219_BUCK_3_POS 2 22674c17a0aSJerome Neanne #define TPS65219_LDO_1_2_POS 1 22774c17a0aSJerome Neanne #define TPS65219_LDO_3_4_POS 0 22874c17a0aSJerome Neanne 22974c17a0aSJerome Neanne /* IRQs */ 23074c17a0aSJerome Neanne enum { 23174c17a0aSJerome Neanne /* LDO3-4 register IRQs */ 23274c17a0aSJerome Neanne TPS65219_INT_LDO3_SCG, 23374c17a0aSJerome Neanne TPS65219_INT_LDO3_OC, 23474c17a0aSJerome Neanne TPS65219_INT_LDO3_UV, 23574c17a0aSJerome Neanne TPS65219_INT_LDO4_SCG, 23674c17a0aSJerome Neanne TPS65219_INT_LDO4_OC, 23774c17a0aSJerome Neanne TPS65219_INT_LDO4_UV, 23874c17a0aSJerome Neanne /* LDO1-2 */ 23974c17a0aSJerome Neanne TPS65219_INT_LDO1_SCG, 24074c17a0aSJerome Neanne TPS65219_INT_LDO1_OC, 24174c17a0aSJerome Neanne TPS65219_INT_LDO1_UV, 24274c17a0aSJerome Neanne TPS65219_INT_LDO2_SCG, 24374c17a0aSJerome Neanne TPS65219_INT_LDO2_OC, 24474c17a0aSJerome Neanne TPS65219_INT_LDO2_UV, 24574c17a0aSJerome Neanne /* BUCK3 */ 24674c17a0aSJerome Neanne TPS65219_INT_BUCK3_SCG, 24774c17a0aSJerome Neanne TPS65219_INT_BUCK3_OC, 24874c17a0aSJerome Neanne TPS65219_INT_BUCK3_NEG_OC, 24974c17a0aSJerome Neanne TPS65219_INT_BUCK3_UV, 25074c17a0aSJerome Neanne /* BUCK1-2 */ 25174c17a0aSJerome Neanne TPS65219_INT_BUCK1_SCG, 25274c17a0aSJerome Neanne TPS65219_INT_BUCK1_OC, 25374c17a0aSJerome Neanne TPS65219_INT_BUCK1_NEG_OC, 25474c17a0aSJerome Neanne TPS65219_INT_BUCK1_UV, 25574c17a0aSJerome Neanne TPS65219_INT_BUCK2_SCG, 25674c17a0aSJerome Neanne TPS65219_INT_BUCK2_OC, 25774c17a0aSJerome Neanne TPS65219_INT_BUCK2_NEG_OC, 25874c17a0aSJerome Neanne TPS65219_INT_BUCK2_UV, 25974c17a0aSJerome Neanne /* Thermal Sensor */ 26074c17a0aSJerome Neanne TPS65219_INT_SENSOR_3_WARM, 26174c17a0aSJerome Neanne TPS65219_INT_SENSOR_2_WARM, 26274c17a0aSJerome Neanne TPS65219_INT_SENSOR_1_WARM, 26374c17a0aSJerome Neanne TPS65219_INT_SENSOR_0_WARM, 26474c17a0aSJerome Neanne TPS65219_INT_SENSOR_3_HOT, 26574c17a0aSJerome Neanne TPS65219_INT_SENSOR_2_HOT, 26674c17a0aSJerome Neanne TPS65219_INT_SENSOR_1_HOT, 26774c17a0aSJerome Neanne TPS65219_INT_SENSOR_0_HOT, 26874c17a0aSJerome Neanne /* Residual Voltage */ 26974c17a0aSJerome Neanne TPS65219_INT_BUCK1_RV, 27074c17a0aSJerome Neanne TPS65219_INT_BUCK2_RV, 27174c17a0aSJerome Neanne TPS65219_INT_BUCK3_RV, 27274c17a0aSJerome Neanne TPS65219_INT_LDO1_RV, 27374c17a0aSJerome Neanne TPS65219_INT_LDO2_RV, 27474c17a0aSJerome Neanne TPS65219_INT_LDO3_RV, 27574c17a0aSJerome Neanne TPS65219_INT_LDO4_RV, 27674c17a0aSJerome Neanne /* Residual Voltage ShutDown */ 27774c17a0aSJerome Neanne TPS65219_INT_BUCK1_RV_SD, 27874c17a0aSJerome Neanne TPS65219_INT_BUCK2_RV_SD, 27974c17a0aSJerome Neanne TPS65219_INT_BUCK3_RV_SD, 28074c17a0aSJerome Neanne TPS65219_INT_LDO1_RV_SD, 28174c17a0aSJerome Neanne TPS65219_INT_LDO2_RV_SD, 28274c17a0aSJerome Neanne TPS65219_INT_LDO3_RV_SD, 28374c17a0aSJerome Neanne TPS65219_INT_LDO4_RV_SD, 28474c17a0aSJerome Neanne TPS65219_INT_TIMEOUT, 28574c17a0aSJerome Neanne /* Power Button */ 28674c17a0aSJerome Neanne TPS65219_INT_PB_FALLING_EDGE_DETECT, 28774c17a0aSJerome Neanne TPS65219_INT_PB_RISING_EDGE_DETECT, 28874c17a0aSJerome Neanne }; 28974c17a0aSJerome Neanne 29074c17a0aSJerome Neanne enum tps65219_regulator_id { 29174c17a0aSJerome Neanne /* DCDC's */ 29274c17a0aSJerome Neanne TPS65219_BUCK_1, 29374c17a0aSJerome Neanne TPS65219_BUCK_2, 29474c17a0aSJerome Neanne TPS65219_BUCK_3, 29574c17a0aSJerome Neanne /* LDOs */ 29674c17a0aSJerome Neanne TPS65219_LDO_1, 29774c17a0aSJerome Neanne TPS65219_LDO_2, 29874c17a0aSJerome Neanne TPS65219_LDO_3, 29974c17a0aSJerome Neanne TPS65219_LDO_4, 30074c17a0aSJerome Neanne }; 30174c17a0aSJerome Neanne 30274c17a0aSJerome Neanne /* Number of step-down converters available */ 30374c17a0aSJerome Neanne #define TPS65219_NUM_DCDC 3 30474c17a0aSJerome Neanne /* Number of LDO voltage regulators available */ 30574c17a0aSJerome Neanne #define TPS65219_NUM_LDO 4 30674c17a0aSJerome Neanne /* Number of total regulators available */ 30774c17a0aSJerome Neanne #define TPS65219_NUM_REGULATOR (TPS65219_NUM_DCDC + TPS65219_NUM_LDO) 30874c17a0aSJerome Neanne 30974c17a0aSJerome Neanne /* Define the TPS65219 IRQ numbers */ 31074c17a0aSJerome Neanne enum tps65219_irqs { 31174c17a0aSJerome Neanne /* INT source registers */ 31274c17a0aSJerome Neanne TPS65219_TO_RV_SD_SET_IRQ, 31374c17a0aSJerome Neanne TPS65219_RV_SET_IRQ, 31474c17a0aSJerome Neanne TPS65219_SYS_SET_IRQ, 31574c17a0aSJerome Neanne TPS65219_BUCK_1_2_SET_IRQ, 31674c17a0aSJerome Neanne TPS65219_BUCK_3_SET_IRQ, 31774c17a0aSJerome Neanne TPS65219_LDO_1_2_SET_IRQ, 31874c17a0aSJerome Neanne TPS65219_LDO_3_4_SET_IRQ, 31974c17a0aSJerome Neanne TPS65219_PB_SET_IRQ, 32074c17a0aSJerome Neanne }; 32174c17a0aSJerome Neanne 32274c17a0aSJerome Neanne /** 32374c17a0aSJerome Neanne * struct tps65219 - tps65219 sub-driver chip access routines 32474c17a0aSJerome Neanne * 32574c17a0aSJerome Neanne * Device data may be used to access the TPS65219 chip 32674c17a0aSJerome Neanne * 32774c17a0aSJerome Neanne * @dev: MFD device 32874c17a0aSJerome Neanne * @regmap: Regmap for accessing the device registers 32974c17a0aSJerome Neanne * @irq_data: Regmap irq data used for the irq chip 33074c17a0aSJerome Neanne * @nb: notifier block for the restart handler 33174c17a0aSJerome Neanne */ 33274c17a0aSJerome Neanne struct tps65219 { 33374c17a0aSJerome Neanne struct device *dev; 33474c17a0aSJerome Neanne struct regmap *regmap; 33574c17a0aSJerome Neanne 33674c17a0aSJerome Neanne struct regmap_irq_chip_data *irq_data; 33774c17a0aSJerome Neanne struct notifier_block nb; 33874c17a0aSJerome Neanne }; 33974c17a0aSJerome Neanne 34074c17a0aSJerome Neanne #endif /* MFD_TPS65219_H */ 341