mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
drivers: gpio-uclass: support PMIC GPIO children
UCLASS_PMIC may have GPIO children without exposed fdt node, in this case if requesting fails, check if uclass is PMIC. Restrict build for supported devices only to save those precious bytes on devices with no spare memory. Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
This commit is contained in:
parent
52b6bbf162
commit
c03cd98d1a
1 changed files with 20 additions and 0 deletions
|
@ -1143,9 +1143,29 @@ static int gpio_request_tail(int ret, const char *nodename,
|
|||
ret = uclass_get_device_by_ofnode(UCLASS_GPIO, args->node,
|
||||
&desc->dev);
|
||||
if (ret) {
|
||||
#if CONFIG_IS_ENABLED(MAX77663_GPIO) || CONFIG_IS_ENABLED(PALMAS_GPIO)
|
||||
struct udevice *pmic;
|
||||
ret = uclass_get_device_by_ofnode(UCLASS_PMIC, args->node,
|
||||
&pmic);
|
||||
if (ret) {
|
||||
log_debug("%s: PMIC device get failed, err %d\n",
|
||||
__func__, 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;
|
||||
#else
|
||||
debug("%s: uclass_get_device_by_ofnode failed\n",
|
||||
__func__);
|
||||
goto err;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
ret = gpio_find_and_xlate(desc, args);
|
||||
|
|
Loading…
Reference in a new issue