diff mbox series

[RFC,1/2] dt-bindings: PCI: imx6: add fsl,imx6q-pcie.yaml

Message ID 1626942155-9209-2-git-send-email-hongxing.zhu@nxp.com
State New
Headers show
Series [RFC,1/2] dt-bindings: PCI: imx6: add fsl,imx6q-pcie.yaml | expand

Commit Message

Hongxing Zhu July 22, 2021, 8:22 a.m. UTC
Convert the fsl,imx6q-pcie.txt into a schema.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 .../bindings/pci/fsl,imx6q-pcie.yaml          | 212 ++++++++++++++++++
 MAINTAINERS                                   |   1 +
 2 files changed, 213 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml

Comments

Hongxing Zhu July 23, 2021, 3:11 a.m. UTC | #1
> -----Original Message-----

> From: Rob Herring <robh@kernel.org>

> Sent: Thursday, July 22, 2021 10:37 PM

> To: Richard Zhu <hongxing.zhu@nxp.com>

> Cc: dl-linux-imx <linux-imx@nxp.com>; linux-arm-kernel@lists.infradead.org;

> l.stach@pengutronix.de; galak@kernel.crashing.org; shawnguo@kernel.org;

> linux-kernel@vger.kernel.org; devicetree@vger.kernel.org

> Subject: Re: [RFC 1/2] dt-bindings: PCI: imx6: add fsl,imx6q-pcie.yaml

> 

> On Thu, 22 Jul 2021 16:22:34 +0800, Richard Zhu wrote:

> > Convert the fsl,imx6q-pcie.txt into a schema.

> >

> > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>

> > ---

> >  .../bindings/pci/fsl,imx6q-pcie.yaml          | 212

> ++++++++++++++++++

> >  MAINTAINERS                                   |   1 +

> >  2 files changed, 213 insertions(+)

> >  create mode 100644

> > Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml

> >

> 

> My bot found errors running 'make DT_CHECKER_FLAGS=-m

> dt_binding_check'

> on your patch (DT_CHECKER_FLAGS is new in v5.13):

> 

> yamllint warnings/errors:

> 

> dtschema/dtc warnings/errors:

> make[1]: *** Deleting file

> 'Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dts'

> Traceback (most recent call last):

>   File "/usr/local/bin/dt-extract-example", line 45, in <module>

>     binding = yaml.load(open(args.yamlfile, encoding='utf-8').read())

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line

> 434, in load

>     return constructor.get_single_data()

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 122, in get_single_data

