[U-Boot] [PATCH] gpio: add gpio-hog support

Michal Simek michal.simek at xilinx.com
Mon May 27 11:15:51 UTC 2019


On 27. 05. 19 11:36, Heiko Schocher wrote:
> Hello Michal,
> 
> Am 27.05.2019 um 09:13 schrieb Michal Simek:
>> On 27. 05. 19 8:30, Heiko Schocher wrote:
>>> add gpio-hog support. GPIO hogging is a mechanism
>>> providing automatic GPIO request and configuration
>>> as part of the gpio-controller's driver probe function.
>>>
>>> for more infos see:
>>> doc/device-tree-bindings/gpio/gpio.txt
>>>
>>> Signed-off-by: Heiko Schocher <hs at denx.de>
>>
>> I have tested it on zcu102 where I use gpio hogs for gt muxes.
> 
> Thanks!
> 
>> gpio hogs are handled and setup only when gpio controller is probed.
> 
> Yes, with my current approach ... If you need a gpio-hog in a gpio
> device, wich is not used, you can add in board code:
> 
> gpio_hog_lookup_name("name_of_the_gpio_hog");
> 
> and gpio driver (and gpio hogs) get probed ... but not really nice...
> 
>> Do we have a way how to say that controllers with gpio hogs should be
>> probed automatically?
> 
> No yet, but I am open for suggestions ;-)
> 
>> Right now you are calling it in post_probe which make sense but on the
>> other hand if you find gpio hog in bind you should probe the whole
>> driver without asking for request.
> 
> Yes, I also thought about this approach, but the problem is in
> 
> static int gpio_hog(struct udevice *dev)
> {
>         ofnode node;
>         struct gpio_dev_priv *uc_priv = NULL;
> 
>         uc_priv = dev_get_uclass_priv(dev);
>         if (!uc_priv) {
>                 printf("%s: missing private data.\n", __func__);
>                 return -EINVAL;
>         }
> 
> uc_priv is not valid @bind stage ...
> 
> But I can think of a function which scans all gpio nodes for
> gpio hog subnodes, and call device_probe() ?
> 
> But from where should this function be called?

The question is if this patch is reading that gpio-hogs at right stage.
Right now you are decoding them in post_probe. Normally getting
information from DT is done in ofdata_to_platdata.
It is question if this approach is also working for non DT case.

Anyway let's say you setup a flag in ofdata_to_platdata that there are
gpio hogs and then you know if you should probe that device or not.

btw: didn't send this before you v2 but should be still valid.
Let me test v2 now.

M




More information about the U-Boot mailing list