diff mbox series

[v4,3/3] dt-bindings: imx6q-pcie: Handle more resets on legacy platforms

Message ID 20221106222524.223188-3-marex@denx.de (mailing list archive)
State New, archived
Headers show
Series [v4,1/3] dt-bindings: imx6q-pcie: Handle various clock configurations | expand

Commit Message

Marek Vasut Nov. 6, 2022, 10:25 p.m. UTC
The i.MX6 and i.MX7D does not use block controller to toggle PCIe
reset, hence the PCIe DT description contains three reset entries
on these older SoCs. Add this exception into the binding document.

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Richard Zhu <hongxing.zhu@nxp.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: NXP Linux Team <linux-imx@nxp.com>
To: devicetree@vger.kernel.org
---
V2: - Add mx8mq to 3-reset PCIe core variant
    - Handle the resets in allOf section
V3: - Reinstate reset: maxItems:3 and add minItems:2
    - Move reset-names back to main section
    - The validation no longer works and introduces errors like these:
      arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-dahlia.dtb: pcie@33800000: reset-names:0: 'pciephy' was expected
V4: - Reinstate reset minItems and maxItems
    - Turn the first two reset-names items into enums to cover all
      the various name combinations, sort the rest in allOf section
---
 .../bindings/pci/fsl,imx6q-pcie.yaml          | 34 +++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

Comments

Krzysztof Kozlowski Nov. 8, 2022, 6:17 p.m. UTC | #1
On 06/11/2022 23:25, Marek Vasut wrote:
> The i.MX6 and i.MX7D does not use block controller to toggle PCIe
> reset, hence the PCIe DT description contains three reset entries
> on these older SoCs. Add this exception into the binding document.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: NXP Linux Team <linux-imx@nxp.com>
> To: devicetree@vger.kernel.org
> ---
> V2: - Add mx8mq to 3-reset PCIe core variant
>     - Handle the resets in allOf section
> V3: - Reinstate reset: maxItems:3 and add minItems:2
>     - Move reset-names back to main section
>     - The validation no longer works and introduces errors like these:
>       arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-dahlia.dtb: pcie@33800000: reset-names:0: 'pciephy' was expected
> V4: - Reinstate reset minItems and maxItems
>     - Turn the first two reset-names items into enums to cover all
>       the various name combinations, sort the rest in allOf section
> ---
>  .../bindings/pci/fsl,imx6q-pcie.yaml          | 34 +++++++++++++++++--
>  1 file changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
> index b14c12a47cc1c..46fc29384ed34 100644
> --- a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
> +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
> @@ -84,14 +84,16 @@ properties:
>        - const: pcie_phy
>  
>    resets:
> +    minItems: 2
>      maxItems: 3
>      description: Phandles to PCIe-related reset lines exposed by SRC
>        IP block. Additional required by imx7d-pcie and imx8mq-pcie.
>  
>    reset-names:
> +    minItems: 2
>      items:
> -      - const: pciephy
> -      - const: apps
> +      - enum: [ pciephy, apps ]
> +      - enum: [ apps, turnoff ]
>        - const: turnoff

I would expect to remove all these entries. I asked to keep reset-names
with minIetms and maxItems. It works fine with your approach, but why
having the items in multiple places?

Best regards,
Krzysztof
Marek Vasut Nov. 9, 2022, 12:23 a.m. UTC | #2
On 11/8/22 19:17, Krzysztof Kozlowski wrote:
> On 06/11/2022 23:25, Marek Vasut wrote:
>> The i.MX6 and i.MX7D does not use block controller to toggle PCIe
>> reset, hence the PCIe DT description contains three reset entries
>> on these older SoCs. Add this exception into the binding document.
>>
>> Signed-off-by: Marek Vasut <marex@denx.de>
>> ---
>> Cc: Fabio Estevam <festevam@gmail.com>
>> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
>> Cc: Lucas Stach <l.stach@pengutronix.de>
>> Cc: Richard Zhu <hongxing.zhu@nxp.com>
>> Cc: Rob Herring <robh+dt@kernel.org>
>> Cc: Shawn Guo <shawnguo@kernel.org>
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: NXP Linux Team <linux-imx@nxp.com>
>> To: devicetree@vger.kernel.org
>> ---
>> V2: - Add mx8mq to 3-reset PCIe core variant
>>      - Handle the resets in allOf section
>> V3: - Reinstate reset: maxItems:3 and add minItems:2
>>      - Move reset-names back to main section
>>      - The validation no longer works and introduces errors like these:
>>        arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-dahlia.dtb: pcie@33800000: reset-names:0: 'pciephy' was expected
>> V4: - Reinstate reset minItems and maxItems
>>      - Turn the first two reset-names items into enums to cover all
>>        the various name combinations, sort the rest in allOf section
>> ---
>>   .../bindings/pci/fsl,imx6q-pcie.yaml          | 34 +++++++++++++++++--
>>   1 file changed, 32 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
>> index b14c12a47cc1c..46fc29384ed34 100644
>> --- a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
>> +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
>> @@ -84,14 +84,16 @@ properties:
>>         - const: pcie_phy
>>   
>>     resets:
>> +    minItems: 2
>>       maxItems: 3
>>       description: Phandles to PCIe-related reset lines exposed by SRC
>>         IP block. Additional required by imx7d-pcie and imx8mq-pcie.
>>   
>>     reset-names:
>> +    minItems: 2
>>       items:
>> -      - const: pciephy
>> -      - const: apps
>> +      - enum: [ pciephy, apps ]
>> +      - enum: [ apps, turnoff ]
>>         - const: turnoff
> 
> I would expect to remove all these entries. I asked to keep reset-names
> with minIetms and maxItems. It works fine with your approach, but why
> having the items in multiple places?

I feel like maybe I'm getting a bit lost in the complexity. I did that ^ 
and it does seem to work, so V5 is coming.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
index b14c12a47cc1c..46fc29384ed34 100644
--- a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
@@ -84,14 +84,16 @@  properties:
       - const: pcie_phy
 
   resets:
+    minItems: 2
     maxItems: 3
     description: Phandles to PCIe-related reset lines exposed by SRC
       IP block. Additional required by imx7d-pcie and imx8mq-pcie.
 
   reset-names:
+    minItems: 2
     items:
-      - const: pciephy
-      - const: apps
+      - enum: [ pciephy, apps ]
+      - enum: [ apps, turnoff ]
       - const: turnoff
 
   fsl,tx-deemph-gen1:
@@ -283,6 +285,34 @@  allOf:
           maxItems: 1
         power-domain-names: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx6q-pcie
+              - fsl,imx6sx-pcie
+              - fsl,imx6qp-pcie
+              - fsl,imx7d-pcie
+              - fsl,imx8mq-pcie
+    then:
+      properties:
+        resets:
+          minItems: 3
+        reset-names:
+          items:
+            - const: pciephy
+            - const: apps
+            - const: turnoff
+    else:
+      properties:
+        resets:
+          maxItems: 2
+        reset-names:
+          items:
+            - const: apps
+            - const: turnoff
+
 examples:
   - |
     #include <dt-bindings/clock/imx6qdl-clock.h>