regulator: max77620: Initialize values for DT properties
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
@@ -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
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
@@ -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
Mark Brown
maintainerRe: [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.
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