
3 листопада 2023 р. 21:03:39 GMT+02:00, Tom Rini trini@konsulko.com написав(-ла):
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@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)
} } ret = gpio_find_and_xlate(desc, args);goto err;
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.
Thanks for checking! I will look into it deeper to reduce the size inflation, not sure though why it occurs at all. Best regards, Svyatoslav R.