U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Fix compilation issue on regulator_common file
@ 2025-12-10 21:24 Julien Stephan
  2025-12-10 21:24 ` [PATCH 1/3] power: regulator: common: remove unnecessary debug trace Julien Stephan
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Julien Stephan @ 2025-12-10 21:24 UTC (permalink / raw)
  To: u-boot
  Cc: Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia, Ye Li,
	Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream, Julien Stephan

Hello,

If CONFIG_DM_GPIO is not enabled, compilation of
drivers/power/regulator/regulator_common.c  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.

While at it, use dm_gpio_is_valid() helper function in
regulator_common_get_enable, and remove a debug message that checkpatch
--strict complains about:

  WARNING: Unnecessary ftrace-like logging - prefer using ftrace

The 2 fixes are done before the compilation issue fix in order to easily
cherry-pick them if needed

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
---
Julien Stephan (3):
      power: regulator: common: remove unnecessary debug trace
      power: regulator: common: use dm_gpio_is_valid helper
      power: regulator: common: fix compilation issue

 drivers/power/regulator/regulator_common.c | 89 +++++++++++++++---------------
 1 file changed, 45 insertions(+), 44 deletions(-)
---
base-commit: c5e6d2ab7eba68cbfb600cdc131c0c375ced2ec9
change-id: 20251209-power-regulator-fix-compilation-5232b0365c7b

Best regards,
-- 
Julien Stephan <jstephan@baylibre.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/3] power: regulator: common: remove unnecessary debug trace
  2025-12-10 21:24 [PATCH 0/3] Fix compilation issue on regulator_common file Julien Stephan
@ 2025-12-10 21:24 ` Julien Stephan
  2025-12-11  8:27   ` Peng Fan
  2025-12-10 21:24 ` [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper Julien Stephan
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Julien Stephan @ 2025-12-10 21:24 UTC (permalink / raw)
  To: u-boot
  Cc: Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia, Ye Li,
	Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream, Julien Stephan

Drop the ftrace like debug() that checkpatch --strict complains about:

  WARNING: Unnecessary ftrace-like logging - prefer using ftrace

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
---
 drivers/power/regulator/regulator_common.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
index 685d8735fa5c9a6f98cb6154cd13afcabaeab1ac..ce3d80670de045dde7e263c5301bccd744abd2f5 100644
--- a/drivers/power/regulator/regulator_common.c
+++ b/drivers/power/regulator/regulator_common.c
@@ -98,7 +98,6 @@ int regulator_common_set_enable(const struct udevice *dev,
 
 	if (enable && plat->startup_delay_us)
 		udelay(plat->startup_delay_us);
-	debug("%s: done\n", __func__);
 
 	if (!enable && plat->off_on_delay_us)
 		udelay(plat->off_on_delay_us);

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper
  2025-12-10 21:24 [PATCH 0/3] Fix compilation issue on regulator_common file Julien Stephan
  2025-12-10 21:24 ` [PATCH 1/3] power: regulator: common: remove unnecessary debug trace Julien Stephan
@ 2025-12-10 21:24 ` Julien Stephan
  2025-12-11  8:29   ` Peng Fan
  2025-12-10 21:24 ` [PATCH 3/3] power: regulator: common: fix compilation issue Julien Stephan
  2025-12-10 21:38 ` [PATCH 0/3] Fix compilation issue on regulator_common file Tom Rini
  3 siblings, 1 reply; 9+ messages in thread
From: Julien Stephan @ 2025-12-10 21:24 UTC (permalink / raw)
  To: u-boot
  Cc: Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia, Ye Li,
	Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream, Julien Stephan

Use dm_gpio_is_valid() helper function instead of manually checking the
gpio.

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
---
 drivers/power/regulator/regulator_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
index ce3d80670de045dde7e263c5301bccd744abd2f5..cf98998579aa8a3cb7f09dccd2124207a58d8b00 100644
--- a/drivers/power/regulator/regulator_common.c
+++ b/drivers/power/regulator/regulator_common.c
@@ -51,7 +51,7 @@ int regulator_common_get_enable(const struct udevice *dev,
 	struct regulator_common_plat *plat)
 {
 	/* Enable GPIO is optional */
-	if (!plat->gpio.dev)
+	if (!dm_gpio_is_valid(&plat->gpio))
 		return true;
 
 	return dm_gpio_get_value(&plat->gpio);

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/3] power: regulator: common: fix compilation issue
  2025-12-10 21:24 [PATCH 0/3] Fix compilation issue on regulator_common file Julien Stephan
  2025-12-10 21:24 ` [PATCH 1/3] power: regulator: common: remove unnecessary debug trace Julien Stephan
  2025-12-10 21:24 ` [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper Julien Stephan
@ 2025-12-10 21:24 ` Julien Stephan
  2025-12-11  8:33   ` Peng Fan
  2025-12-10 21:38 ` [PATCH 0/3] Fix compilation issue on regulator_common file Tom Rini
  3 siblings, 1 reply; 9+ messages in thread
From: Julien Stephan @ 2025-12-10 21:24 UTC (permalink / raw)
  To: u-boot
  Cc: Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia, Ye Li,
	Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream, Julien Stephan

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@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)) {
+		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;
+		}
 	}
 
 	/* Get optional ramp up delay */
