[PATCH v1 1/3] drivers: gpio-uclass: support PMIC GPIO children
Tom Rini
trini at konsulko.com
Fri Nov 3 20:03:39 CET 2023
On Tue, Oct 24, 2023 at 11:37:59AM +0300, Svyatoslav Ryhel wrote:
> UCLASS_PMIC may have GPIO children without exposed fdt node,
> in this case if requesting fails, check if uclass is PMIC.
> If so, iterate through its children to find correct device.
>
> Signed-off-by: Svyatoslav Ryhel <clamor95 at gmail.com>
> ---
> drivers/gpio/gpio-uclass.c | 19 ++++++++++++++++---
> 1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
> index 7aece85a70..a3fc470a5d 100644
> --- a/drivers/gpio/gpio-uclass.c
> +++ b/drivers/gpio/gpio-uclass.c
> @@ -1143,9 +1143,22 @@ static int gpio_request_tail(int ret, const char *nodename,
> ret = uclass_get_device_by_ofnode(UCLASS_GPIO, args->node,
> &desc->dev);
> if (ret) {
> - debug("%s: uclass_get_device_by_ofnode failed\n",
> - __func__);
> - goto err;
> + struct udevice *pmic;
> + ret = uclass_get_device_by_ofnode(UCLASS_PMIC, args->node,
> + &pmic);
> + if (ret) {
> + log_err("PMIC device get failed, err %d\n", ret);
> + goto err;
> + }
> +
> + device_foreach_child(desc->dev, pmic) {
> + if (device_get_uclass_id(desc->dev) == UCLASS_GPIO)
> + break;
> + }
> +
> + /* if loop exits without GPIO device return error */
> + if (device_get_uclass_id(desc->dev) != UCLASS_GPIO)
> + goto err;
> }
> }
> ret = gpio_find_and_xlate(desc, args);
This needs to check for DM_PMIC or so as it leads to a lot of size
increase and one failure to link due to running out of space now.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20231103/6900ec37/attachment.sig>
More information about the U-Boot
mailing list