[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ca969933-c7f8-a727-3c7e-5ec3548862a0@linaro.org>
Date: Thu, 3 Aug 2023 08:41:09 +0200
From: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>
To: Conor Dooley <conor.dooley@...rochip.com>,
Yinbo Zhu <zhuyinbo@...ngson.cn>
Cc: Conor Dooley <conor@...nel.org>,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <brgl@...ev.pl>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>, linux-gpio@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
Jianmin Lv <lvjianmin@...ngson.cn>, wanghongliang@...ngson.cn,
Liu Peibao <liupeibao@...ngson.cn>,
loongson-kernel@...ts.loongnix.cn
Subject: Re: [PATCH v2 1/2] gpio: dt-bindings: add parsing of loongson gpio
offset
On 03/08/2023 08:30, Conor Dooley wrote:
>>>> gpio0:gpio@...fe10430 {
>>>> compatible = "loongson,ls2k-gpio";
>>>> reg = <0 0x1fe10430 0 0x20>;
>>>> gpio-controller;
>>>> #gpio-cells = <2>;
>>>> interrupt-parent = <&liointc1>;
>>>> ngpios = <64>;
>>>> loongson,gpio-conf-offset = <0>;
>>>> loongson,gpio-out-offset = <0x10>;
>>>> loongson,gpio-in-offset = <0x8>;
>>>> loongson,gpio-inten-offset = <0xb0>;
>>>> loongson,gpio-ctrl-mode = <0x0>;
>>>> ...
>>>> }
>>>>
>>>> gpio1:gpio@...fe10450 {
>>>> compatible = "loongson,ls2k-gpio";
>>>> reg = <0 0x1fe10450 0 0x20>;
>>>> gpio-controller;
>>>> #gpio-cells = <2>;
>>>> interrupt-parent = <&liointc1>;
>>>> ngpios = <64>;
>>>> loongson,gpio-conf-offset = <0>;
>>>> loongson,gpio-out-offset = <0x10>;
>>>> loongson,gpio-in-offset = <0x8>;
>>>
>>> These 3 are the same for both controllers, no?
>>> Is only the inten-offset a variable?
>>>
>>>> loongson,gpio-inten-offset = <0x98>;
>>>
>>> These offsets exceed the region that you've got in the reg property for
>>> this controller, do they not?
>>>
>>> Is there some sort of "miscellaneous register area" at 0x1FE104E0, or
>>> just those two interrupt registers and nothing else?
>>
>>
>> 2k500 gpio dts is just an example, like 3a5000, or more other platform,
>> above offset was different but the gpio controller was compatible.
>>
>> gpio: gpio@...00500 {
>> compatible = "loongson,ls2k-gpio";
>> reg = <0 0x1fe00500 0xc00>;
>> gpio-controller;
>> #gpio-cells = <2>;
>> ngpios = <16>;
>> loongson,gpio-conf-offset = <0x0>;
>> loongson,gpio-out-offset = <0x8>;
>> loongson,gpio-in-offset = <0xc>;
>> ...
>> }
>
> That is a different SoC and needs to have a different compatible string.
> "loongson,ls2k-foo" compatible strings were a mistake that only got past
> us because we were not aware it was a family, rather than a specific
> SoC. They certainly should not be used in isolation on a 3a5000!
>
> Are there more than one GPIO controllers on the 3a5000? If so, what do
> those nodes look like.
Eh, even for the same SoC having different offsets suggest that
programming model is a bit different. Anyway, who designed such
hardware? Really?
Best regards,
Krzysztof
Powered by blists - more mailing lists