1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) STMicroelectronics 2018 - All Rights Reserved 4 * Author: Philippe Peurichard <philippe.peurichard@st.com>, 5 * Pascal Paillet <p.paillet@st.com> for STMicroelectronics. 6 */ 7 8 #ifndef __LINUX_MFD_STPMIC1_H 9 #define __LINUX_MFD_STPMIC1_H 10 11 #define TURN_ON_SR 0x1 12 #define TURN_OFF_SR 0x2 13 #define ICC_LDO_TURN_OFF_SR 0x3 14 #define ICC_BUCK_TURN_OFF_SR 0x4 15 #define RREQ_STATE_SR 0x5 16 #define VERSION_SR 0x6 17 18 #define MAIN_CR 0x10 19 #define PADS_PULL_CR 0x11 20 #define BUCKS_PD_CR 0x12 21 #define LDO14_PD_CR 0x13 22 #define LDO56_VREF_PD_CR 0x14 23 #define VBUS_DET_VIN_CR 0x15 24 #define PKEY_TURNOFF_CR 0x16 25 #define BUCKS_MASK_RANK_CR 0x17 26 #define BUCKS_MASK_RESET_CR 0x18 27 #define LDOS_MASK_RANK_CR 0x19 28 #define LDOS_MASK_RESET_CR 0x1A 29 #define WCHDG_CR 0x1B 30 #define WCHDG_TIMER_CR 0x1C 31 #define BUCKS_ICCTO_CR 0x1D 32 #define LDOS_ICCTO_CR 0x1E 33 34 #define BUCK1_ACTIVE_CR 0x20 35 #define BUCK2_ACTIVE_CR 0x21 36 #define BUCK3_ACTIVE_CR 0x22 37 #define BUCK4_ACTIVE_CR 0x23 38 #define VREF_DDR_ACTIVE_CR 0x24 39 #define LDO1_ACTIVE_CR 0x25 40 #define LDO2_ACTIVE_CR 0x26 41 #define LDO3_ACTIVE_CR 0x27 42 #define LDO4_ACTIVE_CR 0x28 43 #define LDO5_ACTIVE_CR 0x29 44 #define LDO6_ACTIVE_CR 0x2A 45 46 #define BUCK1_STDBY_CR 0x30 47 #define BUCK2_STDBY_CR 0x31 48 #define BUCK3_STDBY_CR 0x32 49 #define BUCK4_STDBY_CR 0x33 50 #define VREF_DDR_STDBY_CR 0x34 51 #define LDO1_STDBY_CR 0x35 52 #define LDO2_STDBY_CR 0x36 53 #define LDO3_STDBY_CR 0x37 54 #define LDO4_STDBY_CR 0x38 55 #define LDO5_STDBY_CR 0x39 56 #define LDO6_STDBY_CR 0x3A 57 58 #define BST_SW_CR 0x40 59 60 #define INT_PENDING_R1 0x50 61 #define INT_PENDING_R2 0x51 62 #define INT_PENDING_R3 0x52 63 #define INT_PENDING_R4 0x53 64 65 #define INT_DBG_LATCH_R1 0x60 66 #define INT_DBG_LATCH_R2 0x61 67 #define INT_DBG_LATCH_R3 0x62 68 #define INT_DBG_LATCH_R4 0x63 69 70 #define INT_CLEAR_R1 0x70 71 #define INT_CLEAR_R2 0x71 72 #define INT_CLEAR_R3 0x72 73 #define INT_CLEAR_R4 0x73 74 75 #define INT_MASK_R1 0x80 76 #define INT_MASK_R2 0x81 77 #define INT_MASK_R3 0x82 78 #define INT_MASK_R4 0x83 79 80 #define INT_SET_MASK_R1 0x90 81 #define INT_SET_MASK_R2 0x91 82 #define INT_SET_MASK_R3 0x92 83 #define INT_SET_MASK_R4 0x93 84 85 #define INT_CLEAR_MASK_R1 0xA0 86 #define INT_CLEAR_MASK_R2 0xA1 87 #define INT_CLEAR_MASK_R3 0xA2 88 #define INT_CLEAR_MASK_R4 0xA3 89 90 #define INT_SRC_R1 0xB0 91 #define INT_SRC_R2 0xB1 92 #define INT_SRC_R3 0xB2 93 #define INT_SRC_R4 0xB3 94 95 #define PMIC_MAX_REGISTER_ADDRESS INT_SRC_R4 96 97 #define STPMIC1_PMIC_NUM_IRQ_REGS 4 98 99 #define TURN_OFF_SR_ICC_EVENT 0x08 100 101 #define LDO_VOLTAGE_MASK GENMASK(6, 2) 102 #define BUCK_VOLTAGE_MASK GENMASK(7, 2) 103 #define LDO_BUCK_VOLTAGE_SHIFT 2 104 105 #define LDO_ENABLE_MASK BIT(0) 106 #define BUCK_ENABLE_MASK BIT(0) 107 108 #define BUCK_HPLP_ENABLE_MASK BIT(1) 109 #define BUCK_HPLP_SHIFT 1 110 111 #define STDBY_ENABLE_MASK BIT(0) 112 113 #define BUCKS_PD_CR_REG_MASK GENMASK(7, 0) 114 #define BUCK_MASK_RANK_REGISTER_MASK GENMASK(3, 0) 115 #define BUCK_MASK_RESET_REGISTER_MASK GENMASK(3, 0) 116 #define LDO1234_PULL_DOWN_REGISTER_MASK GENMASK(7, 0) 117 #define LDO56_VREF_PD_CR_REG_MASK GENMASK(5, 0) 118 #define LDO_MASK_RANK_REGISTER_MASK GENMASK(5, 0) 119 #define LDO_MASK_RESET_REGISTER_MASK GENMASK(5, 0) 120 121 #define BUCK1_PULL_DOWN_REG BUCKS_PD_CR 122 #define BUCK1_PULL_DOWN_MASK BIT(0) 123 #define BUCK2_PULL_DOWN_REG BUCKS_PD_CR 124 #define BUCK2_PULL_DOWN_MASK BIT(2) 125 #define BUCK3_PULL_DOWN_REG BUCKS_PD_CR 126 #define BUCK3_PULL_DOWN_MASK BIT(4) 127 #define BUCK4_PULL_DOWN_REG BUCKS_PD_CR 128 #define BUCK4_PULL_DOWN_MASK BIT(6) 129 130 #define LDO1_PULL_DOWN_REG LDO14_PD_CR 131 #define LDO1_PULL_DOWN_MASK BIT(0) 132 #define LDO2_PULL_DOWN_REG LDO14_PD_CR 133 #define LDO2_PULL_DOWN_MASK BIT(2) 134 #define LDO3_PULL_DOWN_REG LDO14_PD_CR 135 #define LDO3_PULL_DOWN_MASK BIT(4) 136 #define LDO4_PULL_DOWN_REG LDO14_PD_CR 137 #define LDO4_PULL_DOWN_MASK BIT(6) 138 #define LDO5_PULL_DOWN_REG LDO56_VREF_PD_CR 139 #define LDO5_PULL_DOWN_MASK BIT(0) 140 #define LDO6_PULL_DOWN_REG LDO56_VREF_PD_CR 141 #define LDO6_PULL_DOWN_MASK BIT(2) 142 #define VREF_DDR_PULL_DOWN_REG LDO56_VREF_PD_CR 143 #define VREF_DDR_PULL_DOWN_MASK BIT(4) 144 145 #define BUCKS_ICCTO_CR_REG_MASK GENMASK(6, 0) 146 #define LDOS_ICCTO_CR_REG_MASK GENMASK(5, 0) 147 148 #define LDO_BYPASS_MASK BIT(7) 149 150 /* Main PMIC Control Register 151 * MAIN_CR 152 * Address : 0x10 153 */ 154 #define OCP_OFF_DBG BIT(4) 155 #define PWRCTRL_POLARITY_HIGH BIT(3) 156 #define PWRCTRL_ENABLE BIT(2) 157 #define RESTART_REQUEST_ENABLE BIT(1) 158 #define SOFTWARE_SWITCH_OFF BIT(0) 159 160 /* Main PMIC PADS Control Register 161 * PADS_PULL_CR 162 * Address : 0x11 163 */ 164 #define WAKEUP_DETECTOR_DISABLED BIT(4) 165 #define PWRCTRL_PD_ACTIVE BIT(3) 166 #define PWRCTRL_PU_ACTIVE BIT(2) 167 #define WAKEUP_PD_ACTIVE BIT(1) 168 #define PONKEY_PU_INACTIVE BIT(0) 169 170 /* Main PMIC VINLOW Control Register 171 * VBUS_DET_VIN_CRC DMSC 172 * Address : 0x15 173 */ 174 #define SWIN_DETECTOR_ENABLED BIT(7) 175 #define SWOUT_DETECTOR_ENABLED BIT(6) 176 #define VINLOW_ENABLED BIT(0) 177 #define VINLOW_CTRL_REG_MASK GENMASK(7, 0) 178 179 /* USB Control Register 180 * Address : 0x40 181 */ 182 #define BOOST_OVP_DISABLED BIT(7) 183 #define VBUS_OTG_DETECTION_DISABLED BIT(6) 184 #define SW_OUT_DISCHARGE BIT(5) 185 #define VBUS_OTG_DISCHARGE BIT(4) 186 #define OCP_LIMIT_HIGH BIT(3) 187 #define SWIN_SWOUT_ENABLED BIT(2) 188 #define USBSW_OTG_SWITCH_ENABLED BIT(1) 189 #define BOOST_ENABLED BIT(0) 190 191 /* PKEY_TURNOFF_CR 192 * Address : 0x16 193 */ 194 #define PONKEY_PWR_OFF BIT(7) 195 #define PONKEY_CC_FLAG_CLEAR BIT(6) 196 #define PONKEY_TURNOFF_TIMER_MASK GENMASK(3, 0) 197 #define PONKEY_TURNOFF_MASK GENMASK(7, 0) 198 199 /* 200 * struct stpmic1 - stpmic1 master device for sub-drivers 201 * @dev: master device of the chip (can be used to access platform data) 202 * @irq: main IRQ number 203 * @regmap_irq_chip_data: irq chip data 204 */ 205 struct stpmic1 { 206 struct device *dev; 207 struct regmap *regmap; 208 int irq; 209 struct regmap_irq_chip_data *irq_data; 210 }; 211 212 #endif /* __LINUX_MFD_STPMIC1_H */ 213