2014-10-14 08:04:37

by Thomas Abraham

[permalink] [raw]
Subject: [PATCH 0/2] mfd: sec: add S2MPS15 PMIC support

Samsung's S2MPS15 PMIC is targetted to be used with Samsung's Exynos7 SoC.
The S2MPS15 PMIC is similar in functionality to S2MPS11/14 PMIC. It contains
27 LDO and 10 Buck regulators, RTC, three 32.768 KHz clock outputs and allows
programming these blocks via a I2C interface. This patch series adds initial
support for LDO/Buck regulators of S2MPS15 PMIC.

Thomas Abraham (2):
dt-bindings: mfd: s2mps11: add documentation for s2mps15 PMIC
mfd: sec: Add support for S2MPS15 PMIC

Documentation/devicetree/bindings/mfd/s2mps11.txt | 11 +-
drivers/mfd/sec-core.c | 26 ++++
include/linux/mfd/samsung/core.h | 1 +
include/linux/mfd/samsung/s2mps15.h | 161 +++++++++++++++++++++
4 files changed, 196 insertions(+), 3 deletions(-)
create mode 100644 include/linux/mfd/samsung/s2mps15.h


2014-10-14 08:03:27

by Thomas Abraham

[permalink] [raw]
Subject: [PATCH 2/2] mfd: sec: Add support for S2MPS15 PMIC

Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15
PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz
clock outputs and battery charger. This patch adds initial support for
LDO and buck regulators of S2MPS15 device.

Signed-off-by: Thomas Abraham <[email protected]>
---
drivers/mfd/sec-core.c | 26 ++++++
include/linux/mfd/samsung/core.h | 1 +
include/linux/mfd/samsung/s2mps15.h | 161 +++++++++++++++++++++++++++++++++++
3 files changed, 188 insertions(+), 0 deletions(-)
create mode 100644 include/linux/mfd/samsung/s2mps15.h

diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
index dba7e2b..6f33c2b 100644
--- a/drivers/mfd/sec-core.c
+++ b/drivers/mfd/sec-core.c
@@ -28,6 +28,7 @@
#include <linux/mfd/samsung/s2mpa01.h>
#include <linux/mfd/samsung/s2mps11.h>
#include <linux/mfd/samsung/s2mps14.h>
+#include <linux/mfd/samsung/s2mps15.h>
#include <linux/mfd/samsung/s2mpu02.h>
#include <linux/mfd/samsung/s5m8763.h>
#include <linux/mfd/samsung/s5m8767.h>
@@ -85,6 +86,12 @@ static const struct mfd_cell s2mps14_devs[] = {
}
};

