]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: pse-pd: Avoid setting max_uA in regulator constraints
authorKory Maincent <kory.maincent@bootlin.com>
Fri, 10 Jan 2025 09:40:21 +0000 (10:40 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 14 Jan 2025 12:56:32 +0000 (13:56 +0100)
Setting the max_uA constraint in the regulator API imposes a current
limit during the regulator registration process. This behavior conflicts
with preserving the maximum PI power budget configuration across reboots.

Instead, compare the desired current limit to MAX_PI_CURRENT in the
pse_pi_set_current_limit() function to ensure proper handling of the
power budget.

Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/pse-pd/pse_core.c

index 2906ce173f66cdea5953888c5f2594ab67ed2fe9..9fee4dd53515afad773e071c5c2a90270a48d191 100644 (file)
@@ -357,6 +357,9 @@ static int pse_pi_set_current_limit(struct regulator_dev *rdev, int min_uA,
        if (!ops->pi_set_current_limit)
                return -EOPNOTSUPP;
 
+       if (max_uA > MAX_PI_CURRENT)
+               return -ERANGE;
+
        id = rdev_get_id(rdev);
        mutex_lock(&pcdev->lock);
        ret = ops->pi_set_current_limit(pcdev, id, max_uA);
@@ -403,11 +406,9 @@ devm_pse_pi_regulator_register(struct pse_controller_dev *pcdev,
 
        rinit_data->constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS;
 
-       if (pcdev->ops->pi_set_current_limit) {
+       if (pcdev->ops->pi_set_current_limit)
                rinit_data->constraints.valid_ops_mask |=
                        REGULATOR_CHANGE_CURRENT;
-               rinit_data->constraints.max_uA = MAX_PI_CURRENT;
-       }
 
        rinit_data->supply_regulator = "vpwr";