Loading drivers/regulator/core.c +30 −0 Original line number Diff line number Diff line Loading @@ -1493,6 +1493,36 @@ static void _regulator_put(struct regulator *regulator) module_put(rdev->owner); } /** * devm_regulator_get_exclusive - Resource managed regulator_get_exclusive() * @dev: device for regulator "consumer" * @id: Supply name or regulator ID. * * Managed regulator_get_exclusive(). Regulators returned from this function * are automatically regulator_put() on driver detach. See regulator_get() for * more information. */ struct regulator *devm_regulator_get_exclusive(struct device *dev, const char *id) { struct regulator **ptr, *regulator; ptr = devres_alloc(devm_regulator_release, sizeof(*ptr), GFP_KERNEL); if (!ptr) return ERR_PTR(-ENOMEM); regulator = _regulator_get(dev, id, 1); if (!IS_ERR(regulator)) { *ptr = regulator; devres_add(dev, ptr); } else { devres_free(ptr); } return regulator; } EXPORT_SYMBOL_GPL(devm_regulator_get_exclusive); /** * regulator_put - "free" the regulator source * @regulator: regulator source Loading include/linux/regulator/consumer.h +2 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ struct regulator *__must_check devm_regulator_get(struct device *dev, const char *id); struct regulator *__must_check regulator_get_exclusive(struct device *dev, const char *id); struct regulator *__must_check devm_regulator_get_exclusive(struct device *dev, const char *id); struct regulator *__must_check regulator_get_optional(struct device *dev, const char *id); struct regulator *__must_check devm_regulator_get_optional(struct device *dev, Loading Loading
drivers/regulator/core.c +30 −0 Original line number Diff line number Diff line Loading @@ -1493,6 +1493,36 @@ static void _regulator_put(struct regulator *regulator) module_put(rdev->owner); } /** * devm_regulator_get_exclusive - Resource managed regulator_get_exclusive() * @dev: device for regulator "consumer" * @id: Supply name or regulator ID. * * Managed regulator_get_exclusive(). Regulators returned from this function * are automatically regulator_put() on driver detach. See regulator_get() for * more information. */ struct regulator *devm_regulator_get_exclusive(struct device *dev, const char *id) { struct regulator **ptr, *regulator; ptr = devres_alloc(devm_regulator_release, sizeof(*ptr), GFP_KERNEL); if (!ptr) return ERR_PTR(-ENOMEM); regulator = _regulator_get(dev, id, 1); if (!IS_ERR(regulator)) { *ptr = regulator; devres_add(dev, ptr); } else { devres_free(ptr); } return regulator; } EXPORT_SYMBOL_GPL(devm_regulator_get_exclusive); /** * regulator_put - "free" the regulator source * @regulator: regulator source Loading
include/linux/regulator/consumer.h +2 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ struct regulator *__must_check devm_regulator_get(struct device *dev, const char *id); struct regulator *__must_check regulator_get_exclusive(struct device *dev, const char *id); struct regulator *__must_check devm_regulator_get_exclusive(struct device *dev, const char *id); struct regulator *__must_check regulator_get_optional(struct device *dev, const char *id); struct regulator *__must_check devm_regulator_get_optional(struct device *dev, Loading