[PATCH 3/3] power: regulator: common: fix compilation issue
Peng Fan
peng.fan at oss.nxp.com
Thu Dec 11 09:33:31 CET 2025
On Wed, Dec 10, 2025 at 10:24:24PM +0100, Julien Stephan wrote:
>If CONFIG_DM_GPIO is not enabled, compilation fails with the following
>errors:
>
>aarch64-none-linux-gnu-ld: drivers/power/regulator/regulator_common.o: in function `regulator_common_of_to_plat':
><...>/u-boot/drivers/power/regulator/regulator_common.c:30: undefined reference to `gpio_request_by_name'
>aarch64-none-linux-gnu-ld: drivers/power/regulator/regulator_common.o: in function `regulator_common_get_enable':
><...>/u-boot/drivers/power/regulator/regulator_common.c:57: undefined reference to `dm_gpio_get_value'
>aarch64-none-linux-gnu-ld: drivers/power/regulator/regulator_common.o: in function `regulator_common_set_enable':
><...>/u-boot/drivers/power/regulator/regulator_common.c:92: undefined reference to `dm_gpio_set_value'
>make: *** [Makefile:2029: u-boot] Error 139
>
>Since the enable gpio is optional we can conditionally skip these calls.
>
>Signed-off-by: Julien Stephan <jstephan at baylibre.com>
>---
> drivers/power/regulator/regulator_common.c | 88 +++++++++++++++---------------
> 1 file changed, 45 insertions(+), 43 deletions(-)
>
>diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
>index cf98998579aa8a3cb7f09dccd2124207a58d8b00..fcf19253e048995fdcd952a48a6976cf86991ca8 100644
>--- a/drivers/power/regulator/regulator_common.c
>+++ b/drivers/power/regulator/regulator_common.c
>@@ -27,12 +27,14 @@ int regulator_common_of_to_plat(struct udevice *dev,
>
> /* Get optional enable GPIO desc */
> gpio = &plat->gpio;
>- ret = gpio_request_by_name(dev, enable_gpio_name, 0, gpio, flags);
>- if (ret) {
>- debug("Regulator '%s' optional enable GPIO - not found! Error: %d\n",
>- dev->name, ret);
>- if (ret != -ENOENT)
>- return ret;
>+ if (IS_ENABLED(CONFIG_DM_GPIO)) {
This should be CONFIG_IS_ENABLED(DM_GPIO)
>- if (!dm_gpio_is_valid(&plat->gpio))
>- return true;
>+ if (IS_ENABLED(CONFIG_DM_GPIO) && dm_gpio_is_valid(&plat->gpio))
Ditto.
>+ return dm_gpio_get_value(&plat->gpio);
>
>- return dm_gpio_get_value(&plat->gpio);
>+ return true;
> }
>
> int regulator_common_set_enable(const struct udevice *dev,
>@@ -65,47 +67,47 @@ int regulator_common_set_enable(const struct udevice *dev,
> debug("%s: dev='%s', enable=%d, delay=%d, has_gpio=%d\n", __func__,
> dev->name, enable, plat->startup_delay_us,
> dm_gpio_is_valid(&plat->gpio));
>+
> /* Enable GPIO is optional */
>- if (!dm_gpio_is_valid(&plat->gpio)) {
>- if (!enable)
>- return -ENOSYS;
>- return 0;
>- }
>+ if (IS_ENABLED(CONFIG_DM_GPIO) && dm_gpio_is_valid(&plat->gpio)) {
Ditto.
Regards
Peng
More information about the U-Boot
mailing list