1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * max77686-private.h - Voltage regulator driver for the Maxim 77686/802 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Samsung Electrnoics 6*4882a593Smuzhiyun * Chiwoong Byun <woong.byun@samsung.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __LINUX_MFD_MAX77686_PRIV_H 10*4882a593Smuzhiyun #define __LINUX_MFD_MAX77686_PRIV_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/i2c.h> 13*4882a593Smuzhiyun #include <linux/regmap.h> 14*4882a593Smuzhiyun #include <linux/module.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define MAX77686_REG_INVALID (0xff) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* MAX77686 PMIC registers */ 19*4882a593Smuzhiyun enum max77686_pmic_reg { 20*4882a593Smuzhiyun MAX77686_REG_DEVICE_ID = 0x00, 21*4882a593Smuzhiyun MAX77686_REG_INTSRC = 0x01, 22*4882a593Smuzhiyun MAX77686_REG_INT1 = 0x02, 23*4882a593Smuzhiyun MAX77686_REG_INT2 = 0x03, 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun MAX77686_REG_INT1MSK = 0x04, 26*4882a593Smuzhiyun MAX77686_REG_INT2MSK = 0x05, 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun MAX77686_REG_STATUS1 = 0x06, 29*4882a593Smuzhiyun MAX77686_REG_STATUS2 = 0x07, 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun MAX77686_REG_PWRON = 0x08, 32*4882a593Smuzhiyun MAX77686_REG_ONOFF_DELAY = 0x09, 33*4882a593Smuzhiyun MAX77686_REG_MRSTB = 0x0A, 34*4882a593Smuzhiyun /* Reserved: 0x0B-0x0F */ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun MAX77686_REG_BUCK1CTRL = 0x10, 37*4882a593Smuzhiyun MAX77686_REG_BUCK1OUT = 0x11, 38*4882a593Smuzhiyun MAX77686_REG_BUCK2CTRL1 = 0x12, 39*4882a593Smuzhiyun MAX77686_REG_BUCK234FREQ = 0x13, 40*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS1 = 0x14, 41*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS2 = 0x15, 42*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS3 = 0x16, 43*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS4 = 0x17, 44*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS5 = 0x18, 45*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS6 = 0x19, 46*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS7 = 0x1A, 47*4882a593Smuzhiyun MAX77686_REG_BUCK2DVS8 = 0x1B, 48*4882a593Smuzhiyun MAX77686_REG_BUCK3CTRL1 = 0x1C, 49*4882a593Smuzhiyun /* Reserved: 0x1D */ 50*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS1 = 0x1E, 51*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS2 = 0x1F, 52*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS3 = 0x20, 53*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS4 = 0x21, 54*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS5 = 0x22, 55*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS6 = 0x23, 56*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS7 = 0x24, 57*4882a593Smuzhiyun MAX77686_REG_BUCK3DVS8 = 0x25, 58*4882a593Smuzhiyun MAX77686_REG_BUCK4CTRL1 = 0x26, 59*4882a593Smuzhiyun /* Reserved: 0x27 */ 60*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS1 = 0x28, 61*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS2 = 0x29, 62*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS3 = 0x2A, 63*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS4 = 0x2B, 64*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS5 = 0x2C, 65*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS6 = 0x2D, 66*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS7 = 0x2E, 67*4882a593Smuzhiyun MAX77686_REG_BUCK4DVS8 = 0x2F, 68*4882a593Smuzhiyun MAX77686_REG_BUCK5CTRL = 0x30, 69*4882a593Smuzhiyun MAX77686_REG_BUCK5OUT = 0x31, 70*4882a593Smuzhiyun MAX77686_REG_BUCK6CTRL = 0x32, 71*4882a593Smuzhiyun MAX77686_REG_BUCK6OUT = 0x33, 72*4882a593Smuzhiyun MAX77686_REG_BUCK7CTRL = 0x34, 73*4882a593Smuzhiyun MAX77686_REG_BUCK7OUT = 0x35, 74*4882a593Smuzhiyun MAX77686_REG_BUCK8CTRL = 0x36, 75*4882a593Smuzhiyun MAX77686_REG_BUCK8OUT = 0x37, 76*4882a593Smuzhiyun MAX77686_REG_BUCK9CTRL = 0x38, 77*4882a593Smuzhiyun MAX77686_REG_BUCK9OUT = 0x39, 78*4882a593Smuzhiyun /* Reserved: 0x3A-0x3F */ 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun MAX77686_REG_LDO1CTRL1 = 0x40, 81*4882a593Smuzhiyun MAX77686_REG_LDO2CTRL1 = 0x41, 82*4882a593Smuzhiyun MAX77686_REG_LDO3CTRL1 = 0x42, 83*4882a593Smuzhiyun MAX77686_REG_LDO4CTRL1 = 0x43, 84*4882a593Smuzhiyun MAX77686_REG_LDO5CTRL1 = 0x44, 85*4882a593Smuzhiyun MAX77686_REG_LDO6CTRL1 = 0x45, 86*4882a593Smuzhiyun MAX77686_REG_LDO7CTRL1 = 0x46, 87*4882a593Smuzhiyun MAX77686_REG_LDO8CTRL1 = 0x47, 88*4882a593Smuzhiyun MAX77686_REG_LDO9CTRL1 = 0x48, 89*4882a593Smuzhiyun MAX77686_REG_LDO10CTRL1 = 0x49, 90*4882a593Smuzhiyun MAX77686_REG_LDO11CTRL1 = 0x4A, 91*4882a593Smuzhiyun MAX77686_REG_LDO12CTRL1 = 0x4B, 92*4882a593Smuzhiyun MAX77686_REG_LDO13CTRL1 = 0x4C, 93*4882a593Smuzhiyun MAX77686_REG_LDO14CTRL1 = 0x4D, 94*4882a593Smuzhiyun MAX77686_REG_LDO15CTRL1 = 0x4E, 95*4882a593Smuzhiyun MAX77686_REG_LDO16CTRL1 = 0x4F, 96*4882a593Smuzhiyun MAX77686_REG_LDO17CTRL1 = 0x50, 97*4882a593Smuzhiyun MAX77686_REG_LDO18CTRL1 = 0x51, 98*4882a593Smuzhiyun MAX77686_REG_LDO19CTRL1 = 0x52, 99*4882a593Smuzhiyun MAX77686_REG_LDO20CTRL1 = 0x53, 100*4882a593Smuzhiyun MAX77686_REG_LDO21CTRL1 = 0x54, 101*4882a593Smuzhiyun MAX77686_REG_LDO22CTRL1 = 0x55, 102*4882a593Smuzhiyun MAX77686_REG_LDO23CTRL1 = 0x56, 103*4882a593Smuzhiyun MAX77686_REG_LDO24CTRL1 = 0x57, 104*4882a593Smuzhiyun MAX77686_REG_LDO25CTRL1 = 0x58, 105*4882a593Smuzhiyun MAX77686_REG_LDO26CTRL1 = 0x59, 106*4882a593Smuzhiyun /* Reserved: 0x5A-0x5F */ 107*4882a593Smuzhiyun MAX77686_REG_LDO1CTRL2 = 0x60, 108*4882a593Smuzhiyun MAX77686_REG_LDO2CTRL2 = 0x61, 109*4882a593Smuzhiyun MAX77686_REG_LDO3CTRL2 = 0x62, 110*4882a593Smuzhiyun MAX77686_REG_LDO4CTRL2 = 0x63, 111*4882a593Smuzhiyun MAX77686_REG_LDO5CTRL2 = 0x64, 112*4882a593Smuzhiyun MAX77686_REG_LDO6CTRL2 = 0x65, 113*4882a593Smuzhiyun MAX77686_REG_LDO7CTRL2 = 0x66, 114*4882a593Smuzhiyun MAX77686_REG_LDO8CTRL2 = 0x67, 115*4882a593Smuzhiyun MAX77686_REG_LDO9CTRL2 = 0x68, 116*4882a593Smuzhiyun MAX77686_REG_LDO10CTRL2 = 0x69, 117*4882a593Smuzhiyun MAX77686_REG_LDO11CTRL2 = 0x6A, 118*4882a593Smuzhiyun MAX77686_REG_LDO12CTRL2 = 0x6B, 119*4882a593Smuzhiyun MAX77686_REG_LDO13CTRL2 = 0x6C, 120*4882a593Smuzhiyun MAX77686_REG_LDO14CTRL2 = 0x6D, 121*4882a593Smuzhiyun MAX77686_REG_LDO15CTRL2 = 0x6E, 122*4882a593Smuzhiyun MAX77686_REG_LDO16CTRL2 = 0x6F, 123*4882a593Smuzhiyun MAX77686_REG_LDO17CTRL2 = 0x70, 124*4882a593Smuzhiyun MAX77686_REG_LDO18CTRL2 = 0x71, 125*4882a593Smuzhiyun MAX77686_REG_LDO19CTRL2 = 0x72, 126*4882a593Smuzhiyun MAX77686_REG_LDO20CTRL2 = 0x73, 127*4882a593Smuzhiyun MAX77686_REG_LDO21CTRL2 = 0x74, 128*4882a593Smuzhiyun MAX77686_REG_LDO22CTRL2 = 0x75, 129*4882a593Smuzhiyun MAX77686_REG_LDO23CTRL2 = 0x76, 130*4882a593Smuzhiyun MAX77686_REG_LDO24CTRL2 = 0x77, 131*4882a593Smuzhiyun MAX77686_REG_LDO25CTRL2 = 0x78, 132*4882a593Smuzhiyun MAX77686_REG_LDO26CTRL2 = 0x79, 133*4882a593Smuzhiyun /* Reserved: 0x7A-0x7D */ 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun MAX77686_REG_BBAT_CHG = 0x7E, 136*4882a593Smuzhiyun MAX77686_REG_32KHZ = 0x7F, 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun MAX77686_REG_PMIC_END = 0x80, 139*4882a593Smuzhiyun }; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun enum max77686_rtc_reg { 142*4882a593Smuzhiyun MAX77686_RTC_INT = 0x00, 143*4882a593Smuzhiyun MAX77686_RTC_INTM = 0x01, 144*4882a593Smuzhiyun MAX77686_RTC_CONTROLM = 0x02, 145*4882a593Smuzhiyun MAX77686_RTC_CONTROL = 0x03, 146*4882a593Smuzhiyun MAX77686_RTC_UPDATE0 = 0x04, 147*4882a593Smuzhiyun /* Reserved: 0x5 */ 148*4882a593Smuzhiyun MAX77686_WTSR_SMPL_CNTL = 0x06, 149*4882a593Smuzhiyun MAX77686_RTC_SEC = 0x07, 150*4882a593Smuzhiyun MAX77686_RTC_MIN = 0x08, 151*4882a593Smuzhiyun MAX77686_RTC_HOUR = 0x09, 152*4882a593Smuzhiyun MAX77686_RTC_WEEKDAY = 0x0A, 153*4882a593Smuzhiyun MAX77686_RTC_MONTH = 0x0B, 154*4882a593Smuzhiyun MAX77686_RTC_YEAR = 0x0C, 155*4882a593Smuzhiyun MAX77686_RTC_DATE = 0x0D, 156*4882a593Smuzhiyun MAX77686_ALARM1_SEC = 0x0E, 157*4882a593Smuzhiyun MAX77686_ALARM1_MIN = 0x0F, 158*4882a593Smuzhiyun MAX77686_ALARM1_HOUR = 0x10, 159*4882a593Smuzhiyun MAX77686_ALARM1_WEEKDAY = 0x11, 160*4882a593Smuzhiyun MAX77686_ALARM1_MONTH = 0x12, 161*4882a593Smuzhiyun MAX77686_ALARM1_YEAR = 0x13, 162*4882a593Smuzhiyun MAX77686_ALARM1_DATE = 0x14, 163*4882a593Smuzhiyun MAX77686_ALARM2_SEC = 0x15, 164*4882a593Smuzhiyun MAX77686_ALARM2_MIN = 0x16, 165*4882a593Smuzhiyun MAX77686_ALARM2_HOUR = 0x17, 166*4882a593Smuzhiyun MAX77686_ALARM2_WEEKDAY = 0x18, 167*4882a593Smuzhiyun MAX77686_ALARM2_MONTH = 0x19, 168*4882a593Smuzhiyun MAX77686_ALARM2_YEAR = 0x1A, 169*4882a593Smuzhiyun MAX77686_ALARM2_DATE = 0x1B, 170*4882a593Smuzhiyun }; 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* MAX77802 PMIC registers */ 173*4882a593Smuzhiyun enum max77802_pmic_reg { 174*4882a593Smuzhiyun MAX77802_REG_DEVICE_ID = 0x00, 175*4882a593Smuzhiyun MAX77802_REG_INTSRC = 0x01, 176*4882a593Smuzhiyun MAX77802_REG_INT1 = 0x02, 177*4882a593Smuzhiyun MAX77802_REG_INT2 = 0x03, 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun MAX77802_REG_INT1MSK = 0x04, 180*4882a593Smuzhiyun MAX77802_REG_INT2MSK = 0x05, 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun MAX77802_REG_STATUS1 = 0x06, 183*4882a593Smuzhiyun MAX77802_REG_STATUS2 = 0x07, 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun MAX77802_REG_PWRON = 0x08, 186*4882a593Smuzhiyun /* Reserved: 0x09 */ 187*4882a593Smuzhiyun MAX77802_REG_MRSTB = 0x0A, 188*4882a593Smuzhiyun MAX77802_REG_EPWRHOLD = 0x0B, 189*4882a593Smuzhiyun /* Reserved: 0x0C-0x0D */ 190*4882a593Smuzhiyun MAX77802_REG_BOOSTCTRL = 0x0E, 191*4882a593Smuzhiyun MAX77802_REG_BOOSTOUT = 0x0F, 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun MAX77802_REG_BUCK1CTRL = 0x10, 194*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS1 = 0x11, 195*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS2 = 0x12, 196*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS3 = 0x13, 197*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS4 = 0x14, 198*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS5 = 0x15, 199*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS6 = 0x16, 200*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS7 = 0x17, 201*4882a593Smuzhiyun MAX77802_REG_BUCK1DVS8 = 0x18, 202*4882a593Smuzhiyun /* Reserved: 0x19 */ 203*4882a593Smuzhiyun MAX77802_REG_BUCK2CTRL1 = 0x1A, 204*4882a593Smuzhiyun MAX77802_REG_BUCK2CTRL2 = 0x1B, 205*4882a593Smuzhiyun MAX77802_REG_BUCK2PHTRAN = 0x1C, 206*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS1 = 0x1D, 207*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS2 = 0x1E, 208*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS3 = 0x1F, 209*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS4 = 0x20, 210*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS5 = 0x21, 211*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS6 = 0x22, 212*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS7 = 0x23, 213*4882a593Smuzhiyun MAX77802_REG_BUCK2DVS8 = 0x24, 214*4882a593Smuzhiyun /* Reserved: 0x25-0x26 */ 215*4882a593Smuzhiyun MAX77802_REG_BUCK3CTRL1 = 0x27, 216*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS1 = 0x28, 217*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS2 = 0x29, 218*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS3 = 0x2A, 219*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS4 = 0x2B, 220*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS5 = 0x2C, 221*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS6 = 0x2D, 222*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS7 = 0x2E, 223*4882a593Smuzhiyun MAX77802_REG_BUCK3DVS8 = 0x2F, 224*4882a593Smuzhiyun /* Reserved: 0x30-0x36 */ 225*4882a593Smuzhiyun MAX77802_REG_BUCK4CTRL1 = 0x37, 226*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS1 = 0x38, 227*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS2 = 0x39, 228*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS3 = 0x3A, 229*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS4 = 0x3B, 230*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS5 = 0x3C, 231*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS6 = 0x3D, 232*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS7 = 0x3E, 233*4882a593Smuzhiyun MAX77802_REG_BUCK4DVS8 = 0x3F, 234*4882a593Smuzhiyun /* Reserved: 0x40 */ 235*4882a593Smuzhiyun MAX77802_REG_BUCK5CTRL = 0x41, 236*4882a593Smuzhiyun MAX77802_REG_BUCK5OUT = 0x42, 237*4882a593Smuzhiyun /* Reserved: 0x43 */ 238*4882a593Smuzhiyun MAX77802_REG_BUCK6CTRL = 0x44, 239*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS1 = 0x45, 240*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS2 = 0x46, 241*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS3 = 0x47, 242*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS4 = 0x48, 243*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS5 = 0x49, 244*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS6 = 0x4A, 245*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS7 = 0x4B, 246*4882a593Smuzhiyun MAX77802_REG_BUCK6DVS8 = 0x4C, 247*4882a593Smuzhiyun /* Reserved: 0x4D */ 248*4882a593Smuzhiyun MAX77802_REG_BUCK7CTRL = 0x4E, 249*4882a593Smuzhiyun MAX77802_REG_BUCK7OUT = 0x4F, 250*4882a593Smuzhiyun /* Reserved: 0x50 */ 251*4882a593Smuzhiyun MAX77802_REG_BUCK8CTRL = 0x51, 252*4882a593Smuzhiyun MAX77802_REG_BUCK8OUT = 0x52, 253*4882a593Smuzhiyun /* Reserved: 0x53 */ 254*4882a593Smuzhiyun MAX77802_REG_BUCK9CTRL = 0x54, 255*4882a593Smuzhiyun MAX77802_REG_BUCK9OUT = 0x55, 256*4882a593Smuzhiyun /* Reserved: 0x56 */ 257*4882a593Smuzhiyun MAX77802_REG_BUCK10CTRL = 0x57, 258*4882a593Smuzhiyun MAX77802_REG_BUCK10OUT = 0x58, 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /* Reserved: 0x59-0x5F */ 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun MAX77802_REG_LDO1CTRL1 = 0x60, 263*4882a593Smuzhiyun MAX77802_REG_LDO2CTRL1 = 0x61, 264*4882a593Smuzhiyun MAX77802_REG_LDO3CTRL1 = 0x62, 265*4882a593Smuzhiyun MAX77802_REG_LDO4CTRL1 = 0x63, 266*4882a593Smuzhiyun MAX77802_REG_LDO5CTRL1 = 0x64, 267*4882a593Smuzhiyun MAX77802_REG_LDO6CTRL1 = 0x65, 268*4882a593Smuzhiyun MAX77802_REG_LDO7CTRL1 = 0x66, 269*4882a593Smuzhiyun MAX77802_REG_LDO8CTRL1 = 0x67, 270*4882a593Smuzhiyun MAX77802_REG_LDO9CTRL1 = 0x68, 271*4882a593Smuzhiyun MAX77802_REG_LDO10CTRL1 = 0x69, 272*4882a593Smuzhiyun MAX77802_REG_LDO11CTRL1 = 0x6A, 273*4882a593Smuzhiyun MAX77802_REG_LDO12CTRL1 = 0x6B, 274*4882a593Smuzhiyun MAX77802_REG_LDO13CTRL1 = 0x6C, 275*4882a593Smuzhiyun MAX77802_REG_LDO14CTRL1 = 0x6D, 276*4882a593Smuzhiyun MAX77802_REG_LDO15CTRL1 = 0x6E, 277*4882a593Smuzhiyun /* Reserved: 0x6F */ 278*4882a593Smuzhiyun MAX77802_REG_LDO17CTRL1 = 0x70, 279*4882a593Smuzhiyun MAX77802_REG_LDO18CTRL1 = 0x71, 280*4882a593Smuzhiyun MAX77802_REG_LDO19CTRL1 = 0x72, 281*4882a593Smuzhiyun MAX77802_REG_LDO20CTRL1 = 0x73, 282*4882a593Smuzhiyun MAX77802_REG_LDO21CTRL1 = 0x74, 283*4882a593Smuzhiyun MAX77802_REG_LDO22CTRL1 = 0x75, 284*4882a593Smuzhiyun MAX77802_REG_LDO23CTRL1 = 0x76, 285*4882a593Smuzhiyun MAX77802_REG_LDO24CTRL1 = 0x77, 286*4882a593Smuzhiyun MAX77802_REG_LDO25CTRL1 = 0x78, 287*4882a593Smuzhiyun MAX77802_REG_LDO26CTRL1 = 0x79, 288*4882a593Smuzhiyun MAX77802_REG_LDO27CTRL1 = 0x7A, 289*4882a593Smuzhiyun MAX77802_REG_LDO28CTRL1 = 0x7B, 290*4882a593Smuzhiyun MAX77802_REG_LDO29CTRL1 = 0x7C, 291*4882a593Smuzhiyun MAX77802_REG_LDO30CTRL1 = 0x7D, 292*4882a593Smuzhiyun /* Reserved: 0x7E */ 293*4882a593Smuzhiyun MAX77802_REG_LDO32CTRL1 = 0x7F, 294*4882a593Smuzhiyun MAX77802_REG_LDO33CTRL1 = 0x80, 295*4882a593Smuzhiyun MAX77802_REG_LDO34CTRL1 = 0x81, 296*4882a593Smuzhiyun MAX77802_REG_LDO35CTRL1 = 0x82, 297*4882a593Smuzhiyun /* Reserved: 0x83-0x8F */ 298*4882a593Smuzhiyun MAX77802_REG_LDO1CTRL2 = 0x90, 299*4882a593Smuzhiyun MAX77802_REG_LDO2CTRL2 = 0x91, 300*4882a593Smuzhiyun MAX77802_REG_LDO3CTRL2 = 0x92, 301*4882a593Smuzhiyun MAX77802_REG_LDO4CTRL2 = 0x93, 302*4882a593Smuzhiyun MAX77802_REG_LDO5CTRL2 = 0x94, 303*4882a593Smuzhiyun MAX77802_REG_LDO6CTRL2 = 0x95, 304*4882a593Smuzhiyun MAX77802_REG_LDO7CTRL2 = 0x96, 305*4882a593Smuzhiyun MAX77802_REG_LDO8CTRL2 = 0x97, 306*4882a593Smuzhiyun MAX77802_REG_LDO9CTRL2 = 0x98, 307*4882a593Smuzhiyun MAX77802_REG_LDO10CTRL2 = 0x99, 308*4882a593Smuzhiyun MAX77802_REG_LDO11CTRL2 = 0x9A, 309*4882a593Smuzhiyun MAX77802_REG_LDO12CTRL2 = 0x9B, 310*4882a593Smuzhiyun MAX77802_REG_LDO13CTRL2 = 0x9C, 311*4882a593Smuzhiyun MAX77802_REG_LDO14CTRL2 = 0x9D, 312*4882a593Smuzhiyun MAX77802_REG_LDO15CTRL2 = 0x9E, 313*4882a593Smuzhiyun /* Reserved: 0x9F */ 314*4882a593Smuzhiyun MAX77802_REG_LDO17CTRL2 = 0xA0, 315*4882a593Smuzhiyun MAX77802_REG_LDO18CTRL2 = 0xA1, 316*4882a593Smuzhiyun MAX77802_REG_LDO19CTRL2 = 0xA2, 317*4882a593Smuzhiyun MAX77802_REG_LDO20CTRL2 = 0xA3, 318*4882a593Smuzhiyun MAX77802_REG_LDO21CTRL2 = 0xA4, 319*4882a593Smuzhiyun MAX77802_REG_LDO22CTRL2 = 0xA5, 320*4882a593Smuzhiyun MAX77802_REG_LDO23CTRL2 = 0xA6, 321*4882a593Smuzhiyun MAX77802_REG_LDO24CTRL2 = 0xA7, 322*4882a593Smuzhiyun MAX77802_REG_LDO25CTRL2 = 0xA8, 323*4882a593Smuzhiyun MAX77802_REG_LDO26CTRL2 = 0xA9, 324*4882a593Smuzhiyun MAX77802_REG_LDO27CTRL2 = 0xAA, 325*4882a593Smuzhiyun MAX77802_REG_LDO28CTRL2 = 0xAB, 326*4882a593Smuzhiyun MAX77802_REG_LDO29CTRL2 = 0xAC, 327*4882a593Smuzhiyun MAX77802_REG_LDO30CTRL2 = 0xAD, 328*4882a593Smuzhiyun /* Reserved: 0xAE */ 329*4882a593Smuzhiyun MAX77802_REG_LDO32CTRL2 = 0xAF, 330*4882a593Smuzhiyun MAX77802_REG_LDO33CTRL2 = 0xB0, 331*4882a593Smuzhiyun MAX77802_REG_LDO34CTRL2 = 0xB1, 332*4882a593Smuzhiyun MAX77802_REG_LDO35CTRL2 = 0xB2, 333*4882a593Smuzhiyun /* Reserved: 0xB3 */ 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun MAX77802_REG_BBAT_CHG = 0xB4, 336*4882a593Smuzhiyun MAX77802_REG_32KHZ = 0xB5, 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun MAX77802_REG_PMIC_END = 0xB6, 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun enum max77802_rtc_reg { 342*4882a593Smuzhiyun MAX77802_RTC_INT = 0xC0, 343*4882a593Smuzhiyun MAX77802_RTC_INTM = 0xC1, 344*4882a593Smuzhiyun MAX77802_RTC_CONTROLM = 0xC2, 345*4882a593Smuzhiyun MAX77802_RTC_CONTROL = 0xC3, 346*4882a593Smuzhiyun MAX77802_RTC_UPDATE0 = 0xC4, 347*4882a593Smuzhiyun MAX77802_RTC_UPDATE1 = 0xC5, 348*4882a593Smuzhiyun MAX77802_WTSR_SMPL_CNTL = 0xC6, 349*4882a593Smuzhiyun MAX77802_RTC_SEC = 0xC7, 350*4882a593Smuzhiyun MAX77802_RTC_MIN = 0xC8, 351*4882a593Smuzhiyun MAX77802_RTC_HOUR = 0xC9, 352*4882a593Smuzhiyun MAX77802_RTC_WEEKDAY = 0xCA, 353*4882a593Smuzhiyun MAX77802_RTC_MONTH = 0xCB, 354*4882a593Smuzhiyun MAX77802_RTC_YEAR = 0xCC, 355*4882a593Smuzhiyun MAX77802_RTC_DATE = 0xCD, 356*4882a593Smuzhiyun MAX77802_RTC_AE1 = 0xCE, 357*4882a593Smuzhiyun MAX77802_ALARM1_SEC = 0xCF, 358*4882a593Smuzhiyun MAX77802_ALARM1_MIN = 0xD0, 359*4882a593Smuzhiyun MAX77802_ALARM1_HOUR = 0xD1, 360*4882a593Smuzhiyun MAX77802_ALARM1_WEEKDAY = 0xD2, 361*4882a593Smuzhiyun MAX77802_ALARM1_MONTH = 0xD3, 362*4882a593Smuzhiyun MAX77802_ALARM1_YEAR = 0xD4, 363*4882a593Smuzhiyun MAX77802_ALARM1_DATE = 0xD5, 364*4882a593Smuzhiyun MAX77802_RTC_AE2 = 0xD6, 365*4882a593Smuzhiyun MAX77802_ALARM2_SEC = 0xD7, 366*4882a593Smuzhiyun MAX77802_ALARM2_MIN = 0xD8, 367*4882a593Smuzhiyun MAX77802_ALARM2_HOUR = 0xD9, 368*4882a593Smuzhiyun MAX77802_ALARM2_WEEKDAY = 0xDA, 369*4882a593Smuzhiyun MAX77802_ALARM2_MONTH = 0xDB, 370*4882a593Smuzhiyun MAX77802_ALARM2_YEAR = 0xDC, 371*4882a593Smuzhiyun MAX77802_ALARM2_DATE = 0xDD, 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun MAX77802_RTC_END = 0xDF, 374*4882a593Smuzhiyun }; 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun enum max77686_irq_source { 377*4882a593Smuzhiyun PMIC_INT1 = 0, 378*4882a593Smuzhiyun PMIC_INT2, 379*4882a593Smuzhiyun RTC_INT, 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun MAX77686_IRQ_GROUP_NR, 382*4882a593Smuzhiyun }; 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun enum max77686_irq { 385*4882a593Smuzhiyun MAX77686_PMICIRQ_PWRONF, 386*4882a593Smuzhiyun MAX77686_PMICIRQ_PWRONR, 387*4882a593Smuzhiyun MAX77686_PMICIRQ_JIGONBF, 388*4882a593Smuzhiyun MAX77686_PMICIRQ_JIGONBR, 389*4882a593Smuzhiyun MAX77686_PMICIRQ_ACOKBF, 390*4882a593Smuzhiyun MAX77686_PMICIRQ_ACOKBR, 391*4882a593Smuzhiyun MAX77686_PMICIRQ_ONKEY1S, 392*4882a593Smuzhiyun MAX77686_PMICIRQ_MRSTB, 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun MAX77686_PMICIRQ_140C, 395*4882a593Smuzhiyun MAX77686_PMICIRQ_120C, 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun MAX77686_RTCIRQ_RTC60S = 0, 398*4882a593Smuzhiyun MAX77686_RTCIRQ_RTCA1, 399*4882a593Smuzhiyun MAX77686_RTCIRQ_RTCA2, 400*4882a593Smuzhiyun MAX77686_RTCIRQ_SMPL, 401*4882a593Smuzhiyun MAX77686_RTCIRQ_RTC1S, 402*4882a593Smuzhiyun MAX77686_RTCIRQ_WTSR, 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun #define MAX77686_INT1_PWRONF_MSK BIT(0) 406*4882a593Smuzhiyun #define MAX77686_INT1_PWRONR_MSK BIT(1) 407*4882a593Smuzhiyun #define MAX77686_INT1_JIGONBF_MSK BIT(2) 408*4882a593Smuzhiyun #define MAX77686_INT1_JIGONBR_MSK BIT(3) 409*4882a593Smuzhiyun #define MAX77686_INT1_ACOKBF_MSK BIT(4) 410*4882a593Smuzhiyun #define MAX77686_INT1_ACOKBR_MSK BIT(5) 411*4882a593Smuzhiyun #define MAX77686_INT1_ONKEY1S_MSK BIT(6) 412*4882a593Smuzhiyun #define MAX77686_INT1_MRSTB_MSK BIT(7) 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun #define MAX77686_INT2_140C_MSK BIT(0) 415*4882a593Smuzhiyun #define MAX77686_INT2_120C_MSK BIT(1) 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun #define MAX77686_RTCINT_RTC60S_MSK BIT(0) 418*4882a593Smuzhiyun #define MAX77686_RTCINT_RTCA1_MSK BIT(1) 419*4882a593Smuzhiyun #define MAX77686_RTCINT_RTCA2_MSK BIT(2) 420*4882a593Smuzhiyun #define MAX77686_RTCINT_SMPL_MSK BIT(3) 421*4882a593Smuzhiyun #define MAX77686_RTCINT_RTC1S_MSK BIT(4) 422*4882a593Smuzhiyun #define MAX77686_RTCINT_WTSR_MSK BIT(5) 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun struct max77686_dev { 425*4882a593Smuzhiyun struct device *dev; 426*4882a593Smuzhiyun struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */ 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun unsigned long type; 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun struct regmap *regmap; /* regmap for mfd */ 431*4882a593Smuzhiyun struct regmap_irq_chip_data *irq_data; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun int irq; 434*4882a593Smuzhiyun struct mutex irqlock; 435*4882a593Smuzhiyun int irq_masks_cur[MAX77686_IRQ_GROUP_NR]; 436*4882a593Smuzhiyun int irq_masks_cache[MAX77686_IRQ_GROUP_NR]; 437*4882a593Smuzhiyun }; 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun enum max77686_types { 440*4882a593Smuzhiyun TYPE_MAX77686, 441*4882a593Smuzhiyun TYPE_MAX77802, 442*4882a593Smuzhiyun }; 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun extern int max77686_irq_init(struct max77686_dev *max77686); 445*4882a593Smuzhiyun extern void max77686_irq_exit(struct max77686_dev *max77686); 446*4882a593Smuzhiyun extern int max77686_irq_resume(struct max77686_dev *max77686); 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun #endif /* __LINUX_MFD_MAX77686_PRIV_H */ 449