[U-Boot] [PATCH v5 3/6] ARM: dts: imx: Provide 'gpio-ranges' for mxs_gpio driver

Marek Vasut marex at denx.de
Wed Jun 19 14:32:57 UTC 2019


On 6/19/19 4:19 PM, Lukasz Majewski wrote:
> Hi Marek,
> 
>> On 6/19/19 2:27 PM, Lukasz Majewski wrote:
>>> Those properties are U-Boot specific as the mxs gpio Linux driver
>>> (up to version v5.1.11) is not supporting them.
>>>
>>> Signed-off-by: Lukasz Majewski <lukma at denx.de>  
>>
>> [...]
>>
>>> +&gpio4 {
>>> +	gpio-ranges = <&pinctrl 120 0 21>;  
>>
>> Are you sure the GPIO controller offset is 120 here ? Shouldn't that
>> be 0 , while the pin controller offset should be 120 ? Some for the
>> others ?
> 
> Please find following excerpt from the documentation [1]:
> 
> The format is: <[pin controller phandle], [GPIO controller offset],
>                 [pin controller offset], [number of pins]>;
> 
> Example:
> 
>     gpio-ranges = <&foo 0 20 10>, <&bar 10 50 20>;
> 
> This means:
> - pins 20..29 on pin controller "foo" is mapped to GPIO line 0..9 and
> - pins 50..69 on pin controller "bar" is mapped to GPIO line 10..29
> 
> 
> The 120 is the GPIO controller offset (logical one) [*] and corresponds
> to the final GPIO number.
> 
> Then we do have the "pin controller offset" which is the pin number
> start index per controller (like gpio0, gpio1, gpioN). In my case it is
> always 0.

I think you have these two swapped. The pin controller is the super-node
here, hence each GPIO block is at offset N in the pin controller pin
space. Each GPIO block then has GPIOs, which either start from 0 or M
within the GPIO block pin space (in MXS case, this is always 0).

[...]


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list