[PATCH v1 1/3] drivers: gpio-uclass: support PMIC GPIO children
Svyatoslav Ryhel
clamor95 at gmail.com
Fri Nov 3 20:39:51 CET 2023
3 листопада 2023 р. 21:03:39 GMT+02:00, Tom Rini <trini at 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 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.
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.
More information about the U-Boot
mailing list