devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Johan Hovold <johan@kernel.org>
Cc: Johan Hovold <johan+linaro@kernel.org>,
	Vinod Koul <vkoul@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 17/43] dt-bindings: phy: qcom,qmp-pcie: add missing child node schema
Date: Tue, 5 Jul 2022 20:21:12 +0200	[thread overview]
Message-ID: <cf61b071-aa31-6f67-07f1-4f15e0fe7511@linaro.org> (raw)
In-Reply-To: <YsQqcKZAs1xAB9+S@hovoldconsulting.com>

On 05/07/2022 14:11, Johan Hovold wrote:
> On Tue, Jul 05, 2022 at 01:56:32PM +0200, Krzysztof Kozlowski wrote:
>> On 05/07/2022 13:51, Johan Hovold wrote:
>>> On Tue, Jul 05, 2022 at 12:18:37PM +0200, Krzysztof Kozlowski wrote:
>>>> On 05/07/2022 11:42, Johan Hovold wrote:
>>>>> Add the missing the description of the PHY-provider child node which was
>>>>> ignored when converting to DT schema.
>>>>>
>>>>> Also fix up the incorrect description that claimed that one child node
>>>>> per lane was required.
>>>>>
>>>>> Fixes: ccf51c1cedfd ("dt-bindings: phy: qcom,qmp: Convert QMP PHY bindings to yaml")
>>>>> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
>>>>> ---
>>>>>  .../bindings/phy/qcom,qmp-pcie-phy.yaml       | 88 ++++++++++++++++++-
>>>>>  1 file changed, 85 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/phy/qcom,qmp-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,qmp-pcie-phy.yaml
>>>>> index ff1577f68a00..5a1ebf874559 100644
>>>>> --- a/Documentation/devicetree/bindings/phy/qcom,qmp-pcie-phy.yaml
>>>>> +++ b/Documentation/devicetree/bindings/phy/qcom,qmp-pcie-phy.yaml
>>>>> @@ -69,9 +69,37 @@ properties:
>>>
>>>>> +  - if:
>>>>> +      properties:
>>>>> +        compatible:
>>>>> +          contains:
>>>>> +            enum:
>>>>> +              - qcom,sm8250-qmp-gen3x2-pcie-phy
>>>>> +              - qcom,sm8250-qmp-modem-pcie-phy
>>>>> +              - qcom,sm8450-qmp-gen4x2-pcie-phy
>>>>> +    then:
>>>>> +      patternProperties:
>>>>> +        "^phy@[0-9a-f]+$":
>>>>> +          properties:
>>>>> +            reg:
>>>>> +              items:
>>>>> +                - description: TX lane 1
>>>>> +                - description: RX lane 1
>>>>> +                - description: PCS
>>>>> +                - description: TX lane 2
>>>>> +                - description: RX lane 2
>>>>> +                - description: PCS_MISC
>>>>> +    else:
>>>>> +      patternProperties:
>>>>> +        "^phy@[0-9a-f]+$":
>>>>> +          properties:
>>>>> +            reg:
>>>>> +              minItems: 3
>>>>> +              maxItems: 4
>>>>> +              items:
>>>>> +                - description: TX
>>>>> +                - description: RX
>>>>> +                - description: PCS
>>>>> +                - description: PCS_MISC
>>>>> +      if:
>>>>
>>>> Do not include if within other if. Just split the entire section to its
>>>> own if:.
>>>
>>> That sounds like it would just obfuscate the logic. The else clause
>>> specified 3-4 registers and the nested if determines which compatibles
>>> use which by further narrowing the range.
>>>
>>> If you move it out to the else: this would be really hard understand and
>>> verify.
>>
>> Every bindings are expected to do that way and most of them are doing
>> it: define broad constraints in properties:, then define strict
>> constraints per each variant. Easy to follow code. This binding is not
>> particularly special to make it different than other ones. Doing
>> semi-strict constraints in if: and then additional constrain in nested
>> if: is not easy to understand and verify.
> 
> Ok, so you want to flatten this by repeating also the register
> descriptions?
> 
> That wouldn't hurt readability as much, but doing so would be more error
> prone as it's easy to miss adding a new compatible in every group of
> conditionals and there's no else clause to catch the mistake.
> 
> Right know the logic is
> 
> 	if dual-lane
> 		items = 6
> 	else
> 		items = 3 or 4
> 		if single-lane-exception
> 			items = 3
> 		else
> 			items = 4
> 
> Flattening this gives
> 
> 	if dual-lane
> 		items = 6
> 	if single-lane-normal
> 		items = 4
> 	if single-lane-exception
> 		items = 3
> 
> Which means that every compatible must now be listed in one of the
> conditionals.

