| /* |
| * s2mpb02-private.h - Voltage regulator driver for the Samsung s2mpb02 |
| * |
| * Copyright (C) 2014 Samsung Electrnoics |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #ifndef __LINUX_MFD_S2MPB02_PRIV_H |
| #define __LINUX_MFD_S2MPB02_PRIV_H |
| |
| |
| /* S2MPB02 registers */ |
| enum s2mpb02_reg { |
| S2MPB02_REG_ID, |
| S2MPB02_REG_INT1, |
| S2MPB02_REG_INT1M, |
| S2MPB02_REG_ST1, |
| S2MPB02_REG_CTRL, |
| S2MPB02_REG_RSVD5, |
| S2MPB02_REG_RSVD6, |
| S2MPB02_REG_RSVD7, |
| S2MPB02_REG_RSVD8, |
| S2MPB02_REG_BBEN_DBT, |
| S2MPB02_REG_RSVDA, |
| S2MPB02_REG_B1CTRL1, |
| S2MPB02_REG_B1CTRL2, |
| S2MPB02_REG_B2CTRL1, |
| S2MPB02_REG_B2CTRL2, |
| S2MPB02_REG_BB1CTRL1, |
| S2MPB02_REG_BB1CTRL2, |
| S2MPB02_REG_BUCK_RAMP, |
| S2MPB02_REG_FLED_CTRL1, |
| S2MPB02_REG_FLED_CTRL2, |
| S2MPB02_REG_FLED_CUR1, |
| S2MPB02_REG_FLED_TIME1, |
| S2MPB02_REG_FLED_CUR2, |
| S2MPB02_REG_FLED_TIME2, |
| S2MPB02_REG_FLED_IRON1, |
| S2MPB02_REG_FLED_IRON2, |
| S2MPB02_REG_FLED_IRD1, |
| S2MPB02_REG_FLED_IRD2, |
| S2MPB02_REG_BST_CTRL1, |
| S2MPB02_REG_BST_CTRL2, |
| S2MPB02_REG_L1CTRL, |
| S2MPB02_REG_L2CTRL, |
| S2MPB02_REG_L3CTRL, |
| S2MPB02_REG_L4CTRL, |
| S2MPB02_REG_L5CTRL, |
| S2MPB02_REG_L6CTRL, |
| S2MPB02_REG_L7CTRL, |
| S2MPB02_REG_L8CTRL, |
| S2MPB02_REG_L9CTRL, |
| S2MPB02_REG_L10CTRL, |
| S2MPB02_REG_L11CTRL, |
| S2MPB02_REG_L12CTRL, |
| S2MPB02_REG_L13CTRL, |
| S2MPB02_REG_L14CTRL, |
| S2MPB02_REG_L15CTRL, |
| S2MPB02_REG_L16CTRL, |
| S2MPB02_REG_L17CTRL, |
| S2MPB02_REG_L18CTRL, |
| S2MPB02_REG_LDO_DSCH1, |
| S2MPB02_REG_LDO_DSCH2, |
| S2MPB02_REG_LDO_DSCH3, |
| }; |
| |
| /* S2MPB02 regulator ids */ |
| enum S2MPB02_regulators { |
| S2MPB02_LDO1, |
| S2MPB02_LDO2, |
| S2MPB02_LDO3, |
| S2MPB02_LDO4, |
| S2MPB02_LDO5, |
| S2MPB02_LDO6, |
| S2MPB02_LDO7, |
| S2MPB02_LDO8, |
| S2MPB02_LDO9, |
| S2MPB02_LDO10, |
| S2MPB02_LDO11, |
| S2MPB02_LDO12, |
| S2MPB02_LDO13, |
| S2MPB02_LDO14, |
| S2MPB02_LDO15, |
| S2MPB02_LDO16, |
| S2MPB02_LDO17, |
| S2MPB02_LDO18, |
| S2MPB02_BUCK1, |
| S2MPB02_BUCK2, |
| S2MPB02_BB1, |
| |
| S2MPB02_REG_MAX, |
| }; |
| |
| #define S2MPB02_BUCK_MIN1 400000 |
| #define S2MPB02_BUCK_MIN2 2600000 |
| #define S2MPB02_LDO_MIN1 600000 |
| #define S2MPB02_BUCK_STEP1 6250 |
| #define S2MPB02_BUCK_STEP2 12500 |
| #define S2MPB02_LDO_STEP1 12500 |
| #define S2MPB02_LDO_STEP2 25000 |
| #define S2MPB02_LDO_VSEL_MASK 0x7F |
| #define S2MPB02_BUCK_VSEL_MASK 0xFF |
| #define S2MPB02_BUCK_ENABLE_MASK 0xC0 |
| #define S2MPB02_LDO_ENABLE_MASK 0x80 |
| |
| #define S2MPB02_RAMP_DELAY 12000 |
| |
| #define S2MPB02_ENABLE_TIME_LDO 180 |
| #define S2MPB02_ENABLE_TIME_BUCK 100 |
| #define S2MPB02_ENABLE_TIME_BB 210 |
| |
| #define S2MPB02_BUCK_ENABLE_SHIFT 0x06 |
| #define S2MPB02_LDO_ENABLE_SHIFT 0x07 |
| #define S2MPB02_LDO_N_VOLTAGES (S2MPB02_LDO_VSEL_MASK + 1) |
| #define S2MPB02_BUCK_N_VOLTAGES (S2MPB02_BUCK_VSEL_MASK + 1) |
| |
| #define S2MPB02_REGULATOR_MAX (S2MPB02_REG_MAX) |
| |
| #endif /* __LINUX_MFD_S2MPB02_PRIV_H */ |