[PATCH U-Boot v2019.04-aspeed-openbmc 4/6] gpio: Enable hogging support in SPL

Andrew Jeffery andrew at aj.id.au
Thu Feb 3 13:11:42 AEDT 2022



On Tue, 25 Jan 2022, at 05:45, Eddie James wrote:
> Use the CONFIG macros to conditionally build the GPIO hogging support in
> either the SPL or U-Boot, or both, depending on the configuration. Also
> call the GPIO hog probe function in the common SPL board initialization
> as an equivalent to adding it to the U-Boot init sequence functions.
>
> Signed-off-by: Eddie James <eajames at linux.ibm.com>
> ---
>  common/spl/spl.c           |  7 +++++++
>  drivers/gpio/Kconfig       | 10 ++++++++++
>  drivers/gpio/gpio-uclass.c | 12 +++++++-----
>  3 files changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index a1d4514fd3..bbb7578463 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -12,6 +12,9 @@
>  #include <dm.h>
>  #include <handoff.h>
>  #include <spl.h>
> +#if defined(CONFIG_SPL_GPIO_HOG)
> +#include <asm/gpio.h>
> +#endif
>  #include <asm/sections.h>
>  #include <asm/u-boot.h>
>  #include <nand.h>
> @@ -652,6 +655,10 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>  	timer_init();
>  #endif
> 
> +#if defined(CONFIG_SPL_GPIO_HOG)
> +	gpio_hog_probe_all();
> +#endif
> +
>  #if CONFIG_IS_ENABLED(BOARD_INIT)
>  	spl_board_init();
>  #endif
> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
> index a8dc16ca0e..8b8bf6822f 100644
> --- a/drivers/gpio/Kconfig
> +++ b/drivers/gpio/Kconfig
> @@ -24,6 +24,16 @@ config GPIO_HOG
>  	  is a mechanism providing automatic GPIO request and config-
>  	  uration as part of the gpio-controller's driver probe function.
> 
> +config SPL_GPIO_HOG
> +	bool "Enable GPIO hog support in SPL"
> +	depends on SPL_GPIO_SUPPORT
> +	default n
> +	help
> +	  Enable gpio hog support
> +	  The GPIO chip may contain GPIO hog definitions. GPIO hogging
> +	  is a mechanism providing automatic GPIO request and config-
> +	  uration as part of the gpio-controller's driver probe function.
> +
>  config ALTERA_PIO
>  	bool "Altera PIO driver"
>  	depends on DM_GPIO
> diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
> index 01cfa2f788..219caa651b 100644
> --- a/drivers/gpio/gpio-uclass.c
> +++ b/drivers/gpio/gpio-uclass.c
> @@ -144,7 +144,7 @@ static int gpio_find_and_xlate(struct gpio_desc *desc,
>  		return gpio_xlate_offs_flags(desc->dev, desc, args);
>  }
> 
> -#if defined(CONFIG_GPIO_HOG)
> +#if CONFIG_IS_ENABLED(GPIO_HOG)
> 
>  struct gpio_hog_priv {
>  	struct gpio_desc gpiod;
> @@ -1033,9 +1033,6 @@ int gpio_dev_request_index(struct udevice *dev, 
> const char *nodename,
> 
>  static int gpio_post_bind(struct udevice *dev)
>  {
> -	struct udevice *child;
> -	ofnode node;
> -
>  #if defined(CONFIG_NEEDS_MANUAL_RELOC)
>  	struct dm_gpio_ops *ops = (struct dm_gpio_ops *)device_get_ops(dev);
>  	static int reloc_done;
> @@ -1066,7 +1063,11 @@ static int gpio_post_bind(struct udevice *dev)
>  	}
>  #endif
> 
> -	if (IS_ENABLED(CONFIG_GPIO_HOG)) {
> +#if CONFIG_IS_ENABLED(GPIO_HOG)

Why switch to a CPP conditional here?

I mean, it's not clear why there was a choice for a C conditional 
originally, so I'm curious either way.

Otherwise:

Reviewed-by: Andrew Jeffery <andrew at aj.id.au>


More information about the openbmc mailing list