Re: [PATCH v6 1/7] dt-bindings: mfd: add support for the NXP SIUL2 module

Andrei Stefanescu
2024-11-20T09:21:21Z

Hi Krzysztof,

>>>> +
>>>> + gpio-reserved-ranges:
>>>> + maxItems: 2

Would it be better if I removed the maxItems constraint? Looking at it now,
I think it should rather be minItems: 2 in order to allow the user to
further remove other GPIOs.

>>>
>>> That's odd to always require two reserved ranges. Does this mean all
>>> devices have exactly the same reserved GPIOs? Then the driver should not
>>> export them.
>>
>> Yes, the driver exports GPIOs from two hardware modules because they are
>> tightly coupled. I export two gpio-ranges, each one corresponding to a
>> hardware module. If I were to export more gpio-ranges, thus avoiding
>> gpio-reserved-ranges, it would be hard to know to which hardware module
>> a gpio-range belongs. I would like to keep the current implementation
>> regarding this problem. Would that be ok?
>
> I don't understand why this is needed then. If you always export same
> set of GPIOs, why do you export something which is unusable/reserved?
>

I will detail a bit about SIUL2 GPIO ranges here:
SIUL2_0 exports GPIOs 0 - 101
SIUL2_1 exports GPIOs 112 - 122 and 144 - 190

Therefore, we have two gaps: 102 - 111 and 123 - 143. This applies for both
S32G2 and S32G3 SoCs.

AFAIK the only ways to exclude GPIOs from being exported are the following:
- split the gpio-ranges property so it doesn't include those GPIOs
I thought about doing this but I think this would involve other vendor
specific properties in order to know the memory region to use for each GPIO range.
Currently, we have two GPIO ranges and each one maps to its respective
SIUL2 module.
- using gpio-reserved-ranges which is my current approach because, in my opinion,
it is the simplest approach.
- registering multiple gpio_chips
I know this approach is used when dealing with multiple banks. However,
I think GPIO banks would rather apply to SIUL2 modules and not to our
valid GPIO ranges.

What are your thoughts about this?

Best regards,
Andrei