Re: [PATCH] hwmon: (ina2xx) make regulator 'vs' support optional

From: Guenter Roeck
Date: Tue Apr 08 2025 - 14:07:56 EST


On 4/4/25 01:36, Ciprian Marian Costea wrote:
On 4/3/2025 7:06 PM, Guenter Roeck wrote:
On Thu, Apr 03, 2025 at 05:29:26PM +0300, Ciprian Marian Costea wrote:
On 4/3/2025 3:15 PM, Guenter Roeck wrote:
On 4/3/25 03:15, Ciprian Costea wrote:
From: Ciprian Marian Costea <ciprianmarian.costea@xxxxxxxxxxx>

S32G2/S32G3 based boards which integrate the ina231 sensor do not have a
dedicated voltage regulator.

Co-developed-by: Florin Buica <florin.buica@xxxxxxx>
Signed-off-by: Florin Buica <florin.buica@xxxxxxx>
Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@xxxxxxxxxxx>
---
   drivers/hwmon/ina2xx.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c
index 345fe7db9de9..ab4972f94a8c 100644
--- a/drivers/hwmon/ina2xx.c
+++ b/drivers/hwmon/ina2xx.c
@@ -959,8 +959,8 @@ static int ina2xx_probe(struct i2c_client *client)
           return PTR_ERR(data->regmap);
       }
-    ret = (dev, "vs");
-    if (ret)
+    ret = devm_regulator_get_enable_optional(dev, "vs");

devm_regulator_get_enable() should provide a dummy regulator if there is
no explicit regulator. Why does this not work ?

+    if (ret < 0 && ret != -ENODEV)

Why this added check ?

I know it used to be necessary if regulator support is disabled,
but that is no longer the case.

Guenter


Hello Guenter,

I've just tested and devm_regulator_get_enable() does work as you've
described, providing a dummy regulator.

But, according to the 'ti,ina2xx' binding [1] I see that the `vs-supply`
property is not required. Hence wouldn't it be correct for `vs-supply` to be
optional ? Using 'devm_regulator_get_enable_optional()'

Yes, but the reasoning you provided is different and suggested that the
current code would not work. Since that is not the case, the change would
be purely cosmetic. Also, I still don't see why the -ENODEV check would be
necessary.

Guenter

For boards such as S32G274A-EVB, S32G274A-RDB2 and S32G399A-RDB3 which do not have a voltage regulator, 'devm_regulator_get_enable_optional()' would return error value -19 (-ENODEV). Also, other usages from the Linux Kernel seem to perform the same error check when using 'devm_regulator_get_enable_optional()' [1], [2] and [3].

This patch would help in S32G2 and S32G3 to not print an unnecessary kernel log warning hinting usage of a dummy regulator when such a regulator is not required according to the binding.

Would you like me to send a V2 with the commit title updated as follows ?

"
hwmon: (ina2xx) make regulator 'vs' support optional

According to the 'ti,ina2xx' binding, the 'vs-supply' property is optional. Furthermore, S32G2/S32G3 based boards which integrate the ina231 sensor do not have a dedicated voltage regulator. Thus, making regulator support optional would help in avoiding any unnecessary kernel log warnings during boot.
"

Make it:

"According to the 'ti,ina2xx' binding, the 'vs-supply' property is optional.
Use devm_regulator_get_enable_optional() to avoid a kernel warning message
if the property is not provided.
"

Then add a note to the code explaining that the check for -ENODEV is necessary
because the regulator core returns -ENODEV if the regulator is not available.

Why it makes sense for this function to return -ENODEV if an _optional_ regulator
is not available escapes me, but that is a different issue.

Guenter