diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 15a9f9eba773..ea429212672d 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -4436,6 +4436,8 @@ regulator_register(const struct regulator_desc *regulator_desc, } rdev_init_debugfs(rdev); + rdev->proxy_consumer = regulator_proxy_consumer_register(dev, + config->of_node); /* try to resolve regulators supply since a new one was registered */ class_for_each_device(®ulator_class, NULL, NULL, @@ -4475,6 +4477,7 @@ void regulator_unregister(struct regulator_dev *rdev) regulator_disable(rdev->supply); regulator_put(rdev->supply); } + regulator_proxy_consumer_unregister(rdev->proxy_consumer); mutex_lock(®ulator_list_mutex); debugfs_remove_recursive(rdev->debugfs); flush_work(&rdev->disable_work.work); diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h index 0fd8fbb74763..917d4287af97 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h @@ -20,6 +20,7 @@ #include #include #include +#include struct gpio_desc; struct regmap; @@ -475,6 +476,7 @@ struct regulator_dev { /* time when this regulator was disabled last time */ unsigned long last_off_jiffy; + struct proxy_consumer *proxy_consumer; }; struct regulator_dev *