+static const struct mfd_cell s2mps15_devs[] = {
+ {
+ .name = "s2mps15-pmic",
+ },
+};
+
static const struct mfd_cell s2mpa01_devs[] = {
{
.name = "s2mpa01-pmic",
@@ -111,6 +118,9 @@ static const struct of_device_id sec_dt_match[] = {
.compatible = "samsung,s2mps14-pmic",
.data = (void *)S2MPS14X,
}, {
+ .compatible = "samsung,s2mps15-pmic",
+ .data = (void *)S2MPS15X,
+ }, {
.compatible = "samsung,s2mpa01-pmic",
.data = (void *)S2MPA01,
}, {
@@ -203,6 +213,15 @@ static const struct regmap_config s2mps14_regmap_config = {
.cache_type = REGCACHE_FLAT,
};

+static const struct regmap_config s2mps15_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+
+ .max_register = S2MPS15_REG_LDODSCH4,
+ .volatile_reg = s2mps11_volatile,
+ .cache_type = REGCACHE_FLAT,
+};
+
static const struct regmap_config s2mpu02_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
@@ -328,6 +347,9 @@ static int sec_pmic_probe(struct i2c_client *i2c,
case S2MPS14X:
regmap = &s2mps14_regmap_config;
break;
+ case S2MPS15X:
+ regmap = &s2mps15_regmap_config;
+ break;
case S5M8763X:
regmap = &s5m8763_regmap_config;
break;
@@ -382,6 +404,10 @@ static int sec_pmic_probe(struct i2c_client *i2c,
sec_devs = s2mps14_devs;
num_sec_devs = ARRAY_SIZE(s2mps14_devs);
break;
+ case S2MPS15X:
+ sec_devs = s2mps15_devs;
+ num_sec_devs = ARRAY_SIZE(s2mps15_devs);
+ break;
case S2MPU02:
sec_devs = s2mpu02_devs;
num_sec_devs = ARRAY_SIZE(s2mpu02_devs);
diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
index 1825eda..49ef612 100644
--- a/include/linux/mfd/samsung/core.h
+++ b/include/linux/mfd/samsung/core.h
@@ -42,6 +42,7 @@ enum sec_device_type {
S2MPA01,
S2MPS11X,
S2MPS14X,
+ S2MPS15X,
S2MPU02,
};

diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h
new file mode 100644
index 0000000..e82549a
--- /dev/null
+++ b/include/linux/mfd/samsung/s2mps15.h
@@ -0,0 +1,161 @@
+/*
+ * s2mps15.h
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd
+ * http://www.samsung.com
+ *
+ * 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.
+ *
+ */
+
+#ifndef __LINUX_MFD_S2MPS15_H
+#define __LINUX_MFD_S2MPS15_H
+
+/* S2MPS15 registers */
+enum s2mps15_reg {
+ S2MPS15_REG_ID,
+ S2MPS15_REG_INT1,
+ S2MPS15_REG_INT2,
+ S2MPS15_REG_INT3,
+ S2MPS15_REG_INT1M,
+ S2MPS15_REG_INT2M,
+ S2MPS15_REG_INT3M,
+ S2MPS15_REG_ST1,
+ S2MPS15_REG_ST2,
+ S2MPS15_REG_PWRONSRC,
+ S2MPS15_REG_OFFSRC,
+ S2MPS15_REG_BU_CHG,
+ S2MPS15_REG_RTCCTRL,
+ S2MPS15_REG_CTRL1,
+ S2MPS15_REG_CTRL2,
+ S2MPS15_REG_RSVD1,
+ S2MPS15_REG_RSVD2,
+ S2MPS15_REG_RSVD3,
+ S2MPS15_REG_RSVD4,
+ S2MPS15_REG_RSVD5,
+ S2MPS15_REG_RSVD6,
+ S2MPS15_REG_CTRL3,
+ S2MPS15_REG_RSVD7,
+ S2MPS15_REG_RSVD8,
+ S2MPS15_REG_WRSTBI,
+ S2MPS15_REG_B1CTRL1,
+ S2MPS15_REG_B1CTRL2,
+ S2MPS15_REG_B2CTRL1,
+ S2MPS15_REG_B2CTRL2,
+ S2MPS15_REG_B3CTRL1,
+ S2MPS15_REG_B3CTRL2,
+ S2MPS15_REG_B4CTRL1,
+ S2MPS15_REG_B4CTRL2,
+ S2MPS15_REG_B5CTRL1,
+ S2MPS15_REG_B5CTRL2,
+ S2MPS15_REG_B6CTRL1,
+ S2MPS15_REG_B6CTRL2,
+ S2MPS15_REG_B7CTRL1,
+ S2MPS15_REG_B7CTRL2,
+ S2MPS15_REG_B8CTRL1,
+ S2MPS15_REG_B8CTRL2,
+ S2MPS15_REG_B9CTRL1,
+ S2MPS15_REG_B9CTRL2,
+ S2MPS15_REG_B10CTRL1,
+ S2MPS15_REG_B10CTRL2,
+ S2MPS15_REG_BBCTRL1,
+ S2MPS15_REG_BBCTRL2,
+ S2MPS15_REG_BRAMP,
+ S2MPS15_REG_LDODVS1,
+ S2MPS15_REG_LDODVS2,
+ S2MPS15_REG_LDODVS3,
+ S2MPS15_REG_LDODVS4,
+ S2MPS15_REG_L1CTRL,
+ S2MPS15_REG_L2CTRL,
+ S2MPS15_REG_L3CTRL,
+ S2MPS15_REG_L4CTRL,
+ S2MPS15_REG_L5CTRL,
+ S2MPS15_REG_L6CTRL,
+ S2MPS15_REG_L7CTRL,
+ S2MPS15_REG_L8CTRL,
+ S2MPS15_REG_L9CTRL,
+ S2MPS15_REG_L10CTRL,
+ S2MPS15_REG_L11CTRL,
+ S2MPS15_REG_L12CTRL,
+ S2MPS15_REG_L13CTRL,
+ S2MPS15_REG_L14CTRL,
+ S2MPS15_REG_L15CTRL,
+ S2MPS15_REG_L16CTRL,
+ S2MPS15_REG_L17CTRL,
+ S2MPS15_REG_L18CTRL,
+ S2MPS15_REG_L19CTRL,
+ S2MPS15_REG_L20CTRL,
+ S2MPS15_REG_L21CTRL,
+ S2MPS15_REG_L22CTRL,
+ S2MPS15_REG_L23CTRL,
+ S2MPS15_REG_L24CTRL,
+ S2MPS15_REG_L25CTRL,
+ S2MPS15_REG_L26CTRL,
+ S2MPS15_REG_L27CTRL,
+ S2MPS15_REG_LDODSCH1,
+ S2MPS15_REG_LDODSCH2,
+ S2MPS15_REG_LDODSCH3,
+ S2MPS15_REG_LDODSCH4,
+};
+
+/* S2MPS15 regulator ids */
+enum s2mps15_regulators {
+ S2MPS15_LDO1,
+ S2MPS15_LDO2,
+ S2MPS15_LDO3,
+ S2MPS15_LDO4,
+ S2MPS15_LDO5,
+ S2MPS15_LDO6,
+ S2MPS15_LDO7,
+ S2MPS15_LDO8,
+ S2MPS15_LDO9,
+ S2MPS15_LDO10,
+ S2MPS15_LDO11,
+ S2MPS15_LDO12,
+ S2MPS15_LDO13,
+ S2MPS15_LDO14,
+ S2MPS15_LDO15,
+ S2MPS15_LDO16,
+ S2MPS15_LDO17,
+ S2MPS15_LDO18,
+ S2MPS15_LDO19,
+ S2MPS15_LDO20,
+ S2MPS15_LDO21,
+ S2MPS15_LDO22,
+ S2MPS15_LDO23,
+ S2MPS15_LDO24,
+ S2MPS15_LDO25,
+ S2MPS15_LDO26,
+ S2MPS15_LDO27,
+ S2MPS15_BUCK1,
+ S2MPS15_BUCK2,
+ S2MPS15_BUCK3,
+ S2MPS15_BUCK4,
+ S2MPS15_BUCK5,
+ S2MPS15_BUCK6,
+ S2MPS15_BUCK7,
+ S2MPS15_BUCK8,
+ S2MPS15_BUCK9,
+ S2MPS15_BUCK10,
+ S2MPS15_BUCK11,
+ S2MPS15_REGULATOR_MAX,
+};
+
+#define S2MPS15_LDO_VSEL_MASK (0x3F)
+#define S2MPS15_BUCK_VSEL_MASK (0xFF)
+
+#define S2MPS15_ENABLE_SHIFT (0x06)
+#define S2MPS15_ENABLE_MASK (0x03 << S2MPS15_ENABLE_SHIFT)
+
+#define S2MPS15_LDO_N_VOLTAGES (S2MPS15_LDO_VSEL_MASK + 1)
+#define S2MPS15_BUCK_N_VOLTAGES (S2MPS15_BUCK_VSEL_MASK + 1)
+
+#endif /* __LINUX_MFD_S2MPS15_H */
--
1.6.6.rc2

2014-10-14 08:03:41

by Thomas Abraham

[permalink] [raw]
Subject: [PATCH 1/2] dt-bindings: mfd: s2mps11: add documentation for s2mps15 PMIC

Add dt-binding documentation for s2mps15 PMIC device. The s2mps15 device
is similar to s2mps11/14 PMIC device and has 27 LDO and 10 buck regulators.

Cc: [email protected]
Signed-off-by: Thomas Abraham <[email protected]>
---
Documentation/devicetree/bindings/mfd/s2mps11.txt | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
index 0e4026a..41ee3f5 100644
--- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
+++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
@@ -1,5 +1,5 @@

-* Samsung S2MPS11, S2MPS14 and S2MPU02 Voltage and Current Regulator
+* Samsung S2MPS11/14/15 and S2MPU02 Voltage and Current Regulator

The Samsung S2MPS11 is a multi-function device which includes voltage and
current regulators, RTC, charger controller and other sub-blocks. It is
@@ -7,8 +7,11 @@ interfaced to the host controller using an I2C interface. Each sub-block is
addressed by the host system using different I2C slave addresses.

Required properties:
-- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic"
- or "samsung,s2mpu02-pmic".
+- compatible: Should be one of the following
+ - "samsung,s2mps11-pmic"
+ - "samsung,s2mps14-pmic"
+ - "samsung,s2mps15-pmic"
+ - "samsung,s2mpu02-pmic"
- reg: Specifies the I2C slave address of the pmic block. It should be 0x66.

Optional properties:
@@ -82,12 +85,14 @@ as per the datasheet of s2mps11.
- valid values for n are:
- S2MPS11: 1 to 38
- S2MPS14: 1 to 25
+ - S2MPS15: 1 to 27
- S2MPU02: 1 to 28
- Example: LDO1, LDO2, LDO28
- BUCKn
- valid values for n are:
- S2MPS11: 1 to 10
- S2MPS14: 1 to 5
+ - S2MPS15: 1 to 10
- S2MPU02: 1 to 7
- Example: BUCK1, BUCK2, BUCK9

--
1.6.6.rc2

2014-10-14 08:41:18

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 2/2] mfd: sec: Add support for S2MPS15 PMIC

On 14.10.2014 10:14, Thomas Abraham wrote:
> Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15
> PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz
> clock outputs and battery charger. This patch adds initial support for
> LDO and buck regulators of S2MPS15 device.
>
> Signed-off-by: Thomas Abraham <[email protected]>

Quite nice and small diff stat for adding new chip support. Looks good.
I assume that RTC/clock will be handled in later submissions.

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

> ---
> drivers/mfd/sec-core.c | 26 ++++++
> include/linux/mfd/samsung/core.h | 1 +
> include/linux/mfd/samsung/s2mps15.h | 161 +++++++++++++++++++++++++++++++++++
> 3 files changed, 188 insertions(+), 0 deletions(-)
> create mode 100644 include/linux/mfd/samsung/s2mps15.h
>
> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> index dba7e2b..6f33c2b 100644
> --- a/drivers/mfd/sec-core.c
> +++ b/drivers/mfd/sec-core.c
> @@ -28,6 +28,7 @@
> #include <linux/mfd/samsung/s2mpa01.h>
> #include <linux/mfd/samsung/s2mps11.h>
> #include <linux/mfd/samsung/s2mps14.h>
> +#include <linux/mfd/samsung/s2mps15.h>
> #include <linux/mfd/samsung/s2mpu02.h>
> #include <linux/mfd/samsung/s5m8763.h>
> #include <linux/mfd/samsung/s5m8767.h>
> @@ -85,6 +86,12 @@ static const struct mfd_cell s2mps14_devs[] = {
> }
> };
>
> +static const struct mfd_cell s2mps15_devs[] = {
> + {
> + .name = "s2mps15-pmic",
> + },
> +};
> +
> static const struct mfd_cell s2mpa01_devs[] = {
> {
> .name = "s2mpa01-pmic",
> @@ -111,6 +118,9 @@ static const struct of_device_id sec_dt_match[] = {
> .compatible = "samsung,s2mps14-pmic",
> .data = (void *)S2MPS14X,
> }, {
> + .compatible = "samsung,s2mps15-pmic",
> + .data = (void *)S2MPS15X,
> + }, {
> .compatible = "samsung,s2mpa01-pmic",
> .data = (void *)S2MPA01,
> }, {
> @@ -203,6 +213,15 @@ static const struct regmap_config s2mps14_regmap_config = {
> .cache_type = REGCACHE_FLAT,
> };
>
> +static const struct regmap_config s2mps15_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> +
> + .max_register = S2MPS15_REG_LDODSCH4,
> + .volatile_reg = s2mps11_volatile,
> + .cache_type = REGCACHE_FLAT,
> +};
> +
> static const struct regmap_config s2mpu02_regmap_config = {
> .reg_bits = 8,
> .val_bits = 8,
> @@ -328,6 +347,9 @@ static int sec_pmic_probe(struct i2c_client *i2c,
> case S2MPS14X:
> regmap = &s2mps14_regmap_config;
> break;
> + case S2MPS15X:
> + regmap = &s2mps15_regmap_config;
> + break;
> case S5M8763X:
> regmap = &s5m8763_regmap_config;
> break;
> @@ -382,6 +404,10 @@ static int sec_pmic_probe(struct i2c_client *i2c,
> sec_devs = s2mps14_devs;
> num_sec_devs = ARRAY_SIZE(s2mps14_devs);
> break;
> + case S2MPS15X:
> + sec_devs = s2mps15_devs;
> + num_sec_devs = ARRAY_SIZE(s2mps15_devs);
> + break;
> case S2MPU02:
> sec_devs = s2mpu02_devs;
> num_sec_devs = ARRAY_SIZE(s2mpu02_devs);
> diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
> index 1825eda..49ef612 100644
> --- a/include/linux/mfd/samsung/core.h
> +++ b/include/linux/mfd/samsung/core.h
> @@ -42,6 +42,7 @@ enum sec_device_type {
> S2MPA01,
> S2MPS11X,
> S2MPS14X,
> + S2MPS15X,
> S2MPU02,
> };
>
> diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h
> new file mode 100644
> index 0000000..e82549a
> --- /dev/null
> +++ b/include/linux/mfd/samsung/s2mps15.h
> @@ -0,0 +1,161 @@
> +/*
> + * s2mps15.h
> + *
> + * Copyright (c) 2014 Samsung Electronics Co., Ltd
> + * http://www.samsung.com
> + *
> + * 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.
> + *
> + */
> +
> +#ifndef __LINUX_MFD_S2MPS15_H
> +#define __LINUX_MFD_S2MPS15_H
> +
> +/* S2MPS15 registers */
> +enum s2mps15_reg {
> + S2MPS15_REG_ID,
> + S2MPS15_REG_INT1,
> + S2MPS15_REG_INT2,
> + S2MPS15_REG_INT3,
> + S2MPS15_REG_INT1M,
> + S2MPS15_REG_INT2M,
> + S2MPS15_REG_INT3M,
> + S2MPS15_REG_ST1,
> + S2MPS15_REG_ST2,
> + S2MPS15_REG_PWRONSRC,
> + S2MPS15_REG_OFFSRC,
> + S2MPS15_REG_BU_CHG,
> + S2MPS15_REG_RTCCTRL,
> + S2MPS15_REG_CTRL1,
> + S2MPS15_REG_CTRL2,
> + S2MPS15_REG_RSVD1,
> + S2MPS15_REG_RSVD2,
> + S2MPS15_REG_RSVD3,
> + S2MPS15_REG_RSVD4,
> + S2MPS15_REG_RSVD5,
> + S2MPS15_REG_RSVD6,
> + S2MPS15_REG_CTRL3,
> + S2MPS15_REG_RSVD7,
> + S2MPS15_REG_RSVD8,
> + S2MPS15_REG_WRSTBI,
> + S2MPS15_REG_B1CTRL1,
> + S2MPS15_REG_B1CTRL2,
> + S2MPS15_REG_B2CTRL1,
> + S2MPS15_REG_B2CTRL2,
> + S2MPS15_REG_B3CTRL1,
> + S2MPS15_REG_B3CTRL2,
> + S2MPS15_REG_B4CTRL1,
> + S2MPS15_REG_B4CTRL2,
> + S2MPS15_REG_B5CTRL1,
> + S2MPS15_REG_B5CTRL2,
> + S2MPS15_REG_B6CTRL1,
> + S2MPS15_REG_B6CTRL2,
> + S2MPS15_REG_B7CTRL1,
> + S2MPS15_REG_B7CTRL2,
> + S2MPS15_REG_B8CTRL1,
> + S2MPS15_REG_B8CTRL2,
> + S2MPS15_REG_B9CTRL1,
> + S2MPS15_REG_B9CTRL2,
> + S2MPS15_REG_B10CTRL1,
> + S2MPS15_REG_B10CTRL2,
> + S2MPS15_REG_BBCTRL1,
> + S2MPS15_REG_BBCTRL2,
> + S2MPS15_REG_BRAMP,
> + S2MPS15_REG_LDODVS1,
> + S2MPS15_REG_LDODVS2,
> + S2MPS15_REG_LDODVS3,
> + S2MPS15_REG_LDODVS4,
> + S2MPS15_REG_L1CTRL,
> + S2MPS15_REG_L2CTRL,
> + S2MPS15_REG_L3CTRL,
> + S2MPS15_REG_L4CTRL,
> + S2MPS15_REG_L5CTRL,
> + S2MPS15_REG_L6CTRL,
> + S2MPS15_REG_L7CTRL,
> + S2MPS15_REG_L8CTRL,
> + S2MPS15_REG_L9CTRL,
> + S2MPS15_REG_L10CTRL,
> + S2MPS15_REG_L11CTRL,
> + S2MPS15_REG_L12CTRL,
> + S2MPS15_REG_L13CTRL,
> + S2MPS15_REG_L14CTRL,
> + S2MPS15_REG_L15CTRL,
> + S2MPS15_REG_L16CTRL,
> + S2MPS15_REG_L17CTRL,
> + S2MPS15_REG_L18CTRL,
> + S2MPS15_REG_L19CTRL,
> + S2MPS15_REG_L20CTRL,
> + S2MPS15_REG_L21CTRL,
> + S2MPS15_REG_L22CTRL,
> + S2MPS15_REG_L23CTRL,
> + S2MPS15_REG_L24CTRL,
> + S2MPS15_REG_L25CTRL,
> + S2MPS15_REG_L26CTRL,
> + S2MPS15_REG_L27CTRL,
> + S2MPS15_REG_LDODSCH1,
> + S2MPS15_REG_LDODSCH2,
> + S2MPS15_REG_LDODSCH3,
> + S2MPS15_REG_LDODSCH4,
> +};
> +
> +/* S2MPS15 regulator ids */
> +enum s2mps15_regulators {
> + S2MPS15_LDO1,
> + S2MPS15_LDO2,
> + S2MPS15_LDO3,
> + S2MPS15_LDO4,
> + S2MPS15_LDO5,
> + S2MPS15_LDO6,
> + S2MPS15_LDO7,
> + S2MPS15_LDO8,
> + S2MPS15_LDO9,
> + S2MPS15_LDO10,
> + S2MPS15_LDO11,
> + S2MPS15_LDO12,
> + S2MPS15_LDO13,
> + S2MPS15_LDO14,
> + S2MPS15_LDO15,
> + S2MPS15_LDO16,
> + S2MPS15_LDO17,
> + S2MPS15_LDO18,
> + S2MPS15_LDO19,
> + S2MPS15_LDO20,
> + S2MPS15_LDO21,
> + S2MPS15_LDO22,
> + S2MPS15_LDO23,
> + S2MPS15_LDO24,
> + S2MPS15_LDO25,
> + S2MPS15_LDO26,
> + S2MPS15_LDO27,
> + S2MPS15_BUCK1,
> + S2MPS15_BUCK2,
> + S2MPS15_BUCK3,
> + S2MPS15_BUCK4,
> + S2MPS15_BUCK5,
> + S2MPS15_BUCK6,
> + S2MPS15_BUCK7,
> + S2MPS15_BUCK8,
> + S2MPS15_BUCK9,
> + S2MPS15_BUCK10,
> + S2MPS15_BUCK11,
> + S2MPS15_REGULATOR_MAX,
> +};
> +
> +#define S2MPS15_LDO_VSEL_MASK (0x3F)
> +#define S2MPS15_BUCK_VSEL_MASK (0xFF)
> +
> +#define S2MPS15_ENABLE_SHIFT (0x06)
> +#define S2MPS15_ENABLE_MASK (0x03 << S2MPS15_ENABLE_SHIFT)
> +
> +#define S2MPS15_LDO_N_VOLTAGES (S2MPS15_LDO_VSEL_MASK + 1)
> +#define S2MPS15_BUCK_N_VOLTAGES (S2MPS15_BUCK_VSEL_MASK + 1)
> +
> +#endif /* __LINUX_MFD_S2MPS15_H */
>

2014-10-14 08:43:33

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: mfd: s2mps11: add documentation for s2mps15 PMIC

On 14.10.2014 10:14, Thomas Abraham wrote:
> Add dt-binding documentation for s2mps15 PMIC device. The s2mps15 device
> is similar to s2mps11/14 PMIC device and has 27 LDO and 10 buck regulators.
>
> Cc: [email protected]
> Signed-off-by: Thomas Abraham <[email protected]>
> ---
> Documentation/devicetree/bindings/mfd/s2mps11.txt | 11 ++++++++---
> 1 files changed, 8 insertions(+), 3 deletions(-)

Looks good.
Reviewed-by: Krzysztof Kozlowski <[email protected]>

P.S. Wrong [email protected] list? I receive bounces.

Best regards,
Krzysztof


>
> diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
> index 0e4026a..41ee3f5 100644
> --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
> +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
> @@ -1,5 +1,5 @@
>
> -* Samsung S2MPS11, S2MPS14 and S2MPU02 Voltage and Current Regulator
> +* Samsung S2MPS11/14/15 and S2MPU02 Voltage and Current Regulator
>
> The Samsung S2MPS11 is a multi-function device which includes voltage and
> current regulators, RTC, charger controller and other sub-blocks. It is
> @@ -7,8 +7,11 @@ interfaced to the host controller using an I2C interface. Each sub-block is
> addressed by the host system using different I2C slave addresses.
>
> Required properties:
> -- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic"
> - or "samsung,s2mpu02-pmic".
> +- compatible: Should be one of the following
> + - "samsung,s2mps11-pmic"
> + - "samsung,s2mps14-pmic"
> + - "samsung,s2mps15-pmic"
> + - "samsung,s2mpu02-pmic"
> - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
>
> Optional properties:
> @@ -82,12 +85,14 @@ as per the datasheet of s2mps11.
> - valid values for n are:
> - S2MPS11: 1 to 38
> - S2MPS14: 1 to 25
> + - S2MPS15: 1 to 27
> - S2MPU02: 1 to 28
> - Example: LDO1, LDO2, LDO28
> - BUCKn
> - valid values for n are:
> - S2MPS11: 1 to 10
> - S2MPS14: 1 to 5
> + - S2MPS15: 1 to 10
> - S2MPU02: 1 to 7
> - Example: BUCK1, BUCK2, BUCK9
>
>

2014-10-14 12:38:39

by Thomas Abraham

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: mfd: s2mps11: add documentation for s2mps15 PMIC

On Tue, Oct 14, 2014 at 2:13 PM, Krzysztof Kozłowski
<[email protected]> wrote:
> On 14.10.2014 10:14, Thomas Abraham wrote:
>> Add dt-binding documentation for s2mps15 PMIC device. The s2mps15 device
>> is similar to s2mps11/14 PMIC device and has 27 LDO and 10 buck regulators.
>>
>> Cc: [email protected]
>> Signed-off-by: Thomas Abraham <[email protected]>
>> ---
>> Documentation/devicetree/bindings/mfd/s2mps11.txt | 11 ++++++++---
>> 1 files changed, 8 insertions(+), 3 deletions(-)
>
> Looks good.
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
>
> P.S. Wrong [email protected] list? I receive bounces.

Yes, that was wrong. Thanks for correcting it.

Regards,
Thomas.

>
> Best regards,
> Krzysztof
>
>
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
>> index 0e4026a..41ee3f5 100644
>> --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
>> +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
>> @@ -1,5 +1,5 @@
>>
>> -* Samsung S2MPS11, S2MPS14 and S2MPU02 Voltage and Current Regulator
>> +* Samsung S2MPS11/14/15 and S2MPU02 Voltage and Current Regulator
>>
>> The Samsung S2MPS11 is a multi-function device which includes voltage and
>> current regulators, RTC, charger controller and other sub-blocks. It is
>> @@ -7,8 +7,11 @@ interfaced to the host controller using an I2C interface. Each sub-block is
>> addressed by the host system using different I2C slave addresses.
>>
>> Required properties:
>> -- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic"
>> - or "samsung,s2mpu02-pmic".
>> +- compatible: Should be one of the following
>> + - "samsung,s2mps11-pmic"
>> + - "samsung,s2mps14-pmic"
>> + - "samsung,s2mps15-pmic"
>> + - "samsung,s2mpu02-pmic"
>> - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
>>
>> Optional properties:
>> @@ -82,12 +85,14 @@ as per the datasheet of s2mps11.
>> - valid values for n are:
>> - S2MPS11: 1 to 38
>> - S2MPS14: 1 to 25
>> + - S2MPS15: 1 to 27
>> - S2MPU02: 1 to 28
>> - Example: LDO1, LDO2, LDO28
>> - BUCKn
>> - valid values for n are:
>> - S2MPS11: 1 to 10
>> - S2MPS14: 1 to 5
>> + - S2MPS15: 1 to 10
>> - S2MPU02: 1 to 7
>> - Example: BUCK1, BUCK2, BUCK9
>>
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

2014-10-14 12:41:04

by Thomas Abraham

[permalink] [raw]
Subject: Re: [PATCH 2/2] mfd: sec: Add support for S2MPS15 PMIC

On Tue, Oct 14, 2014 at 2:11 PM, Krzysztof Kozłowski
<[email protected]> wrote:
> On 14.10.2014 10:14, Thomas Abraham wrote:
>> Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15
>> PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz
>> clock outputs and battery charger. This patch adds initial support for
>> LDO and buck regulators of S2MPS15 device.
>>
>> Signed-off-by: Thomas Abraham <[email protected]>
>
> Quite nice and small diff stat for adding new chip support. Looks good.
> I assume that RTC/clock will be handled in later submissions.

Yes, it will be posted later after testing these features.

>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>

Thanks!

Regards,
Thomas.

>
> Best regards,
> Krzysztof
>
>> ---
>> drivers/mfd/sec-core.c | 26 ++++++
>> include/linux/mfd/samsung/core.h | 1 +
>> include/linux/mfd/samsung/s2mps15.h | 161 +++++++++++++++++++++++++++++++++++
>> 3 files changed, 188 insertions(+), 0 deletions(-)
>> create mode 100644 include/linux/mfd/samsung/s2mps15.h
>>
>> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
>> index dba7e2b..6f33c2b 100644
>> --- a/drivers/mfd/sec-core.c
>> +++ b/drivers/mfd/sec-core.c
>> @@ -28,6 +28,7 @@
>> #include <linux/mfd/samsung/s2mpa01.h>
>> #include <linux/mfd/samsung/s2mps11.h>
>> #include <linux/mfd/samsung/s2mps14.h>
>> +#include <linux/mfd/samsung/s2mps15.h>
>> #include <linux/mfd/samsung/s2mpu02.h>
>> #include <linux/mfd/samsung/s5m8763.h>
>> #include <linux/mfd/samsung/s5m8767.h>
>> @@ -85,6 +86,12 @@ static const struct mfd_cell s2mps14_devs[] = {
>> }
>> };
>>
>> +static const struct mfd_cell s2mps15_devs[] = {
>> + {
>> + .name = "s2mps15-pmic",
>> + },
>> +};
>> +
>> static const struct mfd_cell s2mpa01_devs[] = {
>> {
>> .name = "s2mpa01-pmic",
>> @@ -111,6 +118,9 @@ static const struct of_device_id sec_dt_match[] = {
>> .compatible = "samsung,s2mps14-pmic",
>> .data = (void *)S2MPS14X,
>> }, {
>> + .compatible = "samsung,s2mps15-pmic",
>> + .data = (void *)S2MPS15X,
>> + }, {
>> .compatible = "samsung,s2mpa01-pmic",
>> .data = (void *)S2MPA01,
>> }, {
>> @@ -203,6 +213,15 @@ static const struct regmap_config s2mps14_regmap_config = {
>> .cache_type = REGCACHE_FLAT,
>> };
>>
>> +static const struct regmap_config s2mps15_regmap_config = {
>> + .reg_bits = 8,
>> + .val_bits = 8,
>> +
>> + .max_register = S2MPS15_REG_LDODSCH4,
>> + .volatile_reg = s2mps11_volatile,
>> + .cache_type = REGCACHE_FLAT,
>> +};
>> +
>> static const struct regmap_config s2mpu02_regmap_config = {
>> .reg_bits = 8,
>> .val_bits = 8,
>> @@ -328,6 +347,9 @@ static int sec_pmic_probe(struct i2c_client *i2c,
>> case S2MPS14X:
>> regmap = &s2mps14_regmap_config;
>> break;
>> + case S2MPS15X:
>> + regmap = &s2mps15_regmap_config;
>> + break;
>> case S5M8763X:
>> regmap = &s5m8763_regmap_config;
>> break;
>> @@ -382,6 +404,10 @@ static int sec_pmic_probe(struct i2c_client *i2c,
>> sec_devs = s2mps14_devs;
>> num_sec_devs = ARRAY_SIZE(s2mps14_devs);
>> break;
>> + case S2MPS15X:
>> + sec_devs = s2mps15_devs;
>> + num_sec_devs = ARRAY_SIZE(s2mps15_devs);
>> + break;
>> case S2MPU02:
>> sec_devs = s2mpu02_devs;
>> num_sec_devs = ARRAY_SIZE(s2mpu02_devs);
>> diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
>> index 1825eda..49ef612 100644
>> --- a/include/linux/mfd/samsung/core.h
>> +++ b/include/linux/mfd/samsung/core.h
>> @@ -42,6 +42,7 @@ enum sec_device_type {
>> S2MPA01,
>> S2MPS11X,
>> S2MPS14X,
>> + S2MPS15X,
>> S2MPU02,
>> };
>>
>> diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h
>> new file mode 100644
>> index 0000000..e82549a
>> --- /dev/null
>> +++ b/include/linux/mfd/samsung/s2mps15.h
>> @@ -0,0 +1,161 @@
>> +/*
>> + * s2mps15.h
>> + *
>> + * Copyright (c) 2014 Samsung Electronics Co., Ltd
>> + * http://www.samsung.com
>> + *
>> + * 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.
>> + *
>> + */
>> +
>> +#ifndef __LINUX_MFD_S2MPS15_H
>> +#define __LINUX_MFD_S2MPS15_H
>> +
>> +/* S2MPS15 registers */
>> +enum s2mps15_reg {
>> + S2MPS15_REG_ID,
>> + S2MPS15_REG_INT1,
>> + S2MPS15_REG_INT2,
>> + S2MPS15_REG_INT3,
>> + S2MPS15_REG_INT1M,
>> + S2MPS15_REG_INT2M,
>> + S2MPS15_REG_INT3M,
>> + S2MPS15_REG_ST1,
>> + S2MPS15_REG_ST2,
>> + S2MPS15_REG_PWRONSRC,
>> + S2MPS15_REG_OFFSRC,
>> + S2MPS15_REG_BU_CHG,
>> + S2MPS15_REG_RTCCTRL,
>> + S2MPS15_REG_CTRL1,
>> + S2MPS15_REG_CTRL2,
>> + S2MPS15_REG_RSVD1,
>> + S2MPS15_REG_RSVD2,
>> + S2MPS15_REG_RSVD3,
>> + S2MPS15_REG_RSVD4,
>> + S2MPS15_REG_RSVD5,
>> + S2MPS15_REG_RSVD6,
>> + S2MPS15_REG_CTRL3,
>> + S2MPS15_REG_RSVD7,
>> + S2MPS15_REG_RSVD8,
>> + S2MPS15_REG_WRSTBI,
>> + S2MPS15_REG_B1CTRL1,
>> + S2MPS15_REG_B1CTRL2,
>> + S2MPS15_REG_B2CTRL1,
>> + S2MPS15_REG_B2CTRL2,
>> + S2MPS15_REG_B3CTRL1,
>> + S2MPS15_REG_B3CTRL2,
>> + S2MPS15_REG_B4CTRL1,
>> + S2MPS15_REG_B4CTRL2,
>> + S2MPS15_REG_B5CTRL1,
>> + S2MPS15_REG_B5CTRL2,
>> + S2MPS15_REG_B6CTRL1,
>> + S2MPS15_REG_B6CTRL2,
>> + S2MPS15_REG_B7CTRL1,
>> + S2MPS15_REG_B7CTRL2,
>> + S2MPS15_REG_B8CTRL1,
>> + S2MPS15_REG_B8CTRL2,
>> + S2MPS15_REG_B9CTRL1,
>> + S2MPS15_REG_B9CTRL2,
>> + S2MPS15_REG_B10CTRL1,
>> + S2MPS15_REG_B10CTRL2,
>> + S2MPS15_REG_BBCTRL1,
>> + S2MPS15_REG_BBCTRL2,
>> + S2MPS15_REG_BRAMP,
>> + S2MPS15_REG_LDODVS1,
>> + S2MPS15_REG_LDODVS2,
>> + S2MPS15_REG_LDODVS3,
>> + S2MPS15_REG_LDODVS4,
>> + S2MPS15_REG_L1CTRL,
>> + S2MPS15_REG_L2CTRL,
>> + S2MPS15_REG_L3CTRL,
>> + S2MPS15_REG_L4CTRL,
>> + S2MPS15_REG_L5CTRL,
>> + S2MPS15_REG_L6CTRL,
>> + S2MPS15_REG_L7CTRL,
>> + S2MPS15_REG_L8CTRL,
>> + S2MPS15_REG_L9CTRL,
>> + S2MPS15_REG_L10CTRL,
>> + S2MPS15_REG_L11CTRL,
>> + S2MPS15_REG_L12CTRL,
>> + S2MPS15_REG_L13CTRL,
>> + S2MPS15_REG_L14CTRL,
>> + S2MPS15_REG_L15CTRL,
>> + S2MPS15_REG_L16CTRL,
>> + S2MPS15_REG_L17CTRL,
>> + S2MPS15_REG_L18CTRL,
>> + S2MPS15_REG_L19CTRL,
>> + S2MPS15_REG_L20CTRL,
>> + S2MPS15_REG_L21CTRL,
>> + S2MPS15_REG_L22CTRL,
>> + S2MPS15_REG_L23CTRL,
>> + S2MPS15_REG_L24CTRL,
>> + S2MPS15_REG_L25CTRL,
>> + S2MPS15_REG_L26CTRL,
>> + S2MPS15_REG_L27CTRL,
>> + S2MPS15_REG_LDODSCH1,
>> + S2MPS15_REG_LDODSCH2,
>> + S2MPS15_REG_LDODSCH3,
>> + S2MPS15_REG_LDODSCH4,
>> +};
>> +
>> +/* S2MPS15 regulator ids */
>> +enum s2mps15_regulators {
>> + S2MPS15_LDO1,
>> + S2MPS15_LDO2,
>> + S2MPS15_LDO3,
>> + S2MPS15_LDO4,
>> + S2MPS15_LDO5,
>> + S2MPS15_LDO6,
>> + S2MPS15_LDO7,
>> + S2MPS15_LDO8,
>> + S2MPS15_LDO9,
>> + S2MPS15_LDO10,
>> + S2MPS15_LDO11,
>> + S2MPS15_LDO12,
>> + S2MPS15_LDO13,
>> + S2MPS15_LDO14,
>> + S2MPS15_LDO15,
>> + S2MPS15_LDO16,
>> + S2MPS15_LDO17,
>> + S2MPS15_LDO18,
>> + S2MPS15_LDO19,
>> + S2MPS15_LDO20,
>> + S2MPS15_LDO21,
>> + S2MPS15_LDO22,
>> + S2MPS15_LDO23,
>> + S2MPS15_LDO24,
>> + S2MPS15_LDO25,
>> + S2MPS15_LDO26,
>> + S2MPS15_LDO27,
>> + S2MPS15_BUCK1,
>> + S2MPS15_BUCK2,
>> + S2MPS15_BUCK3,
>> + S2MPS15_BUCK4,
>> + S2MPS15_BUCK5,
>> + S2MPS15_BUCK6,
>> + S2MPS15_BUCK7,
>> + S2MPS15_BUCK8,
>> + S2MPS15_BUCK9,
>> + S2MPS15_BUCK10,
>> + S2MPS15_BUCK11,
>> + S2MPS15_REGULATOR_MAX,
>> +};
>> +
>> +#define S2MPS15_LDO_VSEL_MASK (0x3F)
>> +#define S2MPS15_BUCK_VSEL_MASK (0xFF)
>> +
>> +#define S2MPS15_ENABLE_SHIFT (0x06)
>> +#define S2MPS15_ENABLE_MASK (0x03 << S2MPS15_ENABLE_SHIFT)
>> +
>> +#define S2MPS15_LDO_N_VOLTAGES (S2MPS15_LDO_VSEL_MASK + 1)
>> +#define S2MPS15_BUCK_N_VOLTAGES (S2MPS15_BUCK_VSEL_MASK + 1)
>> +
>> +#endif /* __LINUX_MFD_S2MPS15_H */
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/