Skip to contentSkip to conversation

regulator: max77620: Initialize values for DT properties

PATCH In review Mark Zhang 2 participants 4 messages Jan 10, 2019 – Jan 11, 2019

Subsystems (2)
lore
Share & tools
lore

Mark Zhang

author
#0 lore raw

PATCH 1/2 regulator: max77620: Initialize values for DT properties

If regulator DT node doesn't exist, its of_parse_cb callback function isn't called. Then all values for DT properties are filled with zero. This leads to wrong register update for FPS and POK settings.

---
 drivers/regulator/max77620-regulator.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/regulator/max77620-regulator.c +9 -1
index b94e3a721721..cd93cf53e23c 100644
@@ -1,7 +1,7 @@
 /*
  * Maxim MAX77620 Regulator driver
  *
- * Copyright (c) 2016, NVIDIA CORPORATION.  All rights reserved.
+ * Copyright (c) 2016-2018, NVIDIA CORPORATION.  All rights reserved.
  *
  * Author: Mallikarjun Kasoju <[email protected]>
  *	Laxman Dewangan <[email protected]>
@@ -803,6 +803,14 @@ static int max77620_regulator_probe(struct platform_device *pdev)
 		rdesc = &rinfo[id].desc;
 		pmic->rinfo[id] = &max77620_regs_info[id];
 		pmic->enable_power_mode[id] = MAX77620_POWER_MODE_NORMAL;
+		pmic->reg_pdata[id].active_fps_src = -1;
+		pmic->reg_pdata[id].active_fps_pd_slot = -1;
+		pmic->reg_pdata[id].active_fps_pu_slot = -1;
+		pmic->reg_pdata[id].suspend_fps_src = -1;
+		pmic->reg_pdata[id].suspend_fps_pd_slot = -1;
+		pmic->reg_pdata[id].suspend_fps_pu_slot = -1;
+		pmic->reg_pdata[id].power_ok = -1;
+		pmic->reg_pdata[id].ramp_rate_setting = -1;
 
 		ret = max77620_read_slew_rate(pmic, id);
 		if (ret < 0)
Signature · 1 line
2.19.2
author
#1 lore raw

PATCH 2/2 regulator: max77620: disable notifier events for FPS rails

Disabling regulator notifier events if regulator is configured part of flexible power sequencer(FPS), there is no SW control to enable/disable if regulator is configured part of FPS, so disabling notifier events if client driver try to enable/disable FPS rails.

---
 drivers/regulator/max77620-regulator.c | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/regulator/max77620-regulator.c +7 -0
index cd93cf53e23c..20e985071bfc 100644
@@ -823,6 +823,13 @@ static int max77620_regulator_probe(struct platform_device *pdev)
 				rdesc->name, ret);
 			return ret;
 		}
+
+		/* there is no SW control for rails which are part of FPS
+		 * set always no contraint to true to avoid regulator
+		 * enable/disable notification
+		 */
+		if (pmic->reg_pdata[id].active_fps_src != MAX77620_FPS_SRC_NONE)
+			rdev->constraints->always_on = true;
 	}
 
 	return 0;
Signature · 1 line
2.19.2
maintainer
#2 lore raw

Re: [PATCH 2/2] regulator: max77620: disable notifier events for FPS rails

drivers/regulator/max77620-regulator.c static int max77620_regulator_probe(struct platform_device *pdev) · line 832

Quoted 6 lines · Mark Zhang
drivers/regulator/max77620-regulator.c +6 -0
+		/* there is no SW control for rails which are part of FPS
+		 * set always no contraint to true to avoid regulator
+		 * enable/disable notification
+		 */
+		if (pmic->reg_pdata[id].active_fps_src != MAX77620_FPS_SRC_NONE)
+			rdev->constraints->always_on = true;

A driver should never modify the constraints, you should register a different set of operations without an enable operation instead and let the framework handle this.

author
#3 lore raw

Re: [PATCH 2/2] regulator: max77620: disable notifier events for FPS rails

Quoted 12 lines · Mark Brown

drivers/regulator/max77620-regulator.c static int max77620_regulator_probe(struct platform_device *pdev) · line 832

Quoted 6 lines · Mark Zhang
drivers/regulator/max77620-regulator.c +6 -0
+		/* there is no SW control for rails which are part of FPS
+		 * set always no contraint to true to avoid regulator
+		 * enable/disable notification
+		 */
+		if (pmic->reg_pdata[id].active_fps_src != MAX77620_FPS_SRC_NONE)
+			rdev->constraints->always_on = true;

A driver should never modify the constraints, you should register a different set of operations without an enable operation instead and let the framework handle this.

Oh right, today I checked the codes based on your suggestion so I think we don't need this patch now. We can find another way to fix our issue without touching the framework constraints. Thanks.

Mark

Quoted 1 line