mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-22 09:17:53 +07:00
regulator: Implement devm_regulator_free()
Allow consumers to free regulators allocated using devm_regulator_get() if they need to. This will not normally be required. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
070b907922
commit
d5ad34f7cb
@ -1421,6 +1421,34 @@ void regulator_put(struct regulator *regulator)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regulator_put);
|
EXPORT_SYMBOL_GPL(regulator_put);
|
||||||
|
|
||||||
|
static int devm_regulator_match(struct device *dev, void *res, void *data)
|
||||||
|
{
|
||||||
|
struct regulator **r = res;
|
||||||
|
if (!r || !*r) {
|
||||||
|
WARN_ON(!r || !*r);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return *r == data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devm_regulator_put - Resource managed regulator_put()
|
||||||
|
* @regulator: regulator to free
|
||||||
|
*
|
||||||
|
* Deallocate a regulator allocated with devm_regulator_get(). Normally
|
||||||
|
* this function will not need to be called and the resource management
|
||||||
|
* code will ensure that the resource is freed.
|
||||||
|
*/
|
||||||
|
void devm_regulator_put(struct regulator *regulator)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
rc = devres_destroy(regulator->dev, devm_regulator_release,
|
||||||
|
devm_regulator_match, regulator);
|
||||||
|
WARN_ON(rc);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(devm_regulator_put);
|
||||||
|
|
||||||
static int _regulator_can_change_status(struct regulator_dev *rdev)
|
static int _regulator_can_change_status(struct regulator_dev *rdev)
|
||||||
{
|
{
|
||||||
if (!rdev->constraints)
|
if (!rdev->constraints)
|
||||||
|
@ -137,6 +137,7 @@ struct regulator *__must_check devm_regulator_get(struct device *dev,
|
|||||||
struct regulator *__must_check regulator_get_exclusive(struct device *dev,
|
struct regulator *__must_check regulator_get_exclusive(struct device *dev,
|
||||||
const char *id);
|
const char *id);
|
||||||
void regulator_put(struct regulator *regulator);
|
void regulator_put(struct regulator *regulator);
|
||||||
|
void devm_regulator_free(struct regulator *regulator);
|
||||||
|
|
||||||
/* regulator output control and status */
|
/* regulator output control and status */
|
||||||
int regulator_enable(struct regulator *regulator);
|
int regulator_enable(struct regulator *regulator);
|
||||||
|
Loading…
Reference in New Issue
Block a user