1*54e8827dSChanwoo Choi /* 2*54e8827dSChanwoo Choi * s2mpu02.h 3*54e8827dSChanwoo Choi * 4*54e8827dSChanwoo Choi * Copyright (c) 2014 Samsung Electronics Co., Ltd 5*54e8827dSChanwoo Choi * http://www.samsung.com 6*54e8827dSChanwoo Choi * 7*54e8827dSChanwoo Choi * This program is free software; you can redistribute it and/or modify it 8*54e8827dSChanwoo Choi * under the terms of the GNU General Public License as published by the 9*54e8827dSChanwoo Choi * Free Software Foundation; either version 2 of the License, or (at your 10*54e8827dSChanwoo Choi * option) any later version. 11*54e8827dSChanwoo Choi * 12*54e8827dSChanwoo Choi * This program is distributed in the hope that it will be useful, 13*54e8827dSChanwoo Choi * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*54e8827dSChanwoo Choi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*54e8827dSChanwoo Choi * GNU General Public License for more details. 16*54e8827dSChanwoo Choi * 17*54e8827dSChanwoo Choi */ 18*54e8827dSChanwoo Choi 19*54e8827dSChanwoo Choi #ifndef __LINUX_MFD_S2MPU02_H 20*54e8827dSChanwoo Choi #define __LINUX_MFD_S2MPU02_H 21*54e8827dSChanwoo Choi 22*54e8827dSChanwoo Choi /* S2MPU02 registers */ 23*54e8827dSChanwoo Choi enum S2MPU02_reg { 24*54e8827dSChanwoo Choi S2MPU02_REG_ID, 25*54e8827dSChanwoo Choi S2MPU02_REG_INT1, 26*54e8827dSChanwoo Choi S2MPU02_REG_INT2, 27*54e8827dSChanwoo Choi S2MPU02_REG_INT3, 28*54e8827dSChanwoo Choi S2MPU02_REG_INT1M, 29*54e8827dSChanwoo Choi S2MPU02_REG_INT2M, 30*54e8827dSChanwoo Choi S2MPU02_REG_INT3M, 31*54e8827dSChanwoo Choi S2MPU02_REG_ST1, 32*54e8827dSChanwoo Choi S2MPU02_REG_ST2, 33*54e8827dSChanwoo Choi S2MPU02_REG_PWRONSRC, 34*54e8827dSChanwoo Choi S2MPU02_REG_OFFSRC, 35*54e8827dSChanwoo Choi S2MPU02_REG_BU_CHG, 36*54e8827dSChanwoo Choi S2MPU02_REG_RTCCTRL, 37*54e8827dSChanwoo Choi S2MPU02_REG_PMCTRL1, 38*54e8827dSChanwoo Choi S2MPU02_REG_RSVD1, 39*54e8827dSChanwoo Choi S2MPU02_REG_RSVD2, 40*54e8827dSChanwoo Choi S2MPU02_REG_RSVD3, 41*54e8827dSChanwoo Choi S2MPU02_REG_RSVD4, 42*54e8827dSChanwoo Choi S2MPU02_REG_RSVD5, 43*54e8827dSChanwoo Choi S2MPU02_REG_RSVD6, 44*54e8827dSChanwoo Choi S2MPU02_REG_RSVD7, 45*54e8827dSChanwoo Choi S2MPU02_REG_WRSTEN, 46*54e8827dSChanwoo Choi S2MPU02_REG_RSVD8, 47*54e8827dSChanwoo Choi S2MPU02_REG_RSVD9, 48*54e8827dSChanwoo Choi S2MPU02_REG_RSVD10, 49*54e8827dSChanwoo Choi S2MPU02_REG_B1CTRL1, 50*54e8827dSChanwoo Choi S2MPU02_REG_B1CTRL2, 51*54e8827dSChanwoo Choi S2MPU02_REG_B2CTRL1, 52*54e8827dSChanwoo Choi S2MPU02_REG_B2CTRL2, 53*54e8827dSChanwoo Choi S2MPU02_REG_B3CTRL1, 54*54e8827dSChanwoo Choi S2MPU02_REG_B3CTRL2, 55*54e8827dSChanwoo Choi S2MPU02_REG_B4CTRL1, 56*54e8827dSChanwoo Choi S2MPU02_REG_B4CTRL2, 57*54e8827dSChanwoo Choi S2MPU02_REG_B5CTRL1, 58*54e8827dSChanwoo Choi S2MPU02_REG_B5CTRL2, 59*54e8827dSChanwoo Choi S2MPU02_REG_B5CTRL3, 60*54e8827dSChanwoo Choi S2MPU02_REG_B5CTRL4, 61*54e8827dSChanwoo Choi S2MPU02_REG_B5CTRL5, 62*54e8827dSChanwoo Choi S2MPU02_REG_B6CTRL1, 63*54e8827dSChanwoo Choi S2MPU02_REG_B6CTRL2, 64*54e8827dSChanwoo Choi S2MPU02_REG_B7CTRL1, 65*54e8827dSChanwoo Choi S2MPU02_REG_B7CTRL2, 66*54e8827dSChanwoo Choi S2MPU02_REG_RAMP1, 67*54e8827dSChanwoo Choi S2MPU02_REG_RAMP2, 68*54e8827dSChanwoo Choi S2MPU02_REG_L1CTRL, 69*54e8827dSChanwoo Choi S2MPU02_REG_L2CTRL1, 70*54e8827dSChanwoo Choi S2MPU02_REG_L2CTRL2, 71*54e8827dSChanwoo Choi S2MPU02_REG_L2CTRL3, 72*54e8827dSChanwoo Choi S2MPU02_REG_L2CTRL4, 73*54e8827dSChanwoo Choi S2MPU02_REG_L3CTRL, 74*54e8827dSChanwoo Choi S2MPU02_REG_L4CTRL, 75*54e8827dSChanwoo Choi S2MPU02_REG_L5CTRL, 76*54e8827dSChanwoo Choi S2MPU02_REG_L6CTRL, 77*54e8827dSChanwoo Choi S2MPU02_REG_L7CTRL, 78*54e8827dSChanwoo Choi S2MPU02_REG_L8CTRL, 79*54e8827dSChanwoo Choi S2MPU02_REG_L9CTRL, 80*54e8827dSChanwoo Choi S2MPU02_REG_L10CTRL, 81*54e8827dSChanwoo Choi S2MPU02_REG_L11CTRL, 82*54e8827dSChanwoo Choi S2MPU02_REG_L12CTRL, 83*54e8827dSChanwoo Choi S2MPU02_REG_L13CTRL, 84*54e8827dSChanwoo Choi S2MPU02_REG_L14CTRL, 85*54e8827dSChanwoo Choi S2MPU02_REG_L15CTRL, 86*54e8827dSChanwoo Choi S2MPU02_REG_L16CTRL, 87*54e8827dSChanwoo Choi S2MPU02_REG_L17CTRL, 88*54e8827dSChanwoo Choi S2MPU02_REG_L18CTRL, 89*54e8827dSChanwoo Choi S2MPU02_REG_L19CTRL, 90*54e8827dSChanwoo Choi S2MPU02_REG_L20CTRL, 91*54e8827dSChanwoo Choi S2MPU02_REG_L21CTRL, 92*54e8827dSChanwoo Choi S2MPU02_REG_L22CTRL, 93*54e8827dSChanwoo Choi S2MPU02_REG_L23CTRL, 94*54e8827dSChanwoo Choi S2MPU02_REG_L24CTRL, 95*54e8827dSChanwoo Choi S2MPU02_REG_L25CTRL, 96*54e8827dSChanwoo Choi S2MPU02_REG_L26CTRL, 97*54e8827dSChanwoo Choi S2MPU02_REG_L27CTRL, 98*54e8827dSChanwoo Choi S2MPU02_REG_L28CTRL, 99*54e8827dSChanwoo Choi S2MPU02_REG_LDODSCH1, 100*54e8827dSChanwoo Choi S2MPU02_REG_LDODSCH2, 101*54e8827dSChanwoo Choi S2MPU02_REG_LDODSCH3, 102*54e8827dSChanwoo Choi S2MPU02_REG_LDODSCH4, 103*54e8827dSChanwoo Choi S2MPU02_REG_SELMIF, 104*54e8827dSChanwoo Choi S2MPU02_REG_RSVD11, 105*54e8827dSChanwoo Choi S2MPU02_REG_RSVD12, 106*54e8827dSChanwoo Choi S2MPU02_REG_RSVD13, 107*54e8827dSChanwoo Choi S2MPU02_REG_DVSSEL, 108*54e8827dSChanwoo Choi S2MPU02_REG_DVSPTR, 109*54e8827dSChanwoo Choi S2MPU02_REG_DVSDATA, 110*54e8827dSChanwoo Choi }; 111*54e8827dSChanwoo Choi 112*54e8827dSChanwoo Choi /* S2MPU02 regulator ids */ 113*54e8827dSChanwoo Choi enum S2MPU02_regulators { 114*54e8827dSChanwoo Choi S2MPU02_LDO1, 115*54e8827dSChanwoo Choi S2MPU02_LDO2, 116*54e8827dSChanwoo Choi S2MPU02_LDO3, 117*54e8827dSChanwoo Choi S2MPU02_LDO4, 118*54e8827dSChanwoo Choi S2MPU02_LDO5, 119*54e8827dSChanwoo Choi S2MPU02_LDO6, 120*54e8827dSChanwoo Choi S2MPU02_LDO7, 121*54e8827dSChanwoo Choi S2MPU02_LDO8, 122*54e8827dSChanwoo Choi S2MPU02_LDO9, 123*54e8827dSChanwoo Choi S2MPU02_LDO10, 124*54e8827dSChanwoo Choi S2MPU02_LDO11, 125*54e8827dSChanwoo Choi S2MPU02_LDO12, 126*54e8827dSChanwoo Choi S2MPU02_LDO13, 127*54e8827dSChanwoo Choi S2MPU02_LDO14, 128*54e8827dSChanwoo Choi S2MPU02_LDO15, 129*54e8827dSChanwoo Choi S2MPU02_LDO16, 130*54e8827dSChanwoo Choi S2MPU02_LDO17, 131*54e8827dSChanwoo Choi S2MPU02_LDO18, 132*54e8827dSChanwoo Choi S2MPU02_LDO19, 133*54e8827dSChanwoo Choi S2MPU02_LDO20, 134*54e8827dSChanwoo Choi S2MPU02_LDO21, 135*54e8827dSChanwoo Choi S2MPU02_LDO22, 136*54e8827dSChanwoo Choi S2MPU02_LDO23, 137*54e8827dSChanwoo Choi S2MPU02_LDO24, 138*54e8827dSChanwoo Choi S2MPU02_LDO25, 139*54e8827dSChanwoo Choi S2MPU02_LDO26, 140*54e8827dSChanwoo Choi S2MPU02_LDO27, 141*54e8827dSChanwoo Choi S2MPU02_LDO28, 142*54e8827dSChanwoo Choi S2MPU02_BUCK1, 143*54e8827dSChanwoo Choi S2MPU02_BUCK2, 144*54e8827dSChanwoo Choi S2MPU02_BUCK3, 145*54e8827dSChanwoo Choi S2MPU02_BUCK4, 146*54e8827dSChanwoo Choi S2MPU02_BUCK5, 147*54e8827dSChanwoo Choi S2MPU02_BUCK6, 148*54e8827dSChanwoo Choi S2MPU02_BUCK7, 149*54e8827dSChanwoo Choi 150*54e8827dSChanwoo Choi S2MPU02_REGULATOR_MAX, 151*54e8827dSChanwoo Choi }; 152*54e8827dSChanwoo Choi 153*54e8827dSChanwoo Choi /* Regulator constraints for BUCKx */ 154*54e8827dSChanwoo Choi #define S2MPU02_BUCK1234_MIN_600MV 600000 155*54e8827dSChanwoo Choi #define S2MPU02_BUCK5_MIN_1081_25MV 1081250 156*54e8827dSChanwoo Choi #define S2MPU02_BUCK6_MIN_1700MV 1700000 157*54e8827dSChanwoo Choi #define S2MPU02_BUCK7_MIN_900MV 900000 158*54e8827dSChanwoo Choi 159*54e8827dSChanwoo Choi #define S2MPU02_BUCK1234_STEP_6_25MV 6250 160*54e8827dSChanwoo Choi #define S2MPU02_BUCK5_STEP_6_25MV 6250 161*54e8827dSChanwoo Choi #define S2MPU02_BUCK6_STEP_2_50MV 2500 162*54e8827dSChanwoo Choi #define S2MPU02_BUCK7_STEP_6_25MV 6250 163*54e8827dSChanwoo Choi 164*54e8827dSChanwoo Choi #define S2MPU02_BUCK1234_START_SEL 0x00 165*54e8827dSChanwoo Choi #define S2MPU02_BUCK5_START_SEL 0x4D 166*54e8827dSChanwoo Choi #define S2MPU02_BUCK6_START_SEL 0x28 167*54e8827dSChanwoo Choi #define S2MPU02_BUCK7_START_SEL 0x30 168*54e8827dSChanwoo Choi 169*54e8827dSChanwoo Choi #define S2MPU02_BUCK_RAMP_DELAY 12500 170*54e8827dSChanwoo Choi 171*54e8827dSChanwoo Choi /* Regulator constraints for different types of LDOx */ 172*54e8827dSChanwoo Choi #define S2MPU02_LDO_MIN_900MV 900000 173*54e8827dSChanwoo Choi #define S2MPU02_LDO_MIN_1050MV 1050000 174*54e8827dSChanwoo Choi #define S2MPU02_LDO_MIN_1600MV 1600000 175*54e8827dSChanwoo Choi #define S2MPU02_LDO_STEP_12_5MV 12500 176*54e8827dSChanwoo Choi #define S2MPU02_LDO_STEP_25MV 25000 177*54e8827dSChanwoo Choi #define S2MPU02_LDO_STEP_50MV 50000 178*54e8827dSChanwoo Choi 179*54e8827dSChanwoo Choi #define S2MPU02_LDO_GROUP1_START_SEL 0x8 180*54e8827dSChanwoo Choi #define S2MPU02_LDO_GROUP2_START_SEL 0xA 181*54e8827dSChanwoo Choi #define S2MPU02_LDO_GROUP3_START_SEL 0x10 182*54e8827dSChanwoo Choi 183*54e8827dSChanwoo Choi #define S2MPU02_LDO_VSEL_MASK 0x3F 184*54e8827dSChanwoo Choi #define S2MPU02_BUCK_VSEL_MASK 0xFF 185*54e8827dSChanwoo Choi #define S2MPU02_ENABLE_MASK (0x03 << S2MPU02_ENABLE_SHIFT) 186*54e8827dSChanwoo Choi #define S2MPU02_ENABLE_SHIFT 6 187*54e8827dSChanwoo Choi 188*54e8827dSChanwoo Choi /* On/Off controlled by PWREN */ 189*54e8827dSChanwoo Choi #define S2MPU02_ENABLE_SUSPEND (0x01 << S2MPU02_ENABLE_SHIFT) 190*54e8827dSChanwoo Choi #define S2MPU02_DISABLE_SUSPEND (0x11 << S2MPU02_ENABLE_SHIFT) 191*54e8827dSChanwoo Choi #define S2MPU02_LDO_N_VOLTAGES (S2MPU02_LDO_VSEL_MASK + 1) 192*54e8827dSChanwoo Choi #define S2MPU02_BUCK_N_VOLTAGES (S2MPU02_BUCK_VSEL_MASK + 1) 193*54e8827dSChanwoo Choi 194*54e8827dSChanwoo Choi /* RAMP delay for BUCK1234*/ 195*54e8827dSChanwoo Choi #define S2MPU02_BUCK1_RAMP_SHIFT 6 196*54e8827dSChanwoo Choi #define S2MPU02_BUCK2_RAMP_SHIFT 4 197*54e8827dSChanwoo Choi #define S2MPU02_BUCK3_RAMP_SHIFT 2 198*54e8827dSChanwoo Choi #define S2MPU02_BUCK4_RAMP_SHIFT 0 199*54e8827dSChanwoo Choi #define S2MPU02_BUCK1234_RAMP_MASK 0x3 200*54e8827dSChanwoo Choi 201*54e8827dSChanwoo Choi #endif /* __LINUX_MFD_S2MPU02_H */ 202