From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Prathamesh Shete <pshete@nvidia.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
"linus.walleij@linaro.org" <linus.walleij@linaro.org>,
"robh+dt@kernel.org" <robh+dt@kernel.org>,
"krzysztof.kozlowski+dt@linaro.org"
<krzysztof.kozlowski+dt@linaro.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
Suresh Mangipudi <smangipudi@nvidia.com>
Subject: Re: [PATCH 1/3] dt-bindings: pinctrl: tegra234: Add DT binding doc
Date: Sun, 26 Mar 2023 14:19:45 +0200 [thread overview]
Message-ID: <e06977ab-8112-1e45-4392-df36e358e772@linaro.org> (raw)
In-Reply-To: <ZBxeLIXJDbM2ebyt@orome>
On 23/03/2023 15:11, Thierry Reding wrote:
> On Wed, Mar 08, 2023 at 01:24:04PM +0100, Krzysztof Kozlowski wrote:
>> On 08/03/2023 12:45, Prathamesh Shete wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>>> Sent: Wednesday, February 8, 2023 5:28 PM
>>>> To: Thierry Reding <thierry.reding@gmail.com>
>>>> Cc: Prathamesh Shete <pshete@nvidia.com>; Jonathan Hunter
>>>> <jonathanh@nvidia.com>; linus.walleij@linaro.org; robh+dt@kernel.org;
>>>> krzysztof.kozlowski+dt@linaro.org; devicetree@vger.kernel.org; linux-
>>>> tegra@vger.kernel.org; linux-gpio@vger.kernel.org; Suresh Mangipudi
>>>> <smangipudi@nvidia.com>
>>>> Subject: Re: [PATCH 1/3] dt-bindings: pinctrl: tegra234: Add DT binding doc
>>>>
>>>> External email: Use caution opening links or attachments
>>>>
>>>>
>>>> On 08/02/2023 12:24, Thierry Reding wrote:
>>>>> On Tue, Feb 07, 2023 at 04:33:08PM +0100, Krzysztof Kozlowski wrote:
>>>>
>>>>
>>>>>>> + type: object
>>>>>>> + additionalProperties:
>>>>>>> + properties:
>>>>>>> + nvidia,pins:
>>>>>>> + description: An array of strings. Each string contains the name
>>>>>>> + of a pin or group. Valid values for these names are listed
>>>>>>> + below.
>>>>>>
>>>>>> Define properties in top level, which points to the complexity of
>>>>>> your if-else, thus probably this should be split into two bindings.
>>>>>> Dunno, your other bindings repeat this pattern :(
>>>>>
>>>>> The property itself is already defined in the common schema found in
>>>>> nvidia,tegra-pinmux-common.yaml and we're overriding this here for
>>>>> each instance since each has its own set of pins.
>>>>>
>>>>> This was a compromise to avoid too many bindings. Originally I
>>>>> attempted to roll all Tegra pinctrl bindings into a single dt-schema,
>>>>> but that turned out truly horrible =) Splitting this into per-SoC
>>>>> bindings is already causing a lot of duplication in these files,
>>>>
>>>> What would be duplicated? Almost eveerything should be coming from
>>>> shared binding, so you will have only compatible,
>>>> patternProperties(pinmux) and nvidia,pins. And an example. Maybe I miss
>>>> something but I would say this would create many but very easy to read
>>>> bindings, referencing common pieces.
>>>>
>>>>> though splitting
>>>>> off the common bits into nvidi,tegra-pinmux-common.yaml helps a bit
>>>>> with that already. Splitting this into per-instance bindings would
>>>>> effectively duplicate everything but the pin array here, so we kind of
>>>>> settled on this compromise for Tegra194.
>>>>
>>>> OK, but are you sure it is now readable? You have if:then: with
>>>> patternProperties: with additionalProperties: with properties: with
>>>> nvidia,pins.
>>> This is inline with the existing bindings and I think this is the compromise that was reached during review when the bindings were submitted,
>>
>> So the code might be totally unreadable, but it is inline with existing
>> code, thus it should stay unreadable. Great.
>
> I'd say this is very subjective. I personally don't find the current
> version hard to read, but that's maybe because I wrote it... =)
>
>>> offer to rework if a better alternative can be found, but that only makes sense if all the other bindings get changed as well, so I think it'd be good if we can merge in the same format as the existing bindings for now and change all of them later on.
>>
>> Cleanup should happen before adding new bindings.
>
> I don't recall the exact problems that I ran into last time, but I do
> remember that pulling out the common bindings to the very top-level was
> the main issue.
>
> If I understand correctly what you're saying, the main problem that
> makes this hard to read is the if and else constructs for AON/MAIN
> variants on Tegra194/Tegra234. These should be quite easy to pull out
> into separate bindings. I'll do that first and then see if there's
> anything that could be done to further improve things.
One problem is allowing characters here which are not allowed. Second
problem is reluctance to change it with argument "existing bindings also
have this problem". It's explanation like "there is already bug like
this, so I am allowed to add similar one".
Now third is that defining properties in allOf is not the style we want
to have, because it does not work with additionalProperties and is
difficult to read. Again using argument "existing code also does like
this" is a very poor argument.
Best regards,
Krzysztof
next prev parent reply other threads:[~2023-03-26 12:20 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 11:56 [PATCH 1/3] dt-bindings: pinctrl: tegra234: Add DT binding doc Prathamesh Shete
2023-02-07 11:56 ` [PATCH 2/3] pinctrl: tegra: Add Tegra234 pinmux driver Prathamesh Shete
2023-02-07 11:56 ` [PATCH 3/3] arm64: tegra: Add Tegra234 pinmux device Prathamesh Shete
2023-02-07 15:33 ` Krzysztof Kozlowski
2023-02-08 11:00 ` Thierry Reding
2023-02-08 12:01 ` Krzysztof Kozlowski
2023-02-08 12:06 ` Krzysztof Kozlowski
2023-02-08 15:46 ` Thierry Reding
2023-02-07 14:37 ` [PATCH 1/3] dt-bindings: pinctrl: tegra234: Add DT binding doc Rob Herring
2023-02-08 11:29 ` Thierry Reding
2023-02-07 15:33 ` Krzysztof Kozlowski
2023-02-08 11:24 ` Thierry Reding
2023-02-08 11:57 ` Krzysztof Kozlowski
2023-03-08 11:45 ` Prathamesh Shete
2023-03-08 12:24 ` Krzysztof Kozlowski
2023-03-23 14:11 ` Thierry Reding
2023-03-26 12:19 ` Krzysztof Kozlowski [this message]
2023-03-28 12:39 ` Thierry Reding
2023-03-30 13:58 ` Krzysztof Kozlowski
2023-03-30 16:32 ` Thierry Reding
2023-04-20 17:06 ` Thierry Reding
2023-04-20 17:16 ` Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e06977ab-8112-1e45-4392-df36e358e772@linaro.org \
--to=krzysztof.kozlowski@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=pshete@nvidia.com \
--cc=robh+dt@kernel.org \
--cc=smangipudi@nvidia.com \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).