[U-Boot] [PATCH 1/2] gpio: fix CONFIG_IS_ENABLED(DM_GPIO) for SPL

There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il --- drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index c1ad5d64a35c..9bac341c5ed5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -14,6 +14,11 @@ config DM_GPIO particular GPIOs that they provide. The uclass interface is defined in include/asm-generic/gpio.h.
+config SPL_DM_GPIO + bool + depends on DM_GPIO + default y + config GPIO_HOG bool "Enable GPIO hog support" depends on DM_GPIO

Enable gpio0 in SPL to allow the sdhci driver read the SD card-detect signal.
Signed-off-by: Baruch Siach baruch@tkos.co.il --- arch/arm/dts/armada-388-clearfog-u-boot.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm/dts/armada-388-clearfog-u-boot.dtsi b/arch/arm/dts/armada-388-clearfog-u-boot.dtsi index cf6c08881b18..38e4f3d99ac9 100644 --- a/arch/arm/dts/armada-388-clearfog-u-boot.dtsi +++ b/arch/arm/dts/armada-388-clearfog-u-boot.dtsi @@ -12,6 +12,10 @@ u-boot,dm-spl; };
+&gpio0 { + u-boot,dm-spl; +}; + &ahci0 { u-boot,dm-spl; };

Hi Baruch,
On 03.11.19 10:52, Baruch Siach wrote:
Enable gpio0 in SPL to allow the sdhci driver read the SD card-detect signal.
Signed-off-by: Baruch Siach baruch@tkos.co.il
arch/arm/dts/armada-388-clearfog-u-boot.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm/dts/armada-388-clearfog-u-boot.dtsi b/arch/arm/dts/armada-388-clearfog-u-boot.dtsi index cf6c08881b18..38e4f3d99ac9 100644 --- a/arch/arm/dts/armada-388-clearfog-u-boot.dtsi +++ b/arch/arm/dts/armada-388-clearfog-u-boot.dtsi @@ -12,6 +12,10 @@ u-boot,dm-spl; };
+&gpio0 {
- u-boot,dm-spl;
+};
- &ahci0 { u-boot,dm-spl; };
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan

On 03.11.19 10:52, Baruch Siach wrote:
Enable gpio0 in SPL to allow the sdhci driver read the SD card-detect signal.
Signed-off-by: Baruch Siach baruch@tkos.co.il
Applied to u-boot-marvell/master.
Thanks, Stefan

Hi Baruch,
On 03.11.19 10:52, Baruch Siach wrote:
There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il
drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index c1ad5d64a35c..9bac341c5ed5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -14,6 +14,11 @@ config DM_GPIO particular GPIOs that they provide. The uclass interface is defined in include/asm-generic/gpio.h.
+config SPL_DM_GPIO
- bool
- depends on DM_GPIO
- default y
- config GPIO_HOG bool "Enable GPIO hog support" depends on DM_GPIO
I think its preferred to disable such SPL configurations per default to not increase the code size here - which is pretty crucial on some boards. Better to enable this SPL_DM_GPIO on your target or if it makes sense on your platform (MVEBU perhaps with a select or imply via the MMC driver in Kconfig).
What do you think?
Thanks, Stefan

Hi Stefan,
On Tue, Nov 05, 2019 at 04:14:59PM +0100, Stefan Roese wrote:
On 03.11.19 10:52, Baruch Siach wrote:
There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il
drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index c1ad5d64a35c..9bac341c5ed5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -14,6 +14,11 @@ config DM_GPIO particular GPIOs that they provide. The uclass interface is defined in include/asm-generic/gpio.h. +config SPL_DM_GPIO
- bool
- depends on DM_GPIO
- default y
- config GPIO_HOG bool "Enable GPIO hog support" depends on DM_GPIO
I think its preferred to disable such SPL configurations per default to not increase the code size here - which is pretty crucial on some boards. Better to enable this SPL_DM_GPIO on your target or if it makes sense on your platform (MVEBU perhaps with a select or imply via the MMC driver in Kconfig).
What do you think?
Makes sense to me.
Should SPL_DM_GPIO be a blind symbol, or user selectable?
Would it make sense to add
select SPL_DM_GPIO if (SPL && DM_GPIO)
to CONFIG_MMC_SDHCI_MV?
baruch

Hi Baruch,
On 05.11.19 17:01, Baruch Siach wrote:
Hi Stefan,
On Tue, Nov 05, 2019 at 04:14:59PM +0100, Stefan Roese wrote:
On 03.11.19 10:52, Baruch Siach wrote:
There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il
drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index c1ad5d64a35c..9bac341c5ed5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -14,6 +14,11 @@ config DM_GPIO particular GPIOs that they provide. The uclass interface is defined in include/asm-generic/gpio.h. +config SPL_DM_GPIO
- bool
- depends on DM_GPIO
- default y
- config GPIO_HOG bool "Enable GPIO hog support" depends on DM_GPIO
I think its preferred to disable such SPL configurations per default to not increase the code size here - which is pretty crucial on some boards. Better to enable this SPL_DM_GPIO on your target or if it makes sense on your platform (MVEBU perhaps with a select or imply via the MMC driver in Kconfig).
What do you think?
Makes sense to me.
Should SPL_DM_GPIO be a blind symbol, or user selectable?
What are the other comparable SPL_DM_foo symbols? My first guess is that they are user selectable.
Would it make sense to add
select SPL_DM_GPIO if (SPL && DM_GPIO)
to CONFIG_MMC_SDHCI_MV?
Yes, I had something like this on my mind. Please give it a try and submit v2 if it fits.
Thanks, Stefan

Hi Baruch,
On Sun, Nov 3, 2019 at 5:53 PM Baruch Siach baruch@tkos.co.il wrote:
There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il
drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
Simon has a patch already for this, see http://patchwork.ozlabs.org/patch/1180459/
Regards, Bin

Hi Bin,
On 06.11.19 06:47, Bin Meng wrote:
Hi Baruch,
On Sun, Nov 3, 2019 at 5:53 PM Baruch Siach baruch@tkos.co.il wrote:
There is currently no CONFIG_SPL_DM_GPIO, so CONFIG_IS_ENABLED(DM_GPIO) is always false. As a result the sdhci driver can not use the DM gpio API to read the card-detect signal in SPL. This breaks boot from SD card on the SolidRun Clearfog platform since commit da18c62b6e ("mmc: sdhci: Implement SDHCI card detect") that added sdhci_get_cd().
Add a blind CONFIG_SPL_DM_GPIO symbol that is enabled iff CONFIG_DM_GPIO is. That makes CONFIG_IS_ENABLED(DM_GPIO) correct for SPL code.
Signed-off-by: Baruch Siach baruch@tkos.co.il
drivers/gpio/Kconfig | 5 +++++ 1 file changed, 5 insertions(+)
Simon has a patch already for this, see http://patchwork.ozlabs.org/patch/1180459/
Thanks for the link.
IIUTC, then the patch from Simon, which also takes care of the TPL GPIO symbol, has the same potential problem that Baruch's patch has. Enabling SPL/TPL_DM_GPIO per default might increase the SPL/TPL image size too much. So it should probably default to 'n' and users / drivers should enable (imply or select via Kconfig) those symbols when required.
What do you think?
Thanks, Stefan
participants (3)
-
Baruch Siach
-
Bin Meng
-
Stefan Roese