Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1426345 > unrolled thread

[PATCH 0/9] regulator: Enable suspend configuration

Started byKeerthy <j-keerthy@ti.com>
First post2016-06-20 11:00 +0200
Last post2016-06-20 11:10 +0200
Articles 13 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/9] regulator: Enable suspend configuration Keerthy <j-keerthy@ti.com> - 2016-06-20 11:00 +0200
    [PATCH 1/9] regulator: tps65217: Enable suspend configuration Keerthy <j-keerthy@ti.com> - 2016-06-20 11:00 +0200
      Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Mark Brown <broonie@kernel.org> - 2016-06-21 21:40 +0200
        Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Mark Brown <broonie@kernel.org> - 2016-06-22 12:20 +0200
          Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Keerthy <a0393675@ti.com> - 2016-06-22 12:40 +0200
            Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Mark Brown <broonie@kernel.org> - 2016-06-23 12:30 +0200
              Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Keerthy <a0393675@ti.com> - 2016-06-23 12:40 +0200
        Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration Keerthy <a0393675@ti.com> - 2016-06-22 12:20 +0200
    [PATCH 5/9] regulator: tps65218: force set power-up/down strobe to 3 for dcdc3 Keerthy <j-keerthy@ti.com> - 2016-06-20 11:00 +0200
    [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend Keerthy <j-keerthy@ti.com> - 2016-06-20 11:10 +0200
      Re: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3  dcdc5 and dcdc6 enable during suspend Tony Lindgren <tony@atomide.com> - 2016-06-21 13:50 +0200
      Re: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3  dcdc5 and dcdc6 enable during suspend Tony Lindgren <tony@atomide.com> - 2016-06-21 14:10 +0200
    [PATCH 7/9] mfd: tps65218: add version check to the PMIC probe Keerthy <j-keerthy@ti.com> - 2016-06-20 11:10 +0200

#1426345 — [PATCH 0/9] regulator: Enable suspend configuration

FromKeerthy <j-keerthy@ti.com>
Date2016-06-20 11:00 +0200
Subject[PATCH 0/9] regulator: Enable suspend configuration
Message-ID<rM345-5Wp-3@gated-at.bofh.it>
The series adds suspend configuration for tps65218 and tps65217 PMICs.

Boot tested on am437x-sk-evm, am437x-gp-evm, am335x-bone, am335x-boneblack

Keerthy (2):
  regulator: of: setup initial suspend state
  ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6
    enable during suspend

Russ Dill (1):
  regulator: tps65217: Enable suspend configuration

Tero Kristo (6):
  regulator: tps65218: Enable suspend configuration
  regulator: tps65218: force set power-up/down strobe to 3 for dcdc3
  ARM: dts: am437x-gp-evm: disable DDR regulator in rtc-only/poweroff
    mode
  mfd: tps65218: add version check to the PMIC probe
  regulator: tps65218: do not disable DCDC3 during poweroff on broken
    PMICs
  ARM: dts: am437x-sk-evm: disable DDR regulator in rtc-only/poweroff
    mode

 arch/arm/boot/dts/am437x-gp-evm.dts    | 13 ++++++
 arch/arm/boot/dts/am437x-sk-evm.dts    | 30 ++++++++++++
 drivers/mfd/tps65218.c                 |  9 ++++
 drivers/regulator/of_regulator.c       |  3 ++
 drivers/regulator/tps65217-regulator.c | 74 ++++++++++++++++++++++++++----
 drivers/regulator/tps65218-regulator.c | 84 +++++++++++++++++++++++++++++-----
 include/linux/mfd/tps65218.h           |  8 ++++
 7 files changed, 201 insertions(+), 20 deletions(-)

-- 
1.9.1

[toc] | [next] | [standalone]


#1426352 — [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromKeerthy <j-keerthy@ti.com>
Date2016-06-20 11:00 +0200
Subject[PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rM3dM-5ZG-21@gated-at.bofh.it>
In reply to#1426345
From: Russ Dill <Russ.Dill@ti.com>

This allows platform data to specify which power rails should be on or off
during RTC only suspend. This is necessary to keep DDR state while in RTC
only suspend.

Signed-off-by: Russ Dill <Russ.Dill@ti.com>
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
 drivers/regulator/tps65217-regulator.c | 74 +++++++++++++++++++++++++++++-----
 1 file changed, 65 insertions(+), 9 deletions(-)

diff --git a/drivers/regulator/tps65217-regulator.c b/drivers/regulator/tps65217-regulator.c
index adbe4fc..c15659c 100644
--- a/drivers/regulator/tps65217-regulator.c
+++ b/drivers/regulator/tps65217-regulator.c
@@ -28,7 +28,7 @@
 #include <linux/mfd/tps65217.h>
 
 #define TPS65217_REGULATOR(_name, _id, _of_match, _ops, _n, _vr, _vm, _em, \
-                           _t, _lr, _nlr) \
+			   _t, _lr, _nlr,  _sr, _sm)	\
 	{						\
 		.name		= _name,		\
 		.id		= _id,			\
@@ -45,6 +45,8 @@
 		.volt_table	= _t,			\
 		.linear_ranges	= _lr,			\
 		.n_linear_ranges = _nlr,		\
+		.bypass_reg	= _sr,			\
+		.bypass_mask	= _sm,			\
 	}						\
 
 static const unsigned int LDO1_VSEL_table[] = {
@@ -118,6 +120,42 @@ static int tps65217_pmic_set_voltage_sel(struct regulator_dev *dev,
 	return ret;
 }
 
+struct tps65217_regulator_data {
+	int strobe;
+};
+
+static struct tps65217_regulator_data regulator_data[TPS65217_NUM_REGULATOR];
+
+static int tps65217_pmic_set_suspend_enable(struct regulator_dev *dev)
+{
+	struct tps65217 *tps = rdev_get_drvdata(dev);
+	unsigned int rid = rdev_get_id(dev);
+
+	if (rid < TPS65217_DCDC_1 || rid > TPS65217_LDO_4)
+		return -EINVAL;
+
+	return tps65217_clear_bits(tps, dev->desc->bypass_reg,
+				   dev->desc->bypass_mask,
+				   TPS65217_PROTECT_L1);
+}
+
+static int tps65217_pmic_set_suspend_disable(struct regulator_dev *dev)
+{
+	struct tps65217 *tps = rdev_get_drvdata(dev);
+	unsigned int rid = rdev_get_id(dev);
+
+	if (rid < TPS65217_DCDC_1 || rid > TPS65217_LDO_4)
+		return -EINVAL;
+
+	if (!regulator_data[rid].strobe)
+		return -EINVAL;
+
+	return tps65217_set_bits(tps, dev->desc->bypass_reg,
+				 dev->desc->bypass_mask,
+				 regulator_data[rid].strobe,
+				 TPS65217_PROTECT_L1);
+}
+
 /* Operations permitted on DCDCx, LDO2, LDO3 and LDO4 */
 static struct regulator_ops tps65217_pmic_ops = {
 	.is_enabled		= regulator_is_enabled_regmap,
@@ -127,6 +165,8 @@ static struct regulator_ops tps65217_pmic_ops = {
 	.set_voltage_sel	= tps65217_pmic_set_voltage_sel,
 	.list_voltage		= regulator_list_voltage_linear_range,
 	.map_voltage		= regulator_map_voltage_linear_range,
+	.set_suspend_enable	= tps65217_pmic_set_suspend_enable,
+	.set_suspend_disable	= tps65217_pmic_set_suspend_disable,
 };
 
 /* Operations permitted on LDO1 */
@@ -138,41 +178,50 @@ static struct regulator_ops tps65217_pmic_ldo1_ops = {
 	.set_voltage_sel	= tps65217_pmic_set_voltage_sel,
 	.list_voltage		= regulator_list_voltage_table,
 	.map_voltage		= regulator_map_voltage_ascend,
+	.set_suspend_enable	= tps65217_pmic_set_suspend_enable,
+	.set_suspend_disable	= tps65217_pmic_set_suspend_disable,
 };
 
 static const struct regulator_desc regulators[] = {
 	TPS65217_REGULATOR("DCDC1", TPS65217_DCDC_1, "dcdc1",
 			   tps65217_pmic_ops, 64, TPS65217_REG_DEFDCDC1,
 			   TPS65217_DEFDCDCX_DCDC_MASK, TPS65217_ENABLE_DC1_EN,
-			   NULL, tps65217_uv1_ranges, 2),
+			   NULL, tps65217_uv1_ranges, 2, TPS65217_REG_SEQ1,
+			   TPS65217_SEQ1_DC1_SEQ_MASK),
 	TPS65217_REGULATOR("DCDC2", TPS65217_DCDC_2, "dcdc2",
 			   tps65217_pmic_ops, 64, TPS65217_REG_DEFDCDC2,
 			   TPS65217_DEFDCDCX_DCDC_MASK, TPS65217_ENABLE_DC2_EN,
 			   NULL, tps65217_uv1_ranges,
-			   ARRAY_SIZE(tps65217_uv1_ranges)),
+			   ARRAY_SIZE(tps65217_uv1_ranges), TPS65217_REG_SEQ1,
+			   TPS65217_SEQ1_DC2_SEQ_MASK),
 	TPS65217_REGULATOR("DCDC3", TPS65217_DCDC_3, "dcdc3",
 			   tps65217_pmic_ops, 64, TPS65217_REG_DEFDCDC3,
 			   TPS65217_DEFDCDCX_DCDC_MASK, TPS65217_ENABLE_DC3_EN,
-			   NULL, tps65217_uv1_ranges, 1),
+			   NULL, tps65217_uv1_ranges, 1, TPS65217_REG_SEQ2,
+			   TPS65217_SEQ2_DC3_SEQ_MASK),
 	TPS65217_REGULATOR("LDO1", TPS65217_LDO_1, "ldo1",
 			   tps65217_pmic_ldo1_ops, 16, TPS65217_REG_DEFLDO1,
 			   TPS65217_DEFLDO1_LDO1_MASK, TPS65217_ENABLE_LDO1_EN,
-			   LDO1_VSEL_table, NULL, 0),
+			   LDO1_VSEL_table, NULL, 0, TPS65217_REG_SEQ2,
+			   TPS65217_SEQ2_LDO1_SEQ_MASK),
 	TPS65217_REGULATOR("LDO2", TPS65217_LDO_2, "ldo2", tps65217_pmic_ops,
 			   64, TPS65217_REG_DEFLDO2,
 			   TPS65217_DEFLDO2_LDO2_MASK, TPS65217_ENABLE_LDO2_EN,
 			   NULL, tps65217_uv1_ranges,
-			   ARRAY_SIZE(tps65217_uv1_ranges)),
+			   ARRAY_SIZE(tps65217_uv1_ranges), TPS65217_REG_SEQ3,
+			   TPS65217_SEQ3_LDO2_SEQ_MASK),
 	TPS65217_REGULATOR("LDO3", TPS65217_LDO_3, "ldo3", tps65217_pmic_ops,
 			   32, TPS65217_REG_DEFLS1, TPS65217_DEFLDO3_LDO3_MASK,
 			   TPS65217_ENABLE_LS1_EN | TPS65217_DEFLDO3_LDO3_EN,
 			   NULL, tps65217_uv2_ranges,
-			   ARRAY_SIZE(tps65217_uv2_ranges)),
+			   ARRAY_SIZE(tps65217_uv2_ranges), TPS65217_REG_SEQ3,
+			   TPS65217_SEQ3_LDO3_SEQ_MASK),
 	TPS65217_REGULATOR("LDO4", TPS65217_LDO_4, "ldo4", tps65217_pmic_ops,
 			   32, TPS65217_REG_DEFLS2, TPS65217_DEFLDO4_LDO4_MASK,
 			   TPS65217_ENABLE_LS2_EN | TPS65217_DEFLDO4_LDO4_EN,
 			   NULL, tps65217_uv2_ranges,
-			   ARRAY_SIZE(tps65217_uv2_ranges)),
+			   ARRAY_SIZE(tps65217_uv2_ranges), TPS65217_REG_SEQ4,
+			   TPS65217_SEQ4_LDO4_SEQ_MASK),
 };
 
 static int tps65217_regulator_probe(struct platform_device *pdev)
@@ -181,7 +230,8 @@ static int tps65217_regulator_probe(struct platform_device *pdev)
 	struct tps65217_board *pdata = dev_get_platdata(tps->dev);
 	struct regulator_dev *rdev;
 	struct regulator_config config = { };
-	int i;
+	int i, ret;
+	unsigned int val;
 
 	if (tps65217_chip_id(tps) != TPS65217) {
 		dev_err(&pdev->dev, "Invalid tps chip version\n");
@@ -200,6 +250,12 @@ static int tps65217_regulator_probe(struct platform_device *pdev)
 
 		rdev = devm_regulator_register(&pdev->dev, &regulators[i],
 					       &config);
+
+		/* Store default strobe info */
+		ret = tps65217_reg_read(tps, regulators[i].bypass_reg, &val);
+
+		regulator_data[i].strobe = val & regulators[i].bypass_mask;
+
 		if (IS_ERR(rdev)) {
 			dev_err(tps->dev, "failed to register %s regulator\n",
 				pdev->name);
-- 
1.9.1

[toc] | [prev] | [next] | [standalone]


#1428101 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromMark Brown <broonie@kernel.org>
Date2016-06-21 21:40 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rMzGF-1Bv-13@gated-at.bofh.it>
In reply to#1426352

[Multipart message — attachments visible in raw view] — view raw

On Mon, Jun 20, 2016 at 02:13:30PM +0530, Keerthy wrote:

> +static struct tps65217_regulator_data regulator_data[TPS65217_NUM_REGULATOR];

Why is this a static global?

> +		/* Store default strobe info */
> +		ret = tps65217_reg_read(tps, regulators[i].bypass_reg, &val);
> +
> +		regulator_data[i].strobe = val & regulators[i].bypass_mask;
> +

Not sure what this is doing...  I think this needs splitting up a bit,
it looks like it's a bit more than just adding the ops (which should be
generic things), that bit seems OK but there's these other bits in
there as well.

[toc] | [prev] | [next] | [standalone]


#1428649 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromMark Brown <broonie@kernel.org>
Date2016-06-22 12:20 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rMNqi-25n-7@gated-at.bofh.it>
In reply to#1428101

[Multipart message — attachments visible in raw view] — view raw

On Wed, Jun 22, 2016 at 03:44:02PM +0530, Keerthy wrote:

> Hence saving it in a static array and using it later in the ops functions to
> disable or enable regulator during suspend.

Why a static array and not part of the dynamically allocated driver
data?

[toc] | [prev] | [next] | [standalone]


#1428670 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromKeerthy <a0393675@ti.com>
Date2016-06-22 12:40 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rMNJE-2bS-15@gated-at.bofh.it>
In reply to#1428649

On Wednesday 22 June 2016 03:46 PM, Mark Brown wrote:
> On Wed, Jun 22, 2016 at 03:44:02PM +0530, Keerthy wrote:
>
>> Hence saving it in a static array and using it later in the ops functions to
>> disable or enable regulator during suspend.
>
> Why a static array and not part of the dynamically allocated driver
> data?

Okay. That can be done.
I can introduce another integer pointer to struct tps65217 which 
currently holds the driver data.

I will allocate memory for TPS65217_NUM_REGULATOR strobes during 
regulator probe. Is this approach okay?

>

[toc] | [prev] | [next] | [standalone]


#1429664 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromMark Brown <broonie@kernel.org>
Date2016-06-23 12:30 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rNa3x-4Q-59@gated-at.bofh.it>
In reply to#1428670

[Multipart message — attachments visible in raw view] — view raw

On Wed, Jun 22, 2016 at 03:56:33PM +0530, Keerthy wrote:

> I will allocate memory for TPS65217_NUM_REGULATOR strobes during regulator
> probe. Is this approach okay?

It should be I think.  Some more comments or changelog explaining what's
going on with the sequencing would also help.

[toc] | [prev] | [next] | [standalone]


#1429665 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromKeerthy <a0393675@ti.com>
Date2016-06-23 12:40 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rNadb-8B-1@gated-at.bofh.it>
In reply to#1429664

On Thursday 23 June 2016 03:56 PM, Mark Brown wrote:
> On Wed, Jun 22, 2016 at 03:56:33PM +0530, Keerthy wrote:
>
>> I will allocate memory for TPS65217_NUM_REGULATOR strobes during regulator
>> probe. Is this approach okay?
>
> It should be I think.  Some more comments or changelog explaining what's
> going on with the sequencing would also help.

Sure. I will do that. Thanks for the feedback.

>

[toc] | [prev] | [next] | [standalone]


#1428656 — Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration

FromKeerthy <a0393675@ti.com>
Date2016-06-22 12:20 +0200
SubjectRe: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
Message-ID<rMNqi-25n-9@gated-at.bofh.it>
In reply to#1428101

On Wednesday 22 June 2016 12:38 AM, Mark Brown wrote:
> On Mon, Jun 20, 2016 at 02:13:30PM +0530, Keerthy wrote:
>
>> +static struct tps65217_regulator_data regulator_data[TPS65217_NUM_REGULATOR];
>
> Why is this a static global?
>
>> +		/* Store default strobe info */
>> +		ret = tps65217_reg_read(tps, regulators[i].bypass_reg, &val);
>> +
>> +		regulator_data[i].strobe = val & regulators[i].bypass_mask;
>> +
>
> Not sure what this is doing...  I think this needs splitting up a bit,
> it looks like it's a bit more than just adding the ops (which should be
> generic things), that bit seems OK but there's these other bits in
> there as well.

Okay. Let me explain a bit more here:

The TPS65217 has a pre-defined power-up / power-down sequence which in a 
typical application does not need
to be changed. However, it is possible to define custom sequences under 
I2C control. The power-up sequence is
defined by strobes and delay times. Each output rail is assigned to a 
strobe to determine the order in which the
rails are enabled.

Every regulator of tps65217 PMIC has sequence registers and every 
regulator has a default strobe value
and gets disabled when a particular power down sequence occurs.

So as to keep it on during suspend we write value 0 to strobe so that 
the regulator is out of all sequencers and is not impacted by any power 
down sequence. We are saving the default strobe value during probe so 
that when we want to regulator to be enabled during suspend we write 0 
to strobe and when we want it to get disabled during suspend we write 
the default saved strobe value.

Hence saving it in a static array and using it later in the ops 
functions to disable or enable regulator during suspend.

>

[toc] | [prev] | [next] | [standalone]


#1426355 — [PATCH 5/9] regulator: tps65218: force set power-up/down strobe to 3 for dcdc3

FromKeerthy <j-keerthy@ti.com>
Date2016-06-20 11:00 +0200
Subject[PATCH 5/9] regulator: tps65218: force set power-up/down strobe to 3 for dcdc3
Message-ID<rM3dM-5ZG-29@gated-at.bofh.it>
In reply to#1426345
From: Tero Kristo <t-kristo@ti.com>

The reset value for this register seems broken on certain versions of
tps65218 chip, so make sure the dcdc3 settings is proper. Needed for
proper functionality of rtc+ddr / rtc-only modes.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
 drivers/regulator/tps65218-regulator.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/tps65218-regulator.c b/drivers/regulator/tps65218-regulator.c
index 8eca1eb..d1e631d 100644
--- a/drivers/regulator/tps65218-regulator.c
+++ b/drivers/regulator/tps65218-regulator.c
@@ -180,8 +180,12 @@ static int tps65218_pmic_set_suspend_disable(struct regulator_dev *dev)
 	if (rid < TPS65218_DCDC_1 || rid > TPS65218_LDO_1)
 		return -EINVAL;
 
-	if (!tps->info[rid]->strobe)
-		return -EINVAL;
+	if (!tps->info[rid]->strobe) {
+		if (rid == TPS65218_DCDC_3)
+			tps->info[rid]->strobe = 3;
+		else
+			return -EINVAL;
+	}
 
 	return tps65218_set_bits(tps, dev->desc->bypass_reg,
 				 dev->desc->bypass_mask,
-- 
1.9.1

[toc] | [prev] | [next] | [standalone]


#1426364 — [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend

FromKeerthy <j-keerthy@ti.com>
Date2016-06-20 11:10 +0200
Subject[PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend
Message-ID<rM3ns-6ij-31@gated-at.bofh.it>
In reply to#1426345
dcdc3, dcdc5, dcdc6 supply ddr and rtc respectively. These
are required to be on during suspend. Hence set the state accordingly.

Signed-off-by: Keerthy <j-keerthy@ti.com>
---
 arch/arm/boot/dts/am437x-gp-evm.dts | 10 ++++++++++
 arch/arm/boot/dts/am437x-sk-evm.dts | 27 +++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
index 84832bf..7b7ccc0 100644
--- a/arch/arm/boot/dts/am437x-gp-evm.dts
+++ b/arch/arm/boot/dts/am437x-gp-evm.dts
@@ -537,7 +537,11 @@
 			regulator-max-microvolt = <1500000>;
 			regulator-boot-on;
 			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
 		};
+
 		dcdc5: regulator-dcdc5 {
 			compatible = "ti,tps65218-dcdc5";
 			regulator-name = "v1_0bat";
@@ -545,6 +549,9 @@
 			regulator-max-microvolt = <1000000>;
 			regulator-boot-on;
 			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
 		};
 
 		dcdc6: regulator-dcdc6 {
@@ -554,6 +561,9 @@
 			regulator-max-microvolt = <1800000>;
 			regulator-boot-on;
 			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
 		};
 
 		ldo1: regulator-ldo1 {
diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
index d82dd6e..03e3d02 100644
--- a/arch/arm/boot/dts/am437x-sk-evm.dts
+++ b/arch/arm/boot/dts/am437x-sk-evm.dts
@@ -454,6 +454,9 @@
 			regulator-max-microvolt = <1500000>;
 			regulator-boot-on;
 			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
 		};
 
 		dcdc4: regulator-dcdc4 {
@@ -465,6 +468,30 @@
 			regulator-always-on;
 		};
 
+		dcdc5: regulator-dcdc5 {
+			compatible = "ti,tps65218-dcdc5";
+			regulator-name = "v1_0bat";
+			regulator-min-microvolt = <1000000>;
+			regulator-max-microvolt = <1000000>;
+			regulator-boot-on;
+			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
+		};
+
+		dcdc6: regulator-dcdc6 {
+			compatible = "ti,tps65218-dcdc6";
+			regulator-name = "v1_8bat";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-boot-on;
+			regulator-always-on;
+			regulator-state-mem {
+				regulator-on-in-suspend;
+			};
+		};
+
 		ldo1: regulator-ldo1 {
 			compatible = "ti,tps65218-ldo1";
 			regulator-name = "v1_8d";
-- 
1.9.1

[toc] | [prev] | [next] | [standalone]


#1427648 — Re: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend

FromTony Lindgren <tony@atomide.com>
Date2016-06-21 13:50 +0200
SubjectRe: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend
Message-ID<rMslQ-5hj-25@gated-at.bofh.it>
In reply to#1426364
* Keerthy <j-keerthy@ti.com> [160620 01:46]:
> dcdc3, dcdc5, dcdc6 supply ddr and rtc respectively. These
> are required to be on during suspend. Hence set the state accordingly.

Actually, please fix up the subject lines for the dts patches too :)

Instead of "ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make..."
how about something like "ARM: dts: Allow dcdc enable during
suspend for am43xx"?

Regards,

Tony

[toc] | [prev] | [next] | [standalone]


#1427681 — Re: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend

FromTony Lindgren <tony@atomide.com>
Date2016-06-21 14:10 +0200
SubjectRe: [PATCH 4/9] ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend
Message-ID<rMsFb-5Dv-21@gated-at.bofh.it>
In reply to#1426364
* Keerthy <j-keerthy@ti.com> [160620 01:46]:
> dcdc3, dcdc5, dcdc6 supply ddr and rtc respectively. These
> are required to be on during suspend. Hence set the state accordingly.

Are these dts changes safe for me to apply separately?

Regards,

Tony

[toc] | [prev] | [next] | [standalone]


#1426366 — [PATCH 7/9] mfd: tps65218: add version check to the PMIC probe

FromKeerthy <j-keerthy@ti.com>
Date2016-06-20 11:10 +0200
Subject[PATCH 7/9] mfd: tps65218: add version check to the PMIC probe
Message-ID<rM345-5Wp-5@gated-at.bofh.it>
In reply to#1426345
From: Tero Kristo <t-kristo@ti.com>

Version information will be needed to handle some error cases under the
regulator driver, so store the information once during MFD probe.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
 drivers/mfd/tps65218.c       | 9 +++++++++
 include/linux/mfd/tps65218.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c
index 80b9dc3..ba610ad 100644
--- a/drivers/mfd/tps65218.c
+++ b/drivers/mfd/tps65218.c
@@ -219,6 +219,7 @@ static int tps65218_probe(struct i2c_client *client,
 	struct tps65218 *tps;
 	const struct of_device_id *match;
 	int ret;
+	unsigned int chipid;
 
 	match = of_match_device(of_tps65218_match_table, &client->dev);
 	if (!match) {
@@ -250,6 +251,14 @@ static int tps65218_probe(struct i2c_client *client,
 	if (ret < 0)
 		return ret;
 
+	ret = tps65218_reg_read(tps, TPS65218_REG_CHIPID, &chipid);
+	if (ret) {
+		dev_err(tps->dev, "Failed to read chipid: %d\n", ret);
+		return ret;
+	}
+
+	tps->rev = chipid & TPS65218_CHIPID_REV_MASK;
+
 	ret = of_platform_populate(client->dev.of_node, NULL, NULL,
 				   &client->dev);
 	if (ret < 0)
diff --git a/include/linux/mfd/tps65218.h b/include/linux/mfd/tps65218.h
index 7fdf532..85e464e 100644
--- a/include/linux/mfd/tps65218.h
+++ b/include/linux/mfd/tps65218.h
@@ -267,6 +267,7 @@ struct tps_info {
 struct tps65218 {
 	struct device *dev;
 	unsigned int id;
+	u8 rev;
 
 	struct mutex tps_lock;		/* lock guarding the data structure */
 	/* IRQ Data */
-- 
1.9.1

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web