1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* Copyright (C) 2018 ROHM Semiconductors */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef __LINUX_MFD_BD718XX_H__ 5*4882a593Smuzhiyun #define __LINUX_MFD_BD718XX_H__ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include <linux/mfd/rohm-generic.h> 8*4882a593Smuzhiyun #include <linux/regmap.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun enum { 11*4882a593Smuzhiyun BD718XX_BUCK1 = 0, 12*4882a593Smuzhiyun BD718XX_BUCK2, 13*4882a593Smuzhiyun BD718XX_BUCK3, 14*4882a593Smuzhiyun BD718XX_BUCK4, 15*4882a593Smuzhiyun BD718XX_BUCK5, 16*4882a593Smuzhiyun BD718XX_BUCK6, 17*4882a593Smuzhiyun BD718XX_BUCK7, 18*4882a593Smuzhiyun BD718XX_BUCK8, 19*4882a593Smuzhiyun BD718XX_LDO1, 20*4882a593Smuzhiyun BD718XX_LDO2, 21*4882a593Smuzhiyun BD718XX_LDO3, 22*4882a593Smuzhiyun BD718XX_LDO4, 23*4882a593Smuzhiyun BD718XX_LDO5, 24*4882a593Smuzhiyun BD718XX_LDO6, 25*4882a593Smuzhiyun BD718XX_LDO7, 26*4882a593Smuzhiyun BD718XX_REGULATOR_AMOUNT, 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* Common voltage configurations */ 30*4882a593Smuzhiyun #define BD718XX_DVS_BUCK_VOLTAGE_NUM 0x3D 31*4882a593Smuzhiyun #define BD718XX_4TH_NODVS_BUCK_VOLTAGE_NUM 0x3D 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define BD718XX_LDO1_VOLTAGE_NUM 0x08 34*4882a593Smuzhiyun #define BD718XX_LDO2_VOLTAGE_NUM 0x02 35*4882a593Smuzhiyun #define BD718XX_LDO3_VOLTAGE_NUM 0x10 36*4882a593Smuzhiyun #define BD718XX_LDO4_VOLTAGE_NUM 0x0A 37*4882a593Smuzhiyun #define BD718XX_LDO6_VOLTAGE_NUM 0x0A 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* BD71837 specific voltage configurations */ 40*4882a593Smuzhiyun #define BD71837_BUCK5_VOLTAGE_NUM 0x10 41*4882a593Smuzhiyun #define BD71837_BUCK6_VOLTAGE_NUM 0x04 42*4882a593Smuzhiyun #define BD71837_BUCK7_VOLTAGE_NUM 0x08 43*4882a593Smuzhiyun #define BD71837_LDO5_VOLTAGE_NUM 0x10 44*4882a593Smuzhiyun #define BD71837_LDO7_VOLTAGE_NUM 0x10 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun /* BD71847 specific voltage configurations */ 47*4882a593Smuzhiyun #define BD71847_BUCK3_VOLTAGE_NUM 0x18 48*4882a593Smuzhiyun #define BD71847_BUCK4_VOLTAGE_NUM 0x08 49*4882a593Smuzhiyun #define BD71847_LDO5_VOLTAGE_NUM 0x20 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* Registers specific to BD71837 */ 52*4882a593Smuzhiyun enum { 53*4882a593Smuzhiyun BD71837_REG_BUCK3_CTRL = 0x07, 54*4882a593Smuzhiyun BD71837_REG_BUCK4_CTRL = 0x08, 55*4882a593Smuzhiyun BD71837_REG_BUCK3_VOLT_RUN = 0x12, 56*4882a593Smuzhiyun BD71837_REG_BUCK4_VOLT_RUN = 0x13, 57*4882a593Smuzhiyun BD71837_REG_LDO7_VOLT = 0x1E, 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* Registers common for BD71837 and BD71847 */ 61*4882a593Smuzhiyun enum { 62*4882a593Smuzhiyun BD718XX_REG_REV = 0x00, 63*4882a593Smuzhiyun BD718XX_REG_SWRESET = 0x01, 64*4882a593Smuzhiyun BD718XX_REG_I2C_DEV = 0x02, 65*4882a593Smuzhiyun BD718XX_REG_PWRCTRL0 = 0x03, 66*4882a593Smuzhiyun BD718XX_REG_PWRCTRL1 = 0x04, 67*4882a593Smuzhiyun BD718XX_REG_BUCK1_CTRL = 0x05, 68*4882a593Smuzhiyun BD718XX_REG_BUCK2_CTRL = 0x06, 69*4882a593Smuzhiyun BD718XX_REG_1ST_NODVS_BUCK_CTRL = 0x09, 70*4882a593Smuzhiyun BD718XX_REG_2ND_NODVS_BUCK_CTRL = 0x0A, 71*4882a593Smuzhiyun BD718XX_REG_3RD_NODVS_BUCK_CTRL = 0x0B, 72*4882a593Smuzhiyun BD718XX_REG_4TH_NODVS_BUCK_CTRL = 0x0C, 73*4882a593Smuzhiyun BD718XX_REG_BUCK1_VOLT_RUN = 0x0D, 74*4882a593Smuzhiyun BD718XX_REG_BUCK1_VOLT_IDLE = 0x0E, 75*4882a593Smuzhiyun BD718XX_REG_BUCK1_VOLT_SUSP = 0x0F, 76*4882a593Smuzhiyun BD718XX_REG_BUCK2_VOLT_RUN = 0x10, 77*4882a593Smuzhiyun BD718XX_REG_BUCK2_VOLT_IDLE = 0x11, 78*4882a593Smuzhiyun BD718XX_REG_1ST_NODVS_BUCK_VOLT = 0x14, 79*4882a593Smuzhiyun BD718XX_REG_2ND_NODVS_BUCK_VOLT = 0x15, 80*4882a593Smuzhiyun BD718XX_REG_3RD_NODVS_BUCK_VOLT = 0x16, 81*4882a593Smuzhiyun BD718XX_REG_4TH_NODVS_BUCK_VOLT = 0x17, 82*4882a593Smuzhiyun BD718XX_REG_LDO1_VOLT = 0x18, 83*4882a593Smuzhiyun BD718XX_REG_LDO2_VOLT = 0x19, 84*4882a593Smuzhiyun BD718XX_REG_LDO3_VOLT = 0x1A, 85*4882a593Smuzhiyun BD718XX_REG_LDO4_VOLT = 0x1B, 86*4882a593Smuzhiyun BD718XX_REG_LDO5_VOLT = 0x1C, 87*4882a593Smuzhiyun BD718XX_REG_LDO6_VOLT = 0x1D, 88*4882a593Smuzhiyun BD718XX_REG_TRANS_COND0 = 0x1F, 89*4882a593Smuzhiyun BD718XX_REG_TRANS_COND1 = 0x20, 90*4882a593Smuzhiyun BD718XX_REG_VRFAULTEN = 0x21, 91*4882a593Smuzhiyun BD718XX_REG_MVRFLTMASK0 = 0x22, 92*4882a593Smuzhiyun BD718XX_REG_MVRFLTMASK1 = 0x23, 93*4882a593Smuzhiyun BD718XX_REG_MVRFLTMASK2 = 0x24, 94*4882a593Smuzhiyun BD718XX_REG_RCVCFG = 0x25, 95*4882a593Smuzhiyun BD718XX_REG_RCVNUM = 0x26, 96*4882a593Smuzhiyun BD718XX_REG_PWRONCONFIG0 = 0x27, 97*4882a593Smuzhiyun BD718XX_REG_PWRONCONFIG1 = 0x28, 98*4882a593Smuzhiyun BD718XX_REG_RESETSRC = 0x29, 99*4882a593Smuzhiyun BD718XX_REG_MIRQ = 0x2A, 100*4882a593Smuzhiyun BD718XX_REG_IRQ = 0x2B, 101*4882a593Smuzhiyun BD718XX_REG_IN_MON = 0x2C, 102*4882a593Smuzhiyun BD718XX_REG_POW_STATE = 0x2D, 103*4882a593Smuzhiyun BD718XX_REG_OUT32K = 0x2E, 104*4882a593Smuzhiyun BD718XX_REG_REGLOCK = 0x2F, 105*4882a593Smuzhiyun BD718XX_REG_OTPVER = 0xFF, 106*4882a593Smuzhiyun BD718XX_MAX_REGISTER = 0x100, 107*4882a593Smuzhiyun }; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #define REGLOCK_PWRSEQ 0x1 110*4882a593Smuzhiyun #define REGLOCK_VREG 0x10 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /* Generic BUCK control masks */ 113*4882a593Smuzhiyun #define BD718XX_BUCK_SEL 0x02 114*4882a593Smuzhiyun #define BD718XX_BUCK_EN 0x01 115*4882a593Smuzhiyun #define BD718XX_BUCK_RUN_ON 0x04 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* Generic LDO masks */ 118*4882a593Smuzhiyun #define BD718XX_LDO_SEL 0x80 119*4882a593Smuzhiyun #define BD718XX_LDO_EN 0x40 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun /* BD71837 BUCK ramp rate CTRL reg bits */ 122*4882a593Smuzhiyun #define BUCK_RAMPRATE_MASK 0xC0 123*4882a593Smuzhiyun #define BUCK_RAMPRATE_10P00MV 0x0 124*4882a593Smuzhiyun #define BUCK_RAMPRATE_5P00MV 0x1 125*4882a593Smuzhiyun #define BUCK_RAMPRATE_2P50MV 0x2 126*4882a593Smuzhiyun #define BUCK_RAMPRATE_1P25MV 0x3 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define DVS_BUCK_RUN_MASK 0x3F 129*4882a593Smuzhiyun #define DVS_BUCK_SUSP_MASK 0x3F 130*4882a593Smuzhiyun #define DVS_BUCK_IDLE_MASK 0x3F 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #define BD718XX_1ST_NODVS_BUCK_MASK 0x07 133*4882a593Smuzhiyun #define BD718XX_3RD_NODVS_BUCK_MASK 0x07 134*4882a593Smuzhiyun #define BD718XX_4TH_NODVS_BUCK_MASK 0x3F 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define BD71847_BUCK3_MASK 0x07 137*4882a593Smuzhiyun #define BD71847_BUCK3_RANGE_MASK 0xC0 138*4882a593Smuzhiyun #define BD71847_BUCK4_MASK 0x03 139*4882a593Smuzhiyun #define BD71847_BUCK4_RANGE_MASK 0x40 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define BD71837_BUCK5_MASK 0x07 142*4882a593Smuzhiyun #define BD71837_BUCK5_RANGE_MASK 0x80 143*4882a593Smuzhiyun #define BD71837_BUCK6_MASK 0x03 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define BD718XX_LDO1_MASK 0x03 146*4882a593Smuzhiyun #define BD718XX_LDO1_RANGE_MASK 0x20 147*4882a593Smuzhiyun #define BD718XX_LDO2_MASK 0x20 148*4882a593Smuzhiyun #define BD718XX_LDO3_MASK 0x0F 149*4882a593Smuzhiyun #define BD718XX_LDO4_MASK 0x0F 150*4882a593Smuzhiyun #define BD718XX_LDO6_MASK 0x0F 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define BD71837_LDO5_MASK 0x0F 153*4882a593Smuzhiyun #define BD71847_LDO5_MASK 0x0F 154*4882a593Smuzhiyun #define BD71847_LDO5_RANGE_MASK 0x20 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define BD71837_LDO7_MASK 0x0F 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun /* BD718XX Voltage monitoring masks */ 159*4882a593Smuzhiyun #define BD718XX_BUCK1_VRMON80 0x1 160*4882a593Smuzhiyun #define BD718XX_BUCK1_VRMON130 0x2 161*4882a593Smuzhiyun #define BD718XX_BUCK2_VRMON80 0x4 162*4882a593Smuzhiyun #define BD718XX_BUCK2_VRMON130 0x8 163*4882a593Smuzhiyun #define BD718XX_1ST_NODVS_BUCK_VRMON80 0x1 164*4882a593Smuzhiyun #define BD718XX_1ST_NODVS_BUCK_VRMON130 0x2 165*4882a593Smuzhiyun #define BD718XX_2ND_NODVS_BUCK_VRMON80 0x4 166*4882a593Smuzhiyun #define BD718XX_2ND_NODVS_BUCK_VRMON130 0x8 167*4882a593Smuzhiyun #define BD718XX_3RD_NODVS_BUCK_VRMON80 0x10 168*4882a593Smuzhiyun #define BD718XX_3RD_NODVS_BUCK_VRMON130 0x20 169*4882a593Smuzhiyun #define BD718XX_4TH_NODVS_BUCK_VRMON80 0x40 170*4882a593Smuzhiyun #define BD718XX_4TH_NODVS_BUCK_VRMON130 0x80 171*4882a593Smuzhiyun #define BD718XX_LDO1_VRMON80 0x1 172*4882a593Smuzhiyun #define BD718XX_LDO2_VRMON80 0x2 173*4882a593Smuzhiyun #define BD718XX_LDO3_VRMON80 0x4 174*4882a593Smuzhiyun #define BD718XX_LDO4_VRMON80 0x8 175*4882a593Smuzhiyun #define BD718XX_LDO5_VRMON80 0x10 176*4882a593Smuzhiyun #define BD718XX_LDO6_VRMON80 0x20 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun /* BD71837 specific voltage monitoring masks */ 179*4882a593Smuzhiyun #define BD71837_BUCK3_VRMON80 0x10 180*4882a593Smuzhiyun #define BD71837_BUCK3_VRMON130 0x20 181*4882a593Smuzhiyun #define BD71837_BUCK4_VRMON80 0x40 182*4882a593Smuzhiyun #define BD71837_BUCK4_VRMON130 0x80 183*4882a593Smuzhiyun #define BD71837_LDO7_VRMON80 0x40 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun /* BD718XX_REG_IRQ bits */ 186*4882a593Smuzhiyun #define IRQ_SWRST 0x40 187*4882a593Smuzhiyun #define IRQ_PWRON_S 0x20 188*4882a593Smuzhiyun #define IRQ_PWRON_L 0x10 189*4882a593Smuzhiyun #define IRQ_PWRON 0x08 190*4882a593Smuzhiyun #define IRQ_WDOG 0x04 191*4882a593Smuzhiyun #define IRQ_ON_REQ 0x02 192*4882a593Smuzhiyun #define IRQ_STBY_REQ 0x01 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun /* ROHM BD718XX irqs */ 195*4882a593Smuzhiyun enum { 196*4882a593Smuzhiyun BD718XX_INT_STBY_REQ, 197*4882a593Smuzhiyun BD718XX_INT_ON_REQ, 198*4882a593Smuzhiyun BD718XX_INT_WDOG, 199*4882a593Smuzhiyun BD718XX_INT_PWRBTN, 200*4882a593Smuzhiyun BD718XX_INT_PWRBTN_L, 201*4882a593Smuzhiyun BD718XX_INT_PWRBTN_S, 202*4882a593Smuzhiyun BD718XX_INT_SWRST 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun /* ROHM BD718XX interrupt masks */ 206*4882a593Smuzhiyun #define BD718XX_INT_SWRST_MASK 0x40 207*4882a593Smuzhiyun #define BD718XX_INT_PWRBTN_S_MASK 0x20 208*4882a593Smuzhiyun #define BD718XX_INT_PWRBTN_L_MASK 0x10 209*4882a593Smuzhiyun #define BD718XX_INT_PWRBTN_MASK 0x8 210*4882a593Smuzhiyun #define BD718XX_INT_WDOG_MASK 0x4 211*4882a593Smuzhiyun #define BD718XX_INT_ON_REQ_MASK 0x2 212*4882a593Smuzhiyun #define BD718XX_INT_STBY_REQ_MASK 0x1 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun /* Register write induced reset settings */ 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* 217*4882a593Smuzhiyun * Even though the bit zero is not SWRESET type we still want to write zero 218*4882a593Smuzhiyun * to it when changing type. Bit zero is 'SWRESET' trigger bit and if we 219*4882a593Smuzhiyun * write 1 to it we will trigger the action. So always write 0 to it when 220*4882a593Smuzhiyun * changning SWRESET action - no matter what we read from it. 221*4882a593Smuzhiyun */ 222*4882a593Smuzhiyun #define BD718XX_SWRESET_TYPE_MASK 7 223*4882a593Smuzhiyun #define BD718XX_SWRESET_TYPE_DISABLED 0 224*4882a593Smuzhiyun #define BD718XX_SWRESET_TYPE_COLD 4 225*4882a593Smuzhiyun #define BD718XX_SWRESET_TYPE_WARM 6 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define BD718XX_SWRESET_RESET_MASK 1 228*4882a593Smuzhiyun #define BD718XX_SWRESET_RESET 1 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun /* Poweroff state transition conditions */ 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun #define BD718XX_ON_REQ_POWEROFF_MASK 1 233*4882a593Smuzhiyun #define BD718XX_SWRESET_POWEROFF_MASK 2 234*4882a593Smuzhiyun #define BD718XX_WDOG_POWEROFF_MASK 4 235*4882a593Smuzhiyun #define BD718XX_KEY_L_POWEROFF_MASK 8 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun #define BD718XX_POWOFF_TO_SNVS 0 238*4882a593Smuzhiyun #define BD718XX_POWOFF_TO_RDY 0xF 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun #define BD718XX_POWOFF_TIME_MASK 0xF0 241*4882a593Smuzhiyun enum { 242*4882a593Smuzhiyun BD718XX_POWOFF_TIME_5MS = 0, 243*4882a593Smuzhiyun BD718XX_POWOFF_TIME_10MS, 244*4882a593Smuzhiyun BD718XX_POWOFF_TIME_15MS, 245*4882a593Smuzhiyun BD718XX_POWOFF_TIME_20MS, 246*4882a593Smuzhiyun BD718XX_POWOFF_TIME_25MS, 247*4882a593Smuzhiyun BD718XX_POWOFF_TIME_30MS, 248*4882a593Smuzhiyun BD718XX_POWOFF_TIME_35MS, 249*4882a593Smuzhiyun BD718XX_POWOFF_TIME_40MS, 250*4882a593Smuzhiyun BD718XX_POWOFF_TIME_45MS, 251*4882a593Smuzhiyun BD718XX_POWOFF_TIME_50MS, 252*4882a593Smuzhiyun BD718XX_POWOFF_TIME_75MS, 253*4882a593Smuzhiyun BD718XX_POWOFF_TIME_100MS, 254*4882a593Smuzhiyun BD718XX_POWOFF_TIME_250MS, 255*4882a593Smuzhiyun BD718XX_POWOFF_TIME_500MS, 256*4882a593Smuzhiyun BD718XX_POWOFF_TIME_750MS, 257*4882a593Smuzhiyun BD718XX_POWOFF_TIME_1500MS 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /* Poweron sequence state transition conditions */ 261*4882a593Smuzhiyun #define BD718XX_RDY_TO_SNVS_MASK 0xF 262*4882a593Smuzhiyun #define BD718XX_SNVS_TO_RUN_MASK 0xF0 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun #define BD718XX_PWR_TRIG_KEY_L 1 265*4882a593Smuzhiyun #define BD718XX_PWR_TRIG_KEY_S 2 266*4882a593Smuzhiyun #define BD718XX_PWR_TRIG_PMIC_ON 4 267*4882a593Smuzhiyun #define BD718XX_PWR_TRIG_VSYS_UVLO 8 268*4882a593Smuzhiyun #define BD718XX_RDY_TO_SNVS_SIFT 0 269*4882a593Smuzhiyun #define BD718XX_SNVS_TO_RUN_SIFT 4 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun #define BD718XX_PWRBTN_PRESS_DURATION_MASK 0xF 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun /* Timeout value for detecting short press */ 274*4882a593Smuzhiyun enum { 275*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_10MS = 0, 276*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_500MS, 277*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_1000MS, 278*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_1500MS, 279*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_2000MS, 280*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_2500MS, 281*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_3000MS, 282*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_3500MS, 283*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_4000MS, 284*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_4500MS, 285*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_5000MS, 286*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_5500MS, 287*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_6000MS, 288*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_6500MS, 289*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_7000MS, 290*4882a593Smuzhiyun BD718XX_PWRBTN_SHORT_PRESS_7500MS 291*4882a593Smuzhiyun }; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun /* Timeout value for detecting LONG press */ 294*4882a593Smuzhiyun enum { 295*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_10MS = 0, 296*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_1S, 297*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_2S, 298*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_3S, 299*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_4S, 300*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_5S, 301*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_6S, 302*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_7S, 303*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_8S, 304*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_9S, 305*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_10S, 306*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_11S, 307*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_12S, 308*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_13S, 309*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_14S, 310*4882a593Smuzhiyun BD718XX_PWRBTN_LONG_PRESS_15S 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun struct bd718xx { 314*4882a593Smuzhiyun /* 315*4882a593Smuzhiyun * Please keep this as the first member here as some 316*4882a593Smuzhiyun * drivers (clk) supporting more than one chip may only know this 317*4882a593Smuzhiyun * generic struct 'struct rohm_regmap_dev' and assume it is 318*4882a593Smuzhiyun * the first chunk of parent device's private data. 319*4882a593Smuzhiyun */ 320*4882a593Smuzhiyun struct rohm_regmap_dev chip; 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun int chip_irq; 323*4882a593Smuzhiyun struct regmap_irq_chip_data *irq_data; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun #endif /* __LINUX_MFD_BD718XX_H__ */ 327