power: regulator: s2mps11: add a regulator driver for s2mps11

exynos5422 has the s2mps11 PMIC.
s2mps11 pmic has the 10-BUCK and 38-LDO regulators.
Each IP and devices in exynos5422 can be controlled by each regulators.
This patch is support for s2mps11 regulator driver.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Anand Moon <linux.amoon@gmail.com>
This commit is contained in:
Jaehoon Chung
2018-01-16 15:33:50 +09:00
parent b9b4f146c9
commit 60599ea6cd
4 changed files with 661 additions and 0 deletions

View File

@@ -106,4 +106,59 @@ enum s2mps11_reg {
#define S2MPS11_LDO26_ENABLE 0xec
#define S2MPS11_LDO_NUM 26
#define S2MPS11_BUCK_NUM 10
/* Driver name */
#define S2MPS11_BUCK_DRIVER "s2mps11_buck"
#define S2MPS11_OF_BUCK_PREFIX "BUCK"
#define S2MPS11_LDO_DRIVER "s2mps11_ldo"
#define S2MPS11_OF_LDO_PREFIX "LDO"
/* BUCK */
#define S2MPS11_BUCK_VOLT_MASK 0xff
#define S2MPS11_BUCK9_VOLT_MASK 0x1f
#define S2MPS11_BUCK_LSTEP 6250
#define S2MPS11_BUCK_HSTEP 12500
#define S2MPS11_BUCK9_STEP 25000
#define S2MPS11_BUCK_UV_MIN 600000
#define S2MPS11_BUCK_UV_HMIN 750000
#define S2MPS11_BUCK9_UV_MIN 1400000
#define S2MPS11_BUCK_VOLT_MAX_HEX 0xA0
#define S2MPS11_BUCK5_VOLT_MAX_HEX 0xDF
#define S2MPS11_BUCK7_8_10_VOLT_MAX_HEX 0xDC
#define S2MPS11_BUCK9_VOLT_MAX_HEX 0x5F
#define S2MPS11_BUCK_MODE_SHIFT 6
#define S2MPS11_BUCK_MODE_MASK (0x3)
#define S2MPS11_BUCK_MODE_OFF (0x0 << 6)
#define S2MPS11_BUCK_MODE_STANDBY (0x1 << 6)
#define S2MPS11_BUCK_MODE_ON (0x3 << 6)
/* LDO */
#define S2MPS11_LDO_VOLT_MASK 0x3F
#define S2MPS11_LDO_VOLT_MAX_HEX 0x3F
#define S2MPS11_LDO_STEP 25000
#define S2MPS11_LDO_UV_MIN 800000
#define S2MPS11_LDO_MODE_MASK 0x3
#define S2MPS11_LDO_MODE_SHIFT 6
#define S2MPS11_LDO_MODE_OFF (0x0 << 6)
#define S2MPS11_LDO_MODE_STANDBY (0x1 << 6)
#define S2MPS11_LDO_MODE_STANDBY_LPM (0x2 << 6)
#define S2MPS11_LDO_MODE_ON (0x3 << 6)
enum {
OP_OFF = 0,
OP_LPM,
OP_STANDBY,
OP_STANDBY_LPM,
OP_ON,
};
#endif