1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* Copyright (C) 2019 ROHM Semiconductors */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef __LINUX_MFD_BD71828_H__ 5*4882a593Smuzhiyun #define __LINUX_MFD_BD71828_H__ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include <linux/mfd/rohm-generic.h> 8*4882a593Smuzhiyun #include <linux/mfd/rohm-shared.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* Regulator IDs */ 11*4882a593Smuzhiyun enum { 12*4882a593Smuzhiyun BD71828_BUCK1, 13*4882a593Smuzhiyun BD71828_BUCK2, 14*4882a593Smuzhiyun BD71828_BUCK3, 15*4882a593Smuzhiyun BD71828_BUCK4, 16*4882a593Smuzhiyun BD71828_BUCK5, 17*4882a593Smuzhiyun BD71828_BUCK6, 18*4882a593Smuzhiyun BD71828_BUCK7, 19*4882a593Smuzhiyun BD71828_LDO1, 20*4882a593Smuzhiyun BD71828_LDO2, 21*4882a593Smuzhiyun BD71828_LDO3, 22*4882a593Smuzhiyun BD71828_LDO4, 23*4882a593Smuzhiyun BD71828_LDO5, 24*4882a593Smuzhiyun BD71828_LDO6, 25*4882a593Smuzhiyun BD71828_LDO_SNVS, 26*4882a593Smuzhiyun BD71828_REGULATOR_AMOUNT, 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define BD71828_BUCK1267_VOLTS 0x100 30*4882a593Smuzhiyun #define BD71828_BUCK3_VOLTS 0x20 31*4882a593Smuzhiyun #define BD71828_BUCK4_VOLTS 0x40 32*4882a593Smuzhiyun #define BD71828_BUCK5_VOLTS 0x20 33*4882a593Smuzhiyun #define BD71828_LDO_VOLTS 0x40 34*4882a593Smuzhiyun /* LDO6 is fixed 1.8V voltage */ 35*4882a593Smuzhiyun #define BD71828_LDO_6_VOLTAGE 1800000 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* Registers and masks*/ 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* MODE control */ 40*4882a593Smuzhiyun #define BD71828_REG_PS_CTRL_1 0x04 41*4882a593Smuzhiyun #define BD71828_REG_PS_CTRL_2 0x05 42*4882a593Smuzhiyun #define BD71828_REG_PS_CTRL_3 0x06 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun //#define BD71828_REG_SWRESET 0x06 45*4882a593Smuzhiyun #define BD71828_MASK_RUN_LVL_CTRL 0x30 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* Regulator control masks */ 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define BD71828_MASK_RAMP_DELAY 0x6 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #define BD71828_MASK_RUN_EN 0x08 52*4882a593Smuzhiyun #define BD71828_MASK_SUSP_EN 0x04 53*4882a593Smuzhiyun #define BD71828_MASK_IDLE_EN 0x02 54*4882a593Smuzhiyun #define BD71828_MASK_LPSR_EN 0x01 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #define BD71828_MASK_RUN0_EN 0x01 57*4882a593Smuzhiyun #define BD71828_MASK_RUN1_EN 0x02 58*4882a593Smuzhiyun #define BD71828_MASK_RUN2_EN 0x04 59*4882a593Smuzhiyun #define BD71828_MASK_RUN3_EN 0x08 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #define BD71828_MASK_DVS_BUCK1_CTRL 0x10 62*4882a593Smuzhiyun #define BD71828_DVS_BUCK1_CTRL_I2C 0 63*4882a593Smuzhiyun #define BD71828_DVS_BUCK1_USE_RUNLVL 0x10 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define BD71828_MASK_DVS_BUCK2_CTRL 0x20 66*4882a593Smuzhiyun #define BD71828_DVS_BUCK2_CTRL_I2C 0 67*4882a593Smuzhiyun #define BD71828_DVS_BUCK2_USE_RUNLVL 0x20 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define BD71828_MASK_DVS_BUCK6_CTRL 0x40 70*4882a593Smuzhiyun #define BD71828_DVS_BUCK6_CTRL_I2C 0 71*4882a593Smuzhiyun #define BD71828_DVS_BUCK6_USE_RUNLVL 0x40 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define BD71828_MASK_DVS_BUCK7_CTRL 0x80 74*4882a593Smuzhiyun #define BD71828_DVS_BUCK7_CTRL_I2C 0 75*4882a593Smuzhiyun #define BD71828_DVS_BUCK7_USE_RUNLVL 0x80 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define BD71828_MASK_BUCK1267_VOLT 0xff 78*4882a593Smuzhiyun #define BD71828_MASK_BUCK3_VOLT 0x1f 79*4882a593Smuzhiyun #define BD71828_MASK_BUCK4_VOLT 0x3f 80*4882a593Smuzhiyun #define BD71828_MASK_BUCK5_VOLT 0x1f 81*4882a593Smuzhiyun #define BD71828_MASK_LDO_VOLT 0x3f 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* Regulator control regs */ 84*4882a593Smuzhiyun #define BD71828_REG_BUCK1_EN 0x08 85*4882a593Smuzhiyun #define BD71828_REG_BUCK1_CTRL 0x09 86*4882a593Smuzhiyun #define BD71828_REG_BUCK1_MODE 0x0a 87*4882a593Smuzhiyun #define BD71828_REG_BUCK1_IDLE_VOLT 0x0b 88*4882a593Smuzhiyun #define BD71828_REG_BUCK1_SUSP_VOLT 0x0c 89*4882a593Smuzhiyun #define BD71828_REG_BUCK1_VOLT 0x0d 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define BD71828_REG_BUCK2_EN 0x12 92*4882a593Smuzhiyun #define BD71828_REG_BUCK2_CTRL 0x13 93*4882a593Smuzhiyun #define BD71828_REG_BUCK2_MODE 0x14 94*4882a593Smuzhiyun #define BD71828_REG_BUCK2_IDLE_VOLT 0x15 95*4882a593Smuzhiyun #define BD71828_REG_BUCK2_SUSP_VOLT 0x16 96*4882a593Smuzhiyun #define BD71828_REG_BUCK2_VOLT 0x17 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define BD71828_REG_BUCK3_EN 0x1c 99*4882a593Smuzhiyun #define BD71828_REG_BUCK3_MODE 0x1d 100*4882a593Smuzhiyun #define BD71828_REG_BUCK3_VOLT 0x1e 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun #define BD71828_REG_BUCK4_EN 0x1f 103*4882a593Smuzhiyun #define BD71828_REG_BUCK4_MODE 0x20 104*4882a593Smuzhiyun #define BD71828_REG_BUCK4_VOLT 0x21 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define BD71828_REG_BUCK5_EN 0x22 107*4882a593Smuzhiyun #define BD71828_REG_BUCK5_MODE 0x23 108*4882a593Smuzhiyun #define BD71828_REG_BUCK5_VOLT 0x24 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define BD71828_REG_BUCK6_EN 0x25 111*4882a593Smuzhiyun #define BD71828_REG_BUCK6_CTRL 0x26 112*4882a593Smuzhiyun #define BD71828_REG_BUCK6_MODE 0x27 113*4882a593Smuzhiyun #define BD71828_REG_BUCK6_IDLE_VOLT 0x28 114*4882a593Smuzhiyun #define BD71828_REG_BUCK6_SUSP_VOLT 0x29 115*4882a593Smuzhiyun #define BD71828_REG_BUCK6_VOLT 0x2a 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define BD71828_REG_BUCK7_EN 0x2f 118*4882a593Smuzhiyun #define BD71828_REG_BUCK7_CTRL 0x30 119*4882a593Smuzhiyun #define BD71828_REG_BUCK7_MODE 0x31 120*4882a593Smuzhiyun #define BD71828_REG_BUCK7_IDLE_VOLT 0x32 121*4882a593Smuzhiyun #define BD71828_REG_BUCK7_SUSP_VOLT 0x33 122*4882a593Smuzhiyun #define BD71828_REG_BUCK7_VOLT 0x34 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun #define BD71828_REG_LDO1_EN 0x39 125*4882a593Smuzhiyun #define BD71828_REG_LDO1_VOLT 0x3a 126*4882a593Smuzhiyun #define BD71828_REG_LDO2_EN 0x3b 127*4882a593Smuzhiyun #define BD71828_REG_LDO2_VOLT 0x3c 128*4882a593Smuzhiyun #define BD71828_REG_LDO3_EN 0x3d 129*4882a593Smuzhiyun #define BD71828_REG_LDO3_VOLT 0x3e 130*4882a593Smuzhiyun #define BD71828_REG_LDO4_EN 0x3f 131*4882a593Smuzhiyun #define BD71828_REG_LDO4_VOLT 0x40 132*4882a593Smuzhiyun #define BD71828_REG_LDO5_EN 0x41 133*4882a593Smuzhiyun #define BD71828_REG_LDO5_VOLT 0x43 134*4882a593Smuzhiyun #define BD71828_REG_LDO5_VOLT_OPT 0x42 135*4882a593Smuzhiyun #define BD71828_REG_LDO6_EN 0x44 136*4882a593Smuzhiyun //#define BD71828_REG_LDO6_VOLT 0x4 137*4882a593Smuzhiyun #define BD71828_REG_LDO7_EN 0x45 138*4882a593Smuzhiyun #define BD71828_REG_LDO7_VOLT 0x46 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* GPIO */ 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define BD71828_GPIO_DRIVE_MASK 0x2 143*4882a593Smuzhiyun #define BD71828_GPIO_OPEN_DRAIN 0x0 144*4882a593Smuzhiyun #define BD71828_GPIO_PUSH_PULL 0x2 145*4882a593Smuzhiyun #define BD71828_GPIO_OUT_HI 0x1 146*4882a593Smuzhiyun #define BD71828_GPIO_OUT_LO 0x0 147*4882a593Smuzhiyun #define BD71828_GPIO_OUT_MASK 0x1 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define BD71828_REG_GPIO_CTRL1 0x47 150*4882a593Smuzhiyun #define BD71828_REG_GPIO_CTRL2 0x48 151*4882a593Smuzhiyun #define BD71828_REG_GPIO_CTRL3 0x49 152*4882a593Smuzhiyun #define BD71828_REG_IO_STAT 0xed 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun /* RTC */ 155*4882a593Smuzhiyun #define BD71828_REG_RTC_SEC 0x4c 156*4882a593Smuzhiyun #define BD71828_REG_RTC_MINUTE 0x4d 157*4882a593Smuzhiyun #define BD71828_REG_RTC_HOUR 0x4e 158*4882a593Smuzhiyun #define BD71828_REG_RTC_WEEK 0x4f 159*4882a593Smuzhiyun #define BD71828_REG_RTC_DAY 0x50 160*4882a593Smuzhiyun #define BD71828_REG_RTC_MONTH 0x51 161*4882a593Smuzhiyun #define BD71828_REG_RTC_YEAR 0x52 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_SEC 0x53 164*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM_START BD71828_REG_RTC_ALM0_SEC 165*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_MINUTE 0x54 166*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_HOUR 0x55 167*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_WEEK 0x56 168*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_DAY 0x57 169*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_MONTH 0x58 170*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_YEAR 0x59 171*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM0_MASK 0x61 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_SEC 0x5a 174*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_MINUTE 0x5b 175*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_HOUR 0x5c 176*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_WEEK 0x5d 177*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_DAY 0x5e 178*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_MONTH 0x5f 179*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_YEAR 0x60 180*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM1_MASK 0x62 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #define BD71828_REG_RTC_ALM2 0x63 183*4882a593Smuzhiyun #define BD71828_REG_RTC_START BD71828_REG_RTC_SEC 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun /* Charger/Battey */ 186*4882a593Smuzhiyun #define BD71828_REG_CHG_STATE 0x65 187*4882a593Smuzhiyun #define BD71828_REG_CHG_FULL 0xd2 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun /* LEDs */ 190*4882a593Smuzhiyun #define BD71828_REG_LED_CTRL 0x4A 191*4882a593Smuzhiyun #define BD71828_MASK_LED_AMBER 0x80 192*4882a593Smuzhiyun #define BD71828_MASK_LED_GREEN 0x40 193*4882a593Smuzhiyun #define BD71828_LED_ON 0xff 194*4882a593Smuzhiyun #define BD71828_LED_OFF 0x0 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun /* IRQ registers */ 197*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BUCK 0xd3 198*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_DCIN1 0xd4 199*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_DCIN2 0xd5 200*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_VSYS 0xd6 201*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_CHG 0xd7 202*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BAT 0xd8 203*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BAT_MON1 0xd9 204*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BAT_MON2 0xda 205*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BAT_MON3 0xdb 206*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_BAT_MON4 0xdc 207*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_TEMP 0xdd 208*4882a593Smuzhiyun #define BD71828_REG_INT_MASK_RTC 0xde 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #define BD71828_REG_INT_MAIN 0xdf 211*4882a593Smuzhiyun #define BD71828_REG_INT_BUCK 0xe0 212*4882a593Smuzhiyun #define BD71828_REG_INT_DCIN1 0xe1 213*4882a593Smuzhiyun #define BD71828_REG_INT_DCIN2 0xe2 214*4882a593Smuzhiyun #define BD71828_REG_INT_VSYS 0xe3 215*4882a593Smuzhiyun #define BD71828_REG_INT_CHG 0xe4 216*4882a593Smuzhiyun #define BD71828_REG_INT_BAT 0xe5 217*4882a593Smuzhiyun #define BD71828_REG_INT_BAT_MON1 0xe6 218*4882a593Smuzhiyun #define BD71828_REG_INT_BAT_MON2 0xe7 219*4882a593Smuzhiyun #define BD71828_REG_INT_BAT_MON3 0xe8 220*4882a593Smuzhiyun #define BD71828_REG_INT_BAT_MON4 0xe9 221*4882a593Smuzhiyun #define BD71828_REG_INT_TEMP 0xea 222*4882a593Smuzhiyun #define BD71828_REG_INT_RTC 0xeb 223*4882a593Smuzhiyun #define BD71828_REG_INT_UPDATE 0xec 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun #define BD71828_MAX_REGISTER BD71828_REG_IO_STAT 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* Masks for main IRQ register bits */ 228*4882a593Smuzhiyun enum { 229*4882a593Smuzhiyun BD71828_INT_BUCK, 230*4882a593Smuzhiyun #define BD71828_INT_BUCK_MASK BIT(BD71828_INT_BUCK) 231*4882a593Smuzhiyun BD71828_INT_DCIN, 232*4882a593Smuzhiyun #define BD71828_INT_DCIN_MASK BIT(BD71828_INT_DCIN) 233*4882a593Smuzhiyun BD71828_INT_VSYS, 234*4882a593Smuzhiyun #define BD71828_INT_VSYS_MASK BIT(BD71828_INT_VSYS) 235*4882a593Smuzhiyun BD71828_INT_CHG, 236*4882a593Smuzhiyun #define BD71828_INT_CHG_MASK BIT(BD71828_INT_CHG) 237*4882a593Smuzhiyun BD71828_INT_BAT, 238*4882a593Smuzhiyun #define BD71828_INT_BAT_MASK BIT(BD71828_INT_BAT) 239*4882a593Smuzhiyun BD71828_INT_BAT_MON, 240*4882a593Smuzhiyun #define BD71828_INT_BAT_MON_MASK BIT(BD71828_INT_BAT_MON) 241*4882a593Smuzhiyun BD71828_INT_TEMP, 242*4882a593Smuzhiyun #define BD71828_INT_TEMP_MASK BIT(BD71828_INT_TEMP) 243*4882a593Smuzhiyun BD71828_INT_RTC, 244*4882a593Smuzhiyun #define BD71828_INT_RTC_MASK BIT(BD71828_INT_RTC) 245*4882a593Smuzhiyun }; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun /* Interrupts */ 248*4882a593Smuzhiyun enum { 249*4882a593Smuzhiyun /* BUCK reg interrupts */ 250*4882a593Smuzhiyun BD71828_INT_BUCK1_OCP, 251*4882a593Smuzhiyun BD71828_INT_BUCK2_OCP, 252*4882a593Smuzhiyun BD71828_INT_BUCK3_OCP, 253*4882a593Smuzhiyun BD71828_INT_BUCK4_OCP, 254*4882a593Smuzhiyun BD71828_INT_BUCK5_OCP, 255*4882a593Smuzhiyun BD71828_INT_BUCK6_OCP, 256*4882a593Smuzhiyun BD71828_INT_BUCK7_OCP, 257*4882a593Smuzhiyun BD71828_INT_PGFAULT, 258*4882a593Smuzhiyun /* DCIN1 interrupts */ 259*4882a593Smuzhiyun BD71828_INT_DCIN_DET, 260*4882a593Smuzhiyun BD71828_INT_DCIN_RMV, 261*4882a593Smuzhiyun BD71828_INT_CLPS_OUT, 262*4882a593Smuzhiyun BD71828_INT_CLPS_IN, 263*4882a593Smuzhiyun /* DCIN2 interrupts */ 264*4882a593Smuzhiyun BD71828_INT_DCIN_MON_RES, 265*4882a593Smuzhiyun BD71828_INT_DCIN_MON_DET, 266*4882a593Smuzhiyun BD71828_INT_LONGPUSH, 267*4882a593Smuzhiyun BD71828_INT_MIDPUSH, 268*4882a593Smuzhiyun BD71828_INT_SHORTPUSH, 269*4882a593Smuzhiyun BD71828_INT_PUSH, 270*4882a593Smuzhiyun BD71828_INT_WDOG, 271*4882a593Smuzhiyun BD71828_INT_SWRESET, 272*4882a593Smuzhiyun /* Vsys */ 273*4882a593Smuzhiyun BD71828_INT_VSYS_UV_RES, 274*4882a593Smuzhiyun BD71828_INT_VSYS_UV_DET, 275*4882a593Smuzhiyun BD71828_INT_VSYS_LOW_RES, 276*4882a593Smuzhiyun BD71828_INT_VSYS_LOW_DET, 277*4882a593Smuzhiyun BD71828_INT_VSYS_HALL_IN, 278*4882a593Smuzhiyun BD71828_INT_VSYS_HALL_TOGGLE, 279*4882a593Smuzhiyun BD71828_INT_VSYS_MON_RES, 280*4882a593Smuzhiyun BD71828_INT_VSYS_MON_DET, 281*4882a593Smuzhiyun /* Charger */ 282*4882a593Smuzhiyun BD71828_INT_CHG_DCIN_ILIM, 283*4882a593Smuzhiyun BD71828_INT_CHG_TOPOFF_TO_DONE, 284*4882a593Smuzhiyun BD71828_INT_CHG_WDG_TEMP, 285*4882a593Smuzhiyun BD71828_INT_CHG_WDG_TIME, 286*4882a593Smuzhiyun BD71828_INT_CHG_RECHARGE_RES, 287*4882a593Smuzhiyun BD71828_INT_CHG_RECHARGE_DET, 288*4882a593Smuzhiyun BD71828_INT_CHG_RANGED_TEMP_TRANSITION, 289*4882a593Smuzhiyun BD71828_INT_CHG_STATE_TRANSITION, 290*4882a593Smuzhiyun /* Battery */ 291*4882a593Smuzhiyun BD71828_INT_BAT_TEMP_NORMAL, 292*4882a593Smuzhiyun BD71828_INT_BAT_TEMP_ERANGE, 293*4882a593Smuzhiyun BD71828_INT_BAT_TEMP_WARN, 294*4882a593Smuzhiyun BD71828_INT_BAT_REMOVED, 295*4882a593Smuzhiyun BD71828_INT_BAT_DETECTED, 296*4882a593Smuzhiyun BD71828_INT_THERM_REMOVED, 297*4882a593Smuzhiyun BD71828_INT_THERM_DETECTED, 298*4882a593Smuzhiyun /* Battery Mon 1 */ 299*4882a593Smuzhiyun BD71828_INT_BAT_DEAD, 300*4882a593Smuzhiyun BD71828_INT_BAT_SHORTC_RES, 301*4882a593Smuzhiyun BD71828_INT_BAT_SHORTC_DET, 302*4882a593Smuzhiyun BD71828_INT_BAT_LOW_VOLT_RES, 303*4882a593Smuzhiyun BD71828_INT_BAT_LOW_VOLT_DET, 304*4882a593Smuzhiyun BD71828_INT_BAT_OVER_VOLT_RES, 305*4882a593Smuzhiyun BD71828_INT_BAT_OVER_VOLT_DET, 306*4882a593Smuzhiyun /* Battery Mon 2 */ 307*4882a593Smuzhiyun BD71828_INT_BAT_MON_RES, 308*4882a593Smuzhiyun BD71828_INT_BAT_MON_DET, 309*4882a593Smuzhiyun /* Battery Mon 3 (Coulomb counter) */ 310*4882a593Smuzhiyun BD71828_INT_BAT_CC_MON1, 311*4882a593Smuzhiyun BD71828_INT_BAT_CC_MON2, 312*4882a593Smuzhiyun BD71828_INT_BAT_CC_MON3, 313*4882a593Smuzhiyun /* Battery Mon 4 */ 314*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_1_RES, 315*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_1_DET, 316*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_2_RES, 317*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_2_DET, 318*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_3_RES, 319*4882a593Smuzhiyun BD71828_INT_BAT_OVER_CURR_3_DET, 320*4882a593Smuzhiyun /* Temperature */ 321*4882a593Smuzhiyun BD71828_INT_TEMP_BAT_LOW_RES, 322*4882a593Smuzhiyun BD71828_INT_TEMP_BAT_LOW_DET, 323*4882a593Smuzhiyun BD71828_INT_TEMP_BAT_HI_RES, 324*4882a593Smuzhiyun BD71828_INT_TEMP_BAT_HI_DET, 325*4882a593Smuzhiyun BD71828_INT_TEMP_CHIP_OVER_125_RES, 326*4882a593Smuzhiyun BD71828_INT_TEMP_CHIP_OVER_125_DET, 327*4882a593Smuzhiyun BD71828_INT_TEMP_CHIP_OVER_VF_DET, 328*4882a593Smuzhiyun BD71828_INT_TEMP_CHIP_OVER_VF_RES, 329*4882a593Smuzhiyun /* RTC Alarm */ 330*4882a593Smuzhiyun BD71828_INT_RTC0, 331*4882a593Smuzhiyun BD71828_INT_RTC1, 332*4882a593Smuzhiyun BD71828_INT_RTC2, 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun #define BD71828_INT_BUCK1_OCP_MASK 0x1 336*4882a593Smuzhiyun #define BD71828_INT_BUCK2_OCP_MASK 0x2 337*4882a593Smuzhiyun #define BD71828_INT_BUCK3_OCP_MASK 0x4 338*4882a593Smuzhiyun #define BD71828_INT_BUCK4_OCP_MASK 0x8 339*4882a593Smuzhiyun #define BD71828_INT_BUCK5_OCP_MASK 0x10 340*4882a593Smuzhiyun #define BD71828_INT_BUCK6_OCP_MASK 0x20 341*4882a593Smuzhiyun #define BD71828_INT_BUCK7_OCP_MASK 0x40 342*4882a593Smuzhiyun #define BD71828_INT_PGFAULT_MASK 0x80 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun #define BD71828_INT_DCIN_DET_MASK 0x1 345*4882a593Smuzhiyun #define BD71828_INT_DCIN_RMV_MASK 0x2 346*4882a593Smuzhiyun #define BD71828_INT_CLPS_OUT_MASK 0x4 347*4882a593Smuzhiyun #define BD71828_INT_CLPS_IN_MASK 0x8 348*4882a593Smuzhiyun /* DCIN2 interrupts */ 349*4882a593Smuzhiyun #define BD71828_INT_DCIN_MON_RES_MASK 0x1 350*4882a593Smuzhiyun #define BD71828_INT_DCIN_MON_DET_MASK 0x2 351*4882a593Smuzhiyun #define BD71828_INT_LONGPUSH_MASK 0x4 352*4882a593Smuzhiyun #define BD71828_INT_MIDPUSH_MASK 0x8 353*4882a593Smuzhiyun #define BD71828_INT_SHORTPUSH_MASK 0x10 354*4882a593Smuzhiyun #define BD71828_INT_PUSH_MASK 0x20 355*4882a593Smuzhiyun #define BD71828_INT_WDOG_MASK 0x40 356*4882a593Smuzhiyun #define BD71828_INT_SWRESET_MASK 0x80 357*4882a593Smuzhiyun /* Vsys */ 358*4882a593Smuzhiyun #define BD71828_INT_VSYS_UV_RES_MASK 0x1 359*4882a593Smuzhiyun #define BD71828_INT_VSYS_UV_DET_MASK 0x2 360*4882a593Smuzhiyun #define BD71828_INT_VSYS_LOW_RES_MASK 0x4 361*4882a593Smuzhiyun #define BD71828_INT_VSYS_LOW_DET_MASK 0x8 362*4882a593Smuzhiyun #define BD71828_INT_VSYS_HALL_IN_MASK 0x10 363*4882a593Smuzhiyun #define BD71828_INT_VSYS_HALL_TOGGLE_MASK 0x20 364*4882a593Smuzhiyun #define BD71828_INT_VSYS_MON_RES_MASK 0x40 365*4882a593Smuzhiyun #define BD71828_INT_VSYS_MON_DET_MASK 0x80 366*4882a593Smuzhiyun /* Charger */ 367*4882a593Smuzhiyun #define BD71828_INT_CHG_DCIN_ILIM_MASK 0x1 368*4882a593Smuzhiyun #define BD71828_INT_CHG_TOPOFF_TO_DONE_MASK 0x2 369*4882a593Smuzhiyun #define BD71828_INT_CHG_WDG_TEMP_MASK 0x4 370*4882a593Smuzhiyun #define BD71828_INT_CHG_WDG_TIME_MASK 0x8 371*4882a593Smuzhiyun #define BD71828_INT_CHG_RECHARGE_RES_MASK 0x10 372*4882a593Smuzhiyun #define BD71828_INT_CHG_RECHARGE_DET_MASK 0x20 373*4882a593Smuzhiyun #define BD71828_INT_CHG_RANGED_TEMP_TRANSITION_MASK 0x40 374*4882a593Smuzhiyun #define BD71828_INT_CHG_STATE_TRANSITION_MASK 0x80 375*4882a593Smuzhiyun /* Battery */ 376*4882a593Smuzhiyun #define BD71828_INT_BAT_TEMP_NORMAL_MASK 0x1 377*4882a593Smuzhiyun #define BD71828_INT_BAT_TEMP_ERANGE_MASK 0x2 378*4882a593Smuzhiyun #define BD71828_INT_BAT_TEMP_WARN_MASK 0x4 379*4882a593Smuzhiyun #define BD71828_INT_BAT_REMOVED_MASK 0x10 380*4882a593Smuzhiyun #define BD71828_INT_BAT_DETECTED_MASK 0x20 381*4882a593Smuzhiyun #define BD71828_INT_THERM_REMOVED_MASK 0x40 382*4882a593Smuzhiyun #define BD71828_INT_THERM_DETECTED_MASK 0x80 383*4882a593Smuzhiyun /* Battery Mon 1 */ 384*4882a593Smuzhiyun #define BD71828_INT_BAT_DEAD_MASK 0x2 385*4882a593Smuzhiyun #define BD71828_INT_BAT_SHORTC_RES_MASK 0x4 386*4882a593Smuzhiyun #define BD71828_INT_BAT_SHORTC_DET_MASK 0x8 387*4882a593Smuzhiyun #define BD71828_INT_BAT_LOW_VOLT_RES_MASK 0x10 388*4882a593Smuzhiyun #define BD71828_INT_BAT_LOW_VOLT_DET_MASK 0x20 389*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_VOLT_RES_MASK 0x40 390*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_VOLT_DET_MASK 0x80 391*4882a593Smuzhiyun /* Battery Mon 2 */ 392*4882a593Smuzhiyun #define BD71828_INT_BAT_MON_RES_MASK 0x1 393*4882a593Smuzhiyun #define BD71828_INT_BAT_MON_DET_MASK 0x2 394*4882a593Smuzhiyun /* Battery Mon 3 (Coulomb counter) */ 395*4882a593Smuzhiyun #define BD71828_INT_BAT_CC_MON1_MASK 0x1 396*4882a593Smuzhiyun #define BD71828_INT_BAT_CC_MON2_MASK 0x2 397*4882a593Smuzhiyun #define BD71828_INT_BAT_CC_MON3_MASK 0x4 398*4882a593Smuzhiyun /* Battery Mon 4 */ 399*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_1_RES_MASK 0x1 400*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_1_DET_MASK 0x2 401*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_2_RES_MASK 0x4 402*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_2_DET_MASK 0x8 403*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_3_RES_MASK 0x10 404*4882a593Smuzhiyun #define BD71828_INT_BAT_OVER_CURR_3_DET_MASK 0x20 405*4882a593Smuzhiyun /* Temperature */ 406*4882a593Smuzhiyun #define BD71828_INT_TEMP_BAT_LOW_RES_MASK 0x1 407*4882a593Smuzhiyun #define BD71828_INT_TEMP_BAT_LOW_DET_MASK 0x2 408*4882a593Smuzhiyun #define BD71828_INT_TEMP_BAT_HI_RES_MASK 0x4 409*4882a593Smuzhiyun #define BD71828_INT_TEMP_BAT_HI_DET_MASK 0x8 410*4882a593Smuzhiyun #define BD71828_INT_TEMP_CHIP_OVER_125_RES_MASK 0x10 411*4882a593Smuzhiyun #define BD71828_INT_TEMP_CHIP_OVER_125_DET_MASK 0x20 412*4882a593Smuzhiyun #define BD71828_INT_TEMP_CHIP_OVER_VF_RES_MASK 0x40 413*4882a593Smuzhiyun #define BD71828_INT_TEMP_CHIP_OVER_VF_DET_MASK 0x80 414*4882a593Smuzhiyun /* RTC Alarm */ 415*4882a593Smuzhiyun #define BD71828_INT_RTC0_MASK 0x1 416*4882a593Smuzhiyun #define BD71828_INT_RTC1_MASK 0x2 417*4882a593Smuzhiyun #define BD71828_INT_RTC2_MASK 0x4 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun #define BD71828_OUT_TYPE_MASK 0x2 420*4882a593Smuzhiyun #define BD71828_OUT_TYPE_OPEN_DRAIN 0x0 421*4882a593Smuzhiyun #define BD71828_OUT_TYPE_CMOS 0x2 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun #endif /* __LINUX_MFD_BD71828_H__ */ 424