>     return self.construct_document(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 132, in construct_document

>     for _dummy in generator:

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 722, in construct_yaml_map

>     value = self.construct_mapping(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 446, in construct_mapping

>     return BaseConstructor.construct_mapping(self, node, deep=deep)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 264, in construct_mapping

>     if self.check_mapping_key(node, key_node, mapping, key, value):

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 295, in check_mapping_key

>     raise DuplicateKeyError(*args)

> ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping

>   in "<unicode string>", line 22, column 5 found duplicate key "const" with

> value "fsl,imx6sx-pcie" (original value: "fsl,imx6q-pcie")

>   in "<unicode string>", line 23, column 5

> 

> To suppress this check see:

> 

> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fyaml.re

> adthedocs.io%2Fen%2Flatest%2Fapi.html%23duplicate-keys&amp;data=04%

> 7C01%7Chongxing.zhu%40nxp.com%7C6171b22cdb104315be0d08d94d1e36

> 3f%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6376256144309

> 20703%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l

> uMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=4Mu4S%2B6

> KeTg4gaCCL2Q%2ByjO7FbENp5LGHVRPuBhtvCc%3D&amp;reserved=0

> 

> Duplicate keys will become an error in future releases, and are errors by

> default when using the new API.

> 

> make[1]: *** [Documentation/devicetree/bindings/Makefile:20:

> Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dts] Error 1

> make[1]: *** Waiting for unfinished jobs....

> Traceback (most recent call last):

>   File "/usr/local/bin/dt-doc-validate", line 67, in <module>

>     ret = check_doc(f)

>   File "/usr/local/bin/dt-doc-validate", line 25, in check_doc

>     testtree = dtschema.load(filename, line_number=line_number)

>   File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 623, in

> load

>     return yaml.load(f.read())

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line

> 434, in load

>     return constructor.get_single_data()

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 122, in get_single_data

>     return self.construct_document(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 132, in construct_document

>     for _dummy in generator:

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 722, in construct_yaml_map

>     value = self.construct_mapping(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 446, in construct_mapping

>     return BaseConstructor.construct_mapping(self, node, deep=deep)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 264, in construct_mapping

>     if self.check_mapping_key(node, key_node, mapping, key, value):

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 295, in check_mapping_key

>     raise DuplicateKeyError(*args)

> ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping

>   in "<unicode string>", line 22, column 5 found duplicate key "const" with

> value "fsl,imx6sx-pcie" (original value: "fsl,imx6q-pcie")

>   in "<unicode string>", line 23, column 5

> 

> To suppress this check see:

> 

> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fyaml.re

> adthedocs.io%2Fen%2Flatest%2Fapi.html%23duplicate-keys&amp;data=04%

> 7C01%7Chongxing.zhu%40nxp.com%7C6171b22cdb104315be0d08d94d1e36

> 3f%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6376256144309

> 20703%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l

> uMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=4Mu4S%2B6

> KeTg4gaCCL2Q%2ByjO7FbENp5LGHVRPuBhtvCc%3D&amp;reserved=0

> 

> Duplicate keys will become an error in future releases, and are errors by

> default when using the new API.

> 

> make[1]: *** Deleting file

> 'Documentation/devicetree/bindings/processed-schema-examples.json'

> Traceback (most recent call last):

>   File "/usr/local/bin/dt-mk-schema", line 38, in <module>

>     schemas = dtschema.process_schemas(args.schemas,

> core_schema=(not args.useronly))

>   File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 585, in

> process_schemas

>     sch = process_schema(os.path.abspath(filename))

>   File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 558, in

> process_schema

>     schema = load_schema(filename)

>   File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 125, in

> load_schema

>     return do_load(os.path.join(schema_basedir, schema))

>   File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 111, in

> do_load

>     return yaml.load(f.read())

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line

> 434, in load

>     return constructor.get_single_data()

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 122, in get_single_data

>     return self.construct_document(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 132, in construct_document

>     for _dummy in generator:

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 722, in construct_yaml_map

>     value = self.construct_mapping(node)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 446, in construct_mapping

>     return BaseConstructor.construct_mapping(self, node, deep=deep)

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 264, in construct_mapping

>     if self.check_mapping_key(node, key_node, mapping, key, value):

>   File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py",

> line 295, in check_mapping_key

>     raise DuplicateKeyError(*args)

> ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping

>   in "<unicode string>", line 22, column 5 found duplicate key "const" with

> value "fsl,imx6sx-pcie" (original value: "fsl,imx6q-pcie")

>   in "<unicode string>", line 23, column 5

> 

> To suppress this check see:

> 

> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fyaml.re

> adthedocs.io%2Fen%2Flatest%2Fapi.html%23duplicate-keys&amp;data=04%

> 7C01%7Chongxing.zhu%40nxp.com%7C6171b22cdb104315be0d08d94d1e36

> 3f%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6376256144309

> 20703%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l

> uMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=4Mu4S%2B6

> KeTg4gaCCL2Q%2ByjO7FbENp5LGHVRPuBhtvCc%3D&amp;reserved=0

> 

> Duplicate keys will become an error in future releases, and are errors by

> default when using the new API.

> 

> make[1]: *** [Documentation/devicetree/bindings/Makefile:62:

> Documentation/devicetree/bindings/processed-schema-examples.json] Error

> 1

> make: *** [Makefile:1418: dt_binding_check] Error 2 \ndoc reference errors

> (make refcheckdocs):

> 

> See

> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch

> work.ozlabs.org%2Fpatch%2F1508586&amp;data=04%7C01%7Chongxing.zhu

> %40nxp.com%7C6171b22cdb104315be0d08d94d1e363f%7C686ea1d3bc2b4

> c6fa92cd99c5c301635%7C0%7C0%7C637625614430920703%7CUnknown%

> 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW

> wiLCJXVCI6Mn0%3D%7C1000&amp;sdata=1x%2BNE6KyvoYSRAPFxPVXKYu4

> Md59o%2F9CtEKqaCsOwuU%3D&amp;reserved=0

> 

> This check can fail if there are any dependencies. The base for a patch series

> is generally the most recent rc1.

> 

> If you already ran 'make dt_binding_check' and didn't see the above error(s),

> then make sure 'yamllint' is installed and dt-schema is up to

> date:

> 

> pip3 install dtschema --upgrade

> 

> Please check and re-submit.

[Richard Zhu] Got that. Thanks for your help. Will submit the patch-set after the errors are fixed.

Best Regards
Richard Zhu
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
new file mode 100644
index 000000000000..b66b681d7ad7
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
@@ -0,0 +1,212 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/fsl,imx6q-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX6 PCIe host controller
+
+maintainers:
+  - Lucas Stach <l.stach@pengutronix.de>
+  - Richard Zhu <hongxing.zhu@nxp.com>
+
+description: |+
+  This PCIe host controller is based on the Synopsys DesignWare PCIe IP
+  and thus inherits all the common properties defined in snps,dw-pcie.yaml.
+
+allOf:
+  - $ref: /schemas/pci/pci-bus.yaml#
+
+properties:
+  compatible:
+    const: fsl,imx6q-pcie
+    const: fsl,imx6sx-pcie
+    const: fsl,imx6qp-pcie
+    const: fsl,imx7d-pcie
+    const: fsl,imx8mq-pcie
+
+  reg:
+    items:
+      - description: Data Bus Interface (DBI) registers.
+      - description: PCIe configuration space region.
+
+  reg-names:
+    items:
+      - const: dbi
+      - const: config
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: builtin MSI controller.
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: msi
+
+  clocks:
+    minItems: 3
+    maxItems: 4
+    items:
+      - description: PCIe bridge clock.
+      - description: PCIe bus clock.
+      - description: PCIe PHY clock.
+      - description: Additional required clock entry for imx6sx-pcie,
+          imx8mq-pcie.
+
+  clock-names:
+    minItems: 3
+    maxItems: 4
+    items:
+      - const: pcie
+      - const: pcie_bus
+      - const: pcie_phy
+      - const: pcie_inbound_axi for imx6sx-pcie, pcie_aux for imx8mq-pcie
+
+  num-lanes:
+    const: 1
+
+  num-viewport:
+    const: 4
+
+  fsl,imx7d-pcie-phy:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: A phandle to an fsl,imx7d-pcie-phy node. Additional
+      required properties for imx7d-pcie and imx8mq-pcie.
+
+  power-domains:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    minItems: 1
+    maxItems: 2
+    items:
+      - description: Phandle pointing to the DISPLAY domain for imx6sx-pcie,
+          to PCIE_PHY power domain for imx7d-pcie and imx8mq-pcie.
+      - description: Phandle pointing to the PCIE_PHY power domains for
+          imx6sx-pcie.
+
+  power-domain-names:
+    minItems: 1
+    maxItems: 2
+    items:
+      - const: pcie
+      - const: pcie_phy
+
+  resets:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    items:
+      - description: Phandles to PCIe-related reset lines exposed by SRC
+          IP block. Additional required by imx7d-pcie and imx8mq-pcie.
+
+  reset-names:
+    items:
+      - const: pciephy
+      - const: apps
+      - const: turnoff
+
+  fsl,tx-deemph-gen1:
+    description: Gen1 De-emphasis value (optional required).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  fsl,tx-deemph-gen2-3p5db:
+    description: Gen2 (3.5db) De-emphasis value (optional required).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  fsl,tx-deemph-gen2-6db:
+    description: Gen2 (6db) De-emphasis value (optional required).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 20
+
+  fsl,tx-swing-full:
+    description: Gen2 TX SWING FULL value (optional required).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 127
+
+  fsl,tx-swing-low:
+    description: TX launch amplitude swing_low value (optional required).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 127
+
+  fsl,max-link-speed:
+    description: Specify PCI Gen for link capability (optional required).
+      Note that the IMX6 LVDS clock outputs do not meet gen2 jitter
+      requirements and thus for gen2 capability a gen2 compliant clock
+      generator should be used and configured.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2, 3, 4]
+    default: 1
+
+  reset-gpio:
+    description: Should specify the GPIO for controlling the PCI bus device
+      reset signal. It's not polarity aware and defaults to active-low reset
+      sequence (L=reset state, H=operation state) (optional required).
+
+  reset-gpio-active-high:
+    description: If present then the reset sequence using the GPIO
+      specified in the "reset-gpio" property is reversed (H=reset state,
+      L=operation state) (optional required).
+
+  vpcie-supply:
+    description: Should specify the regulator in charge of PCIe port power.
+      The regulator will be enabled when initializing the PCIe host and
+      disabled either as part of the init process or when shutting down
+      the host (optional required).
+
+  vph-supply:
+    description: Should specify the regulator in charge of VPH one of
+      the three PCIe PHY powers. This regulator can be supplied by both
+      1.8v and 3.3v voltage supplies (optional required).
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - "#address-cells"
+  - "#size-cells"
+  - device_type
+  - bus-range
+  - ranges
+  - num-lanes
+  - num-viewport
+  - interrupts
+  - interrupt-names
+  - "#interrupt-cells"
+  - interrupt-map-mask
+  - interrupt-map
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pcie: pcie@1ffc000 {
+        compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
+        reg = <0x01ffc000 0x04000>,
+              <0x01f00000 0x80000>;
+        reg-names = "dbi", "config";
+        #address-cells = <3>;
+        #size-cells = <2>;
+        device_type = "pci";
+        bus-range = <0x00 0xff>;
+        ranges = <0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
+                  0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
+        num-lanes = <1>;
+        num-viewport = <4>;
+        interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "msi";
+        #interrupt-cells = <1>;
+        interrupt-map-mask = <0 0 0 0x7>;
+        interrupt-map = <0 0 0 1 &gpc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 2 &gpc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 3 &gpc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 4 &gpc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks IMX6QDL_CLK_PCIE_AXI>,
+                <&clks IMX6QDL_CLK_LVDS1_GATE>,
+                <&clks IMX6QDL_CLK_PCIE_REF_125M>;
+        clock-names = "pcie", "pcie_bus", "pcie_phy";
+        status = "disabled";
+    };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 2c5dc7d20d81..a616e250d846 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14186,6 +14186,7 @@  L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
+F:	Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
 F:	drivers/pci/controller/dwc/*imx6*
 
 PCI DRIVER FOR FU740