2019-01-10 04:14:06

by Mark Zhang

[permalink] [raw]
Subject: [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.

Signed-off-by: Jinyoung Park <[email protected]>
Signed-off-by: Mark Zhang <[email protected]>
---
drivers/regulator/max77620-regulator.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/regulator/max77620-regulator.c b/drivers/regulator/max77620-regulator.c
index b94e3a721721..cd93cf53e23c 100644
--- a/drivers/regulator/max77620-regulator.c
+++ b/drivers/regulator/max77620-regulator.c
@@ -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)
--
2.19.2



2019-01-10 04:14:06

by Mark Zhang

[permalink] [raw]
Subject: [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.

Signed-off-by: Venkat Reddy Talla <[email protected]>
Signed-off-by: Mark Zhang <[email protected]>
---
drivers/regulator/max77620-regulator.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/regulator/max77620-regulator.c b/drivers/regulator/max77620-regulator.c
index cd93cf53e23c..20e985071bfc 100644
--- a/drivers/regulator/max77620-regulator.c
+++ b/drivers/regulator/max77620-regulator.c
@@ -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;
--
2.19.2


2019-01-10 12:10:19

by Mark Brown

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

On Thu, Jan 10, 2019 at 12:11:17PM +0800, Mark Zhang wrote:

> + /* 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.


Attachments:
(No filename) (521.00 B)
signature.asc (499.00 B)
Download all attachments

2019-01-11 14:20:53

by Mark Zhang

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

On 1/10/2019 8:07 PM, Mark Brown wrote:
> On Thu, Jan 10, 2019 at 12:11:17PM +0800, Mark Zhang wrote:
>
>> + /* 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

>