@@ -51,10 +53,10 @@ int regulator_common_get_enable(const struct udevice *dev,
 	struct regulator_common_plat *plat)
 {
 	/* Enable GPIO is optional */
-	if (!dm_gpio_is_valid(&plat->gpio))
-		return true;
+	if (IS_ENABLED(CONFIG_DM_GPIO) && dm_gpio_is_valid(&plat->gpio))
+		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)) {
+		/* If previously enabled, increase count */
+		if (enable && plat->enable_count > 0) {
+			plat->enable_count++;
+			return -EALREADY;
+		}
 
-	/* If previously enabled, increase count */
-	if (enable && plat->enable_count > 0) {
-		plat->enable_count++;
-		return -EALREADY;
-	}
+		if (!enable) {
+			if (plat->enable_count > 1) {
+				/* If enabled multiple times, decrease count */
+				plat->enable_count--;
+				return -EBUSY;
+			} else if (!plat->enable_count) {
+				/* If already disabled, do nothing */
+				return -EALREADY;
+			}
+		}
 
-	if (!enable) {
-		if (plat->enable_count > 1) {
-			/* If enabled multiple times, decrease count */
-			plat->enable_count--;
-			return -EBUSY;
-		} else if (!plat->enable_count) {
-			/* If already disabled, do nothing */
-			return -EALREADY;
+		ret = dm_gpio_set_value(&plat->gpio, enable);
+		if (ret) {
+			pr_err("Can't set regulator : %s gpio to: %d\n", dev->name,
+			       enable);
+			return ret;
 		}
-	}
 
-	ret = dm_gpio_set_value(&plat->gpio, enable);
-	if (ret) {
-		pr_err("Can't set regulator : %s gpio to: %d\n", dev->name,
-		      enable);
-		return ret;
-	}
+		if (enable && plat->startup_delay_us)
+			udelay(plat->startup_delay_us);
 
-	if (enable && plat->startup_delay_us)
-		udelay(plat->startup_delay_us);
+		if (!enable && plat->off_on_delay_us)
+			udelay(plat->off_on_delay_us);
 
-	if (!enable && plat->off_on_delay_us)
-		udelay(plat->off_on_delay_us);
+		if (enable)
+			plat->enable_count++;
+		else
+			plat->enable_count--;
 
-	if (enable)
-		plat->enable_count++;
-	else
-		plat->enable_count--;
+	} else {
+		ret = enable ? 0 : -ENOSYS;
+	}
 
-	return 0;
+	return ret;
 }

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] Fix compilation issue on regulator_common file
  2025-12-10 21:24 [PATCH 0/3] Fix compilation issue on regulator_common file Julien Stephan
                   ` (2 preceding siblings ...)
  2025-12-10 21:24 ` [PATCH 3/3] power: regulator: common: fix compilation issue Julien Stephan
@ 2025-12-10 21:38 ` Tom Rini
  2025-12-11  8:39   ` Peng Fan
  3 siblings, 1 reply; 9+ messages in thread
From: Tom Rini @ 2025-12-10 21:38 UTC (permalink / raw)
  To: Julien Stephan
  Cc: u-boot, Jaehoon Chung, Peng Fan, Tanmay Kathpalia, Ye Li,
	Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream

[-- Attachment #1: Type: text/plain, Size: 451 bytes --]

On Wed, Dec 10, 2025 at 10:24:21PM +0100, Julien Stephan wrote:

> Hello,
> 
> If CONFIG_DM_GPIO is not enabled, compilation of
> drivers/power/regulator/regulator_common.c  fails with the following
> errors:

How did you get this condition exactly? I'm inclined to say DM_REGULATOR
&& !DM_GPIO shouldn't be allowed today, and I see what looks like a
Kconfig bug where SPL_DM_REGULATOR depends on SPL_GPIO and not
SPL_DM_GPIO.

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] power: regulator: common: remove unnecessary debug trace
  2025-12-10 21:24 ` [PATCH 1/3] power: regulator: common: remove unnecessary debug trace Julien Stephan
@ 2025-12-11  8:27   ` Peng Fan
  0 siblings, 0 replies; 9+ messages in thread
