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 <[email protected]>
>---
> 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

Reply via email to