1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* Copyright 2020 NXP. */ 3 4 #ifndef __LINUX_REG_PCA9450_H__ 5 #define __LINUX_REG_PCA9450_H__ 6 7 #include <linux/regmap.h> 8 9 enum pca9450_chip_type { 10 PCA9450_TYPE_PCA9450A = 0, 11 PCA9450_TYPE_PCA9450BC, 12 PCA9450_TYPE_PCA9451A, 13 PCA9450_TYPE_PCA9452, 14 PCA9450_TYPE_AMOUNT, 15 }; 16 17 enum { 18 PCA9450_BUCK1 = 0, 19 PCA9450_BUCK2, 20 PCA9450_BUCK3, 21 PCA9450_BUCK4, 22 PCA9450_BUCK5, 23 PCA9450_BUCK6, 24 PCA9450_LDO1, 25 PCA9450_LDO2, 26 PCA9450_LDO3, 27 PCA9450_LDO4, 28 PCA9450_LDO5, 29 PCA9450_REGULATOR_CNT, 30 }; 31 32 enum { 33 PCA9450_DVS_LEVEL_RUN = 0, 34 PCA9450_DVS_LEVEL_STANDBY, 35 PCA9450_DVS_LEVEL_MAX, 36 }; 37 38 #define PCA9450_BUCK1_VOLTAGE_NUM 0x80 39 #define PCA9450_BUCK2_VOLTAGE_NUM 0x80 40 #define PCA9450_BUCK3_VOLTAGE_NUM 0x80 41 #define PCA9450_BUCK4_VOLTAGE_NUM 0x80 42 43 #define PCA9450_BUCK5_VOLTAGE_NUM 0x80 44 #define PCA9450_BUCK6_VOLTAGE_NUM 0x80 45 46 #define PCA9450_LDO1_VOLTAGE_NUM 0x08 47 #define PCA9450_LDO2_VOLTAGE_NUM 0x08 48 #define PCA9450_LDO3_VOLTAGE_NUM 0x20 49 #define PCA9450_LDO4_VOLTAGE_NUM 0x20 50 #define PCA9450_LDO5_VOLTAGE_NUM 0x10 51 52 enum { 53 PCA9450_REG_DEV_ID = 0x00, 54 PCA9450_REG_INT1 = 0x01, 55 PCA9450_REG_INT1_MSK = 0x02, 56 PCA9450_REG_STATUS1 = 0x03, 57 PCA9450_REG_STATUS2 = 0x04, 58 PCA9450_REG_PWRON_STAT = 0x05, 59 PCA9450_REG_SWRST = 0x06, 60 PCA9450_REG_PWRCTRL = 0x07, 61 PCA9450_REG_RESET_CTRL = 0x08, 62 PCA9450_REG_CONFIG1 = 0x09, 63 PCA9450_REG_CONFIG2 = 0x0A, 64 PCA9450_REG_BUCK123_DVS = 0x0C, 65 PCA9450_REG_BUCK1OUT_LIMIT = 0x0D, 66 PCA9450_REG_BUCK2OUT_LIMIT = 0x0E, 67 PCA9450_REG_BUCK3OUT_LIMIT = 0x0F, 68 PCA9450_REG_BUCK1CTRL = 0x10, 69 PCA9450_REG_BUCK1OUT_DVS0 = 0x11, 70 PCA9450_REG_BUCK1OUT_DVS1 = 0x12, 71 PCA9450_REG_BUCK2CTRL = 0x13, 72 PCA9450_REG_BUCK2OUT_DVS0 = 0x14, 73 PCA9450_REG_BUCK2OUT_DVS1 = 0x15, 74 PCA9450_REG_BUCK3CTRL = 0x16, 75 PCA9450_REG_BUCK3OUT_DVS0 = 0x17, 76 PCA9450_REG_BUCK3OUT_DVS1 = 0x18, 77 PCA9450_REG_BUCK4CTRL = 0x19, 78 PCA9450_REG_BUCK4OUT = 0x1A, 79 PCA9450_REG_BUCK5CTRL = 0x1B, 80 PCA9450_REG_BUCK5OUT = 0x1C, 81 PCA9450_REG_BUCK6CTRL = 0x1D, 82 PCA9450_REG_BUCK6OUT = 0x1E, 83 PCA9450_REG_LDO_AD_CTRL = 0x20, 84 PCA9450_REG_LDO1CTRL = 0x21, 85 PCA9450_REG_LDO2CTRL = 0x22, 86 PCA9450_REG_LDO3CTRL = 0x23, 87 PCA9450_REG_LDO4CTRL = 0x24, 88 PCA9450_REG_LDO5CTRL_L = 0x25, 89 PCA9450_REG_LDO5CTRL_H = 0x26, 90 PCA9450_REG_LOADSW_CTRL = 0x2A, 91 PCA9450_REG_VRFLT1_STS = 0x2B, 92 PCA9450_REG_VRFLT2_STS = 0x2C, 93 PCA9450_REG_VRFLT1_MASK = 0x2D, 94 PCA9450_REG_VRFLT2_MASK = 0x2E, 95 PCA9450_MAX_REGISTER = 0x2F, 96 }; 97 98 /* PCA9450 BUCK ENMODE bits */ 99 #define BUCK_ENMODE_OFF 0x00 100 #define BUCK_ENMODE_ONREQ 0x01 101 #define BUCK_ENMODE_ONREQ_STBYREQ 0x02 102 #define BUCK_ENMODE_ON 0x03 103 104 /* PCA9450_REG_BUCK1_CTRL bits */ 105 #define BUCK1_RAMP_MASK 0xC0 106 #define BUCK1_RAMP_25MV 0x0 107 #define BUCK1_RAMP_12P5MV 0x1 108 #define BUCK1_RAMP_6P25MV 0x2 109 #define BUCK1_RAMP_3P125MV 0x3 110 #define BUCK1_DVS_CTRL 0x10 111 #define BUCK1_AD 0x08 112 #define BUCK1_FPWM 0x04 113 #define BUCK1_ENMODE_MASK 0x03 114 115 /* PCA9450_REG_BUCK2_CTRL bits */ 116 #define BUCK2_RAMP_MASK 0xC0 117 #define BUCK2_RAMP_25MV 0x0 118 #define BUCK2_RAMP_12P5MV 0x1 119 #define BUCK2_RAMP_6P25MV 0x2 120 #define BUCK2_RAMP_3P125MV 0x3 121 #define BUCK2_DVS_CTRL 0x10 122 #define BUCK2_AD 0x08 123 #define BUCK2_FPWM 0x04 124 #define BUCK2_ENMODE_MASK 0x03 125 126 /* PCA9450_REG_BUCK3_CTRL bits */ 127 #define BUCK3_RAMP_MASK 0xC0 128 #define BUCK3_RAMP_25MV 0x0 129 #define BUCK3_RAMP_12P5MV 0x1 130 #define BUCK3_RAMP_6P25MV 0x2 131 #define BUCK3_RAMP_3P125MV 0x3 132 #define BUCK3_DVS_CTRL 0x10 133 #define BUCK3_AD 0x08 134 #define BUCK3_FPWM 0x04 135 #define BUCK3_ENMODE_MASK 0x03 136 137 /* PCA9450_REG_BUCK4_CTRL bits */ 138 #define BUCK4_AD 0x08 139 #define BUCK4_FPWM 0x04 140 #define BUCK4_ENMODE_MASK 0x03 141 142 /* PCA9450_REG_BUCK5_CTRL bits */ 143 #define BUCK5_AD 0x08 144 #define BUCK5_FPWM 0x04 145 #define BUCK5_ENMODE_MASK 0x03 146 147 /* PCA9450_REG_BUCK6_CTRL bits */ 148 #define BUCK6_AD 0x08 149 #define BUCK6_FPWM 0x04 150 #define BUCK6_ENMODE_MASK 0x03 151 152 /* PCA9450_REG_BUCK123_PRESET_EN bit */ 153 #define BUCK123_PRESET_EN 0x80 154 155 /* PCA9450_BUCK1OUT_DVS0 bits */ 156 #define BUCK1OUT_DVS0_MASK 0x7F 157 #define BUCK1OUT_DVS0_DEFAULT 0x14 158 159 /* PCA9450_BUCK1OUT_DVS1 bits */ 160 #define BUCK1OUT_DVS1_MASK 0x7F 161 #define BUCK1OUT_DVS1_DEFAULT 0x14 162 163 /* PCA9450_BUCK2OUT_DVS0 bits */ 164 #define BUCK2OUT_DVS0_MASK 0x7F 165 #define BUCK2OUT_DVS0_DEFAULT 0x14 166 167 /* PCA9450_BUCK2OUT_DVS1 bits */ 168 #define BUCK2OUT_DVS1_MASK 0x7F 169 #define BUCK2OUT_DVS1_DEFAULT 0x14 170 171 /* PCA9450_BUCK3OUT_DVS0 bits */ 172 #define BUCK3OUT_DVS0_MASK 0x7F 173 #define BUCK3OUT_DVS0_DEFAULT 0x14 174 175 /* PCA9450_BUCK3OUT_DVS1 bits */ 176 #define BUCK3OUT_DVS1_MASK 0x7F 177 #define BUCK3OUT_DVS1_DEFAULT 0x14 178 179 /* PCA9450_REG_BUCK4OUT bits */ 180 #define BUCK4OUT_MASK 0x7F 181 #define BUCK4OUT_DEFAULT 0x6C 182 183 /* PCA9450_REG_BUCK5OUT bits */ 184 #define BUCK5OUT_MASK 0x7F 185 #define BUCK5OUT_DEFAULT 0x30 186 187 /* PCA9450_REG_BUCK6OUT bits */ 188 #define BUCK6OUT_MASK 0x7F 189 #define BUCK6OUT_DEFAULT 0x14 190 191 /* PCA9450_REG_LDO1_VOLT bits */ 192 #define LDO1_EN_MASK 0xC0 193 #define LDO1OUT_MASK 0x07 194 195 /* PCA9450_REG_LDO2_VOLT bits */ 196 #define LDO2_EN_MASK 0xC0 197 #define LDO2OUT_MASK 0x07 198 199 /* PCA9450_REG_LDO3_VOLT bits */ 200 #define LDO3_EN_MASK 0xC0 201 #define LDO3OUT_MASK 0x1F 202 203 /* PCA9450_REG_LDO4_VOLT bits */ 204 #define LDO4_EN_MASK 0xC0 205 #define LDO4OUT_MASK 0x1F 206 207 /* PCA9450_REG_LDO5_VOLT bits */ 208 #define LDO5L_EN_MASK 0xC0 209 #define LDO5LOUT_MASK 0x0F 210 211 #define LDO5H_EN_MASK 0xC0 212 #define LDO5HOUT_MASK 0x0F 213 214 /* PCA9450_REG_IRQ bits */ 215 #define IRQ_PWRON 0x80 216 #define IRQ_WDOGB 0x40 217 #define IRQ_RSVD 0x20 218 #define IRQ_VR_FLT1 0x10 219 #define IRQ_VR_FLT2 0x08 220 #define IRQ_LOWVSYS 0x04 221 #define IRQ_THERM_105 0x02 222 #define IRQ_THERM_125 0x01 223 224 /* PCA9450_REG_RESET_CTRL bits */ 225 #define WDOG_B_CFG_MASK 0xC0 226 #define WDOG_B_CFG_NONE 0x00 227 #define WDOG_B_CFG_WARM 0x40 228 #define WDOG_B_CFG_COLD_LDO12 0x80 229 #define WDOG_B_CFG_COLD 0xC0 230 231 /* PCA9450_REG_CONFIG2 bits */ 232 #define I2C_LT_MASK 0x03 233 #define I2C_LT_FORCE_DISABLE 0x00 234 #define I2C_LT_ON_STANDBY_RUN 0x01 235 #define I2C_LT_ON_RUN 0x02 236 #define I2C_LT_FORCE_ENABLE 0x03 237 238 #endif /* __LINUX_REG_PCA9450_H__ */ 239