diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 5dd17a3415776..f2214e7c75b33 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1387,7 +1387,13 @@ static int set_machine_constraints(struct regulator_dev *rdev) if (rdev->supply_name && !rdev->supply) return -EPROBE_DEFER; - if (rdev->supply) { + /* If supplying regulator has already been enabled, + * it's not intended to have use_count increment + * when rdev is only boot-on. + */ + if (rdev->supply && + (rdev->constraints->always_on || + !regulator_is_enabled(rdev->supply))) { ret = regulator_enable(rdev->supply); if (ret < 0) { _regulator_put(rdev->supply);