[PATCH] gpio: Enable hogging support in SPL
Eddie James
eajames at linux.ibm.com
Fri Feb 4 16:36:31 CET 2022
On 2/4/22 09:24, Simon Glass wrote:
> Hi Eddie,
>
> On Thu, 3 Feb 2022 at 15:37, Eddie James <eajames at linux.ibm.com> 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 | 10 ++++++----
>> 3 files changed, 23 insertions(+), 4 deletions(-)
>>
>> diff --git a/common/spl/spl.c b/common/spl/spl.c
>> index 884102bdea..f667908eec 100644
>> --- a/common/spl/spl.c
>> +++ b/common/spl/spl.c
>> @@ -20,6 +20,9 @@
>> #include <serial.h>
>> #include <spl.h>
>> #include <asm/global_data.h>
>> +#if defined(CONFIG_SPL_GPIO_HOG)
> Can you drop this ifdef?
Sure.
>
>> +#include <asm/gpio.h>
>> +#endif
>> #include <asm/u-boot.h>
>> #include <nand.h>
>> #include <fat.h>
>> @@ -739,6 +742,10 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>> }
>> }
>>
>> +#if defined(CONFIG_SPL_GPIO_HOG)
>> + gpio_hog_probe_all();
>> +#endif
> if (CONFIG_IS_ENABLED(GPIO_HOG))
Ack.
> ...
>
>> +
>> #if CONFIG_IS_ENABLED(BOARD_INIT)
>> spl_board_init();
>> #endif
>> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
>> index 305a2dc563..4da2bdc10d 100644
>> --- a/drivers/gpio/Kconfig
>> +++ b/drivers/gpio/Kconfig
>> @@ -57,6 +57,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
> Should it depend on GPIO_HOG? I'm not sure, just a question
No, this way the gpio hog support can be configured for either SPL or
U-Boot or both. They are the same option just in the different builds.
Thanks for the review,
Eddie
>
>
>> + default n
>> + help
>> + Enable gpio hog support in SPL
>> + 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 DM_GPIO_LOOKUP_LABEL
>> bool "Enable searching for gpio labelnames"
>> depends on DM_GPIO
>> diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
>> index 125ae53d61..bebba620c9 100644
>> --- a/drivers/gpio/gpio-uclass.c
>> +++ b/drivers/gpio/gpio-uclass.c
>> @@ -1432,9 +1432,6 @@ void devm_gpiod_put(struct udevice *dev, struct gpio_desc *desc)
>>
>> 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;
>> @@ -1465,7 +1462,11 @@ static int gpio_post_bind(struct udevice *dev)
>> }
>> #endif
>>
>> - if (CONFIG_IS_ENABLED(OF_REAL) && IS_ENABLED(CONFIG_GPIO_HOG)) {
>> +#if CONFIG_IS_ENABLED(GPIO_HOG)
>> + {
>> + struct udevice *child;
>> + ofnode node;
>> +
>> dev_for_each_subnode(node, dev) {
>> if (ofnode_read_bool(node, "gpio-hog")) {
>> const char *name = ofnode_get_name(node);
>> @@ -1480,6 +1481,7 @@ static int gpio_post_bind(struct udevice *dev)
>> }
>> }
>> }
>> +#endif
>> return 0;
>> }
>>
>> --
>> 2.27.0
>>
More information about the U-Boot
mailing list