From: Peng Fan @ 2025-12-11  8:27 UTC (permalink / raw)
  To: Julien Stephan
  Cc: u-boot, Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia,
	Ye Li, Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream

On Wed, Dec 10, 2025 at 10:24:22PM +0100, Julien Stephan wrote:
>Drop the ftrace like debug() that checkpatch --strict complains about:
>
>  WARNING: Unnecessary ftrace-like logging - prefer using ftrace
>
>Signed-off-by: Julien Stephan <jstephan@baylibre.com>
>---

Reviewed-by: Peng Fan <peng.fan@nxp.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper
  2025-12-10 21:24 ` [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper Julien Stephan
@ 2025-12-11  8:29   ` Peng Fan
  0 siblings, 0 replies; 9+ messages in thread
From: Peng Fan @ 2025-12-11  8:29 UTC (permalink / raw)
  To: Julien Stephan
  Cc: u-boot, Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia,
	Ye Li, Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream

On Wed, Dec 10, 2025 at 10:24:23PM +0100, Julien Stephan wrote:
>Use dm_gpio_is_valid() helper function instead of manually checking the
>gpio.
>
>Signed-off-by: Julien Stephan <jstephan@baylibre.com>

Reviewed-by: Peng Fan <peng.fan@nxp.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] power: regulator: common: fix compilation issue
  2025-12-10 21:24 ` [PATCH 3/3] power: regulator: common: fix compilation issue Julien Stephan
@ 2025-12-11  8:33   ` Peng Fan
  0 siblings, 0 replies; 9+ messages in thread
From: Peng Fan @ 2025-12-11  8:33 UTC (permalink / raw)
  To: Julien Stephan
  Cc: u-boot, Jaehoon Chung, Peng Fan, Tom Rini, Tanmay Kathpalia,
	Ye Li, Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream

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@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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] Fix compilation issue on regulator_common file
  2025-12-10 21:38 ` [PATCH 0/3] Fix compilation issue on regulator_common file Tom Rini
@ 2025-12-11  8:39   ` Peng Fan
  0 siblings, 0 replies; 9+ messages in thread
From: Peng Fan @ 2025-12-11  8:39 UTC (permalink / raw)
  To: Tom Rini
  Cc: Julien Stephan, u-boot, Jaehoon Chung, Peng Fan, Tanmay Kathpalia,
	Ye Li, Dragan Simic, Jonas Karlman, David Lechner,
	GSS_MTK_Uboot_upstream

Hi Tom,

On Wed, Dec 10, 2025 at 03:38:26PM -0600, Tom Rini wrote:
>On Wed, Dec 10, 2025 at 10:24:21PM +0100, Julien Stephan wrote:
>
>> Hello,
>> 
>> If CONFIG_DM_GPIO is not enabled, compilation of
>> drivers/power/regulator/regulator_common.c  fails with the following
>> errors:
>
>How did you get this condition exactly? I'm inclined to say DM_REGULATOR
>&& !DM_GPIO shouldn't be allowed today, and I see what looks like a

DM_GPIO is not a must for DM_REGULATOR. Only DM_REGULATOR_GPIO needs DM_GPIO.

>Kconfig bug where SPL_DM_REGULATOR depends on SPL_GPIO and not
>SPL_DM_GPIO.

I think you are saying SPL_DM_REGULATOR_GPIO, not SPL_DM_REGULATOR.

Regards
Peng

>
>-- 
>Tom



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-12-11 10:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-10 21:24 [PATCH 0/3] Fix compilation issue on regulator_common file Julien Stephan
2025-12-10 21:24 ` [PATCH 1/3] power: regulator: common: remove unnecessary debug trace Julien Stephan
2025-12-11  8:27   ` Peng Fan
2025-12-10 21:24 ` [PATCH 2/3] power: regulator: common: use dm_gpio_is_valid helper Julien Stephan
2025-12-11  8:29   ` Peng Fan
2025-12-10 21:24 ` [PATCH 3/3] power: regulator: common: fix compilation issue Julien Stephan
2025-12-11  8:33   ` Peng Fan
2025-12-10 21:38 ` [PATCH 0/3] Fix compilation issue on regulator_common file Tom Rini
2025-12-11  8:39   ` Peng Fan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox