linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe
@ 2021-11-24 19:01 Dmitry Osipenko
  2021-12-17 23:38 ` Dmitry Osipenko
  2021-12-29 13:36 ` Lee Jones
  0 siblings, 2 replies; 3+ messages in thread
From: Dmitry Osipenko @ 2021-11-24 19:01 UTC (permalink / raw)
  To: Tony Lindgren, Lee Jones, Thierry Reding, Jonathan Hunter,
	Svyatoslav Ryhel
  Cc: linux-tegra, linux-omap, linux-kernel

The PWR_OFF bit needs to be set in order to power off properly, without
hanging PMIC. This bit needs to be set early in order to allow thermal
protection of NVIDIA Terga SoCs to power off hardware properly, otherwise
a battery re-plug may be needed on some devices to recover after the hang.

Cc: <stable@vger.kernel.org>
Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # ASUS TF201
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 drivers/mfd/tps65910.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
index 6e105cca27d4..67e2707af4bc 100644
--- a/drivers/mfd/tps65910.c
+++ b/drivers/mfd/tps65910.c
@@ -436,15 +436,6 @@ static void tps65910_power_off(void)
 
 	tps65910 = dev_get_drvdata(&tps65910_i2c_client->dev);
 
-	/*
-	 * The PWR_OFF bit needs to be set separately, before transitioning
-	 * to the OFF state. It enables the "sequential" power-off mode on
-	 * TPS65911, it's a NO-OP on TPS65910.
-	 */
-	if (regmap_set_bits(tps65910->regmap, TPS65910_DEVCTRL,
-			    DEVCTRL_PWR_OFF_MASK) < 0)
-		return;
-
 	regmap_update_bits(tps65910->regmap, TPS65910_DEVCTRL,
 			   DEVCTRL_DEV_OFF_MASK | DEVCTRL_DEV_ON_MASK,
 			   DEVCTRL_DEV_OFF_MASK);
@@ -504,6 +495,19 @@ static int tps65910_i2c_probe(struct i2c_client *i2c,
 	tps65910_sleepinit(tps65910, pmic_plat_data);
 
 	if (pmic_plat_data->pm_off && !pm_power_off) {
+		/*
+		 * The PWR_OFF bit needs to be set separately, before
+		 * transitioning to the OFF state. It enables the "sequential"
+		 * power-off mode on TPS65911, it's a NO-OP on TPS65910.
+		 */
+		ret = regmap_set_bits(tps65910->regmap, TPS65910_DEVCTRL,
+				      DEVCTRL_PWR_OFF_MASK);
+		if (ret) {
+			dev_err(&i2c->dev, "failed to set power-off mode: %d\n",
+				ret);
+			return ret;
+		}
+
 		tps65910_i2c_client = i2c;
 		pm_power_off = tps65910_power_off;
 	}
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe
  2021-11-24 19:01 [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe Dmitry Osipenko
@ 2021-12-17 23:38 ` Dmitry Osipenko
  2021-12-29 13:36 ` Lee Jones
  1 sibling, 0 replies; 3+ messages in thread
From: Dmitry Osipenko @ 2021-12-17 23:38 UTC (permalink / raw)
  To: Tony Lindgren, Lee Jones, Thierry Reding, Jonathan Hunter,
	Svyatoslav Ryhel
  Cc: linux-tegra, linux-omap, linux-kernel

24.11.2021 22:01, Dmitry Osipenko пишет:
> The PWR_OFF bit needs to be set in order to power off properly, without
> hanging PMIC. This bit needs to be set early in order to allow thermal
> protection of NVIDIA Terga SoCs to power off hardware properly, otherwise
> a battery re-plug may be needed on some devices to recover after the hang.
> 
> Cc: <stable@vger.kernel.org>
> Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # ASUS TF201
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
>  drivers/mfd/tps65910.c | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)

Hello Lee,

Will you be able to take this patch into yours MFD tree?



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe
  2021-11-24 19:01 [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe Dmitry Osipenko
  2021-12-17 23:38 ` Dmitry Osipenko
@ 2021-12-29 13:36 ` Lee Jones
  1 sibling, 0 replies; 3+ messages in thread
From: Lee Jones @ 2021-12-29 13:36 UTC (permalink / raw)
  To: Dmitry Osipenko
  Cc: Tony Lindgren, Thierry Reding, Jonathan Hunter, Svyatoslav Ryhel,
	linux-tegra, linux-omap, linux-kernel

On Wed, 24 Nov 2021, Dmitry Osipenko wrote:

> The PWR_OFF bit needs to be set in order to power off properly, without
> hanging PMIC. This bit needs to be set early in order to allow thermal
> protection of NVIDIA Terga SoCs to power off hardware properly, otherwise
> a battery re-plug may be needed on some devices to recover after the hang.
> 
> Cc: <stable@vger.kernel.org>
> Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # ASUS TF201
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>

Please keep these chronological.

> ---
>  drivers/mfd/tps65910.c | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)

Applied, thanks.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-12-29 13:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-24 19:01 [PATCH v1] mfd: tps65910: Set PWR_OFF bit during driver probe Dmitry Osipenko
2021-12-17 23:38 ` Dmitry Osipenko
2021-12-29 13:36 ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).