Yes, because it's explicit and easy to read. Handling compatibles in
'else' makes it opposite - one cannot use grep and cannot easily find
what is actually covered by maxItems:4 (you need to check all 7
compatibles to find what is not covered here).

> 
> Fine with me, but please confirm that I understood you correctly.

You have already flattened if-if-if for clocks and resets, so this
should follow similar approach. I don't think it could be squashed with
that previous if-if-if, though.

Best regards,
Krzysztof

  reply	other threads:[~2022-07-05 18:21 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-05  9:41 [PATCH 00/43] phy: qcom,qmp: fix dt-bindings and deprecate lane suffix Johan Hovold
2022-07-05  9:41 ` [PATCH 01/43] dt-bindings: phy: qcom,qmp: fix bogus clock-cells property Johan Hovold
2022-07-05 10:01   ` Krzysztof Kozlowski
2022-07-05  9:41 ` [PATCH 02/43] dt-bindings: phy: qcom,qmp: sort compatible strings Johan Hovold
2022-07-05 10:02   ` Krzysztof Kozlowski
2022-07-05  9:41 ` [PATCH 03/43] dt-bindings: phy: qcom,qmp: clean up descriptions Johan Hovold
2022-07-05 10:02   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 04/43] dt-bindings: phy: qcom,qmp: clean up example Johan Hovold
2022-07-05 10:03   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 05/43] dt-bindings: phy: qcom,qmp: drop child-node comment Johan Hovold
2022-07-05 10:03   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 06/43] dt-bindings: phy: qcom,qmp: split out msm8996-qmp-pcie-phy Johan Hovold
2022-07-05 10:08   ` Krzysztof Kozlowski
2022-07-05 10:20     ` Johan Hovold
2022-07-05 10:23       ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 07/43] dt-bindings: phy: qcom,msm8996-qmp-pcie: clean up constraints Johan Hovold
2022-07-05 10:09   ` Krzysztof Kozlowski
2022-07-05 10:21     ` Johan Hovold
2022-07-05 10:23       ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 08/43] dt-bindings: phy: qcom,msm8996-qmp-pcie: add missing child node schema Johan Hovold
2022-07-05 10:10   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 09/43] dt-bindings: phy: qcom,msm8996-qmp-pcie: add example node Johan Hovold
2022-07-05 10:10   ` Krzysztof Kozlowski
2022-07-05 10:22     ` Johan Hovold
2022-07-05 11:32       ` Krzysztof Kozlowski
2022-07-05 12:00         ` Johan Hovold
2022-07-05  9:42 ` [PATCH 10/43] dt-bindings: phy: qcom,msm8996-qmp-pcie: deprecate PIPE clock names Johan Hovold
2022-07-05 10:10   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 11/43] dt-bindings: phy: qcom,msm8996-qmp-pcie: deprecate reset names Johan Hovold
2022-07-05 10:12   ` Krzysztof Kozlowski
2022-07-05 12:14     ` Johan Hovold
2022-07-05  9:42 ` [PATCH 12/43] dt-bindings: phy: qcom,qmp: split out PCIe PHY binding Johan Hovold
2022-07-05 10:13   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 13/43] dt-bindings: phy: qcom,qmp-pcie: clean up register constraints Johan Hovold
2022-07-05 10:13   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 14/43] dt-bindings: phy: qcom,qmp-pcie: clean up clock constraints Johan Hovold
2022-07-05 10:14   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 15/43] dt-bindings: phy: qcom,qmp-pcie: clean up reset constraints Johan Hovold
2022-07-05 10:14   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 16/43] dt-bindings: phy: qcom,qmp-pcie: drop unused vddp-ref-clk supply Johan Hovold
2022-07-05 10:16   ` Krzysztof Kozlowski
2022-07-05 11:46     ` Johan Hovold
2022-07-05 11:59       ` Krzysztof Kozlowski
2022-07-05 12:43         ` Johan Hovold
2022-07-05 18:13           ` Krzysztof Kozlowski
2022-07-06  6:03             ` Johan Hovold
2022-07-05  9:42 ` [PATCH 17/43] dt-bindings: phy: qcom,qmp-pcie: add missing child node schema Johan Hovold
2022-07-05 10:18   ` Krzysztof Kozlowski
2022-07-05 11:51     ` Johan Hovold
2022-07-05 11:56       ` Krzysztof Kozlowski
2022-07-05 12:11         ` Johan Hovold
2022-07-05 18:21           ` Krzysztof Kozlowski [this message]
2022-07-06  6:06             ` Johan Hovold
2022-07-05 14:14   ` Rob Herring
2022-07-05  9:42 ` [PATCH 18/43] dt-bindings: phy: qcom,qmp-pcie: add example node Johan Hovold
2022-07-05 10:18   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 19/43] dt-bindings: phy: qcom,qmp-pcie: deprecate PIPE clock name Johan Hovold
2022-07-05  9:42 ` [PATCH 20/43] dt-bindings: phy: qcom,qmp: split out UFS PHY binding Johan Hovold
2022-07-05 10:19   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 21/43] dt-bindings: phy: qcom,qmp-ufs: clean up supplies Johan Hovold
2022-07-05  9:42 ` [PATCH 22/43] dt-bindings: phy: qcom,qmp-ufs: clean up reset providers Johan Hovold
2022-07-05  9:42 ` [PATCH 23/43] dt-bindings: phy: qcom,qmp-ufs: clean up clock constraints Johan Hovold
2022-07-05  9:42 ` [PATCH 24/43] dt-bindings: phy: qcom,qmp-ufs: clean up register constraints Johan Hovold
2022-07-05  9:42 ` [PATCH 25/43] dt-bindings: phy: qcom,qmp-ufs: add missing SM8450 clock Johan Hovold
2022-07-05  9:42 ` [PATCH 26/43] dt-bindings: phy: qcom,qmp-ufs: add missing SM8150 power domain Johan Hovold
2022-07-05  9:42 ` [PATCH 27/43] dt-bindings: phy: qcom,qmp-ufs: add missing child node schema Johan Hovold
2022-07-05  9:42 ` [PATCH 28/43] dt-bindings: phy: qcom,qmp-ufs: add example node Johan Hovold
2022-07-05  9:42 ` [PATCH 29/43] dt-bindings: phy: qcom,qmp: split out USB binding Johan Hovold
2022-07-05  9:42 ` [PATCH 30/43] dt-bindings: phy: qcom,qmp-usb: clean up clock constraints Johan Hovold
2022-07-05  9:42 ` [PATCH 31/43] dt-bindings: phy: qcom,qmp-usb: clean up supplies Johan Hovold
2022-07-05  9:42 ` [PATCH 32/43] dt-bindings: phy: qcom,qmp-usb: drop unused vddp-ref-clk supply Johan Hovold
2022-07-05  9:42 ` [PATCH 33/43] dt-bindings: phy: qcom,qmp-usb: clean up reset providers Johan Hovold
2022-07-05  9:42 ` [PATCH 34/43] dt-bindings: phy: qcom,qmp-usb: add missing child node schema Johan Hovold
2022-07-05  9:42 ` [PATCH 35/43] dt-bindings: phy: qcom,qmp-usb: deprecate PIPE clock name Johan Hovold
2022-07-05  9:42 ` [PATCH 36/43] dt-bindings: phy: qcom,qmp-usb3-dp: fix bogus clock-cells property Johan Hovold
2022-07-05  9:42 ` [PATCH 37/43] dt-bindings: phy: qcom,qmp-usb3-dp: deprecate USB PIPE clock name Johan Hovold
2022-07-05  9:42 ` [PATCH 38/43] phy: qcom-qmp-pcie: drop pipe clock lane suffix Johan Hovold
2022-07-05 10:20   ` Krzysztof Kozlowski
2022-07-05 11:13     ` Dmitry Baryshkov
2022-07-05 11:58       ` Johan Hovold
2022-07-05 12:06         ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 39/43] phy: qcom-qmp-combo: drop unused lane reset Johan Hovold
2022-07-05 11:10   ` Dmitry Baryshkov
2022-07-05  9:42 ` [PATCH 40/43] phy: qcom-qmp-combo: drop pipe clock lane suffix Johan Hovold
2022-07-05 10:20   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 41/43] phy: qcom-qmp-pcie-msm8996: " Johan Hovold
2022-07-05  9:42 ` [PATCH 42/43] phy: qcom-qmp-pcie-msm8996: drop reset " Johan Hovold
2022-07-05 10:21   ` Krzysztof Kozlowski
2022-07-05  9:42 ` [PATCH 43/43] phy: qcom-qmp-usb: drop pipe clock " Johan Hovold

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=cf61b071-aa31-6f67-07f1-4f15e0fe7511@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=johan+linaro@kernel.org \
    --cc=johan@kernel.org \
    --cc=kishon@ti.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=vkoul@kernel.org \
    /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).