Files
linux/rust/helpers/regulator.c
Daniel Almeida 2e0fd4583d rust: regulator: add devm_enable and devm_enable_optional
A lot of drivers only care about enabling the regulator for as long as
the underlying Device is bound. This can be easily observed due to the
extensive use of `devm_regulator_get_enable` and
`devm_regulator_get_enable_optional` throughout the kernel.

Therefore, make this helper available in Rust. Also add an example
noting how it should be the default API unless the driver needs more
fine-grained control over the regulator.

Suggested-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com>
Link: https://patch.msgid.link/20250910-regulator-remove-dynamic-v3-2-07af4dfa97cc@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2025-09-10 21:02:16 +01:00

54 lines
1.2 KiB
C

// SPDX-License-Identifier: GPL-2.0
#include <linux/regulator/consumer.h>
#ifndef CONFIG_REGULATOR
void rust_helper_regulator_put(struct regulator *regulator)
{
regulator_put(regulator);
}
int rust_helper_regulator_set_voltage(struct regulator *regulator, int min_uV,
int max_uV)
{
return regulator_set_voltage(regulator, min_uV, max_uV);
}
int rust_helper_regulator_get_voltage(struct regulator *regulator)
{
return regulator_get_voltage(regulator);
}
struct regulator *rust_helper_regulator_get(struct device *dev, const char *id)
{
return regulator_get(dev, id);
}
int rust_helper_regulator_enable(struct regulator *regulator)
{
return regulator_enable(regulator);
}
int rust_helper_regulator_disable(struct regulator *regulator)
{
return regulator_disable(regulator);
}
int rust_helper_regulator_is_enabled(struct regulator *regulator)
{
return regulator_is_enabled(regulator);
}
int rust_helper_devm_regulator_get_enable(struct device *dev, const char *id)
{
return devm_regulator_get_enable(dev, id);
}
int rust_helper_devm_regulator_get_enable_optional(struct device *dev, const char *id)
{
return devm_regulator_get_enable_optional(dev, id);
}
#endif