Message ID | 20211004191527.1610759-3-sean.anderson@seco.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Add support for Xilinx PCS | expand |
On Mon, 04 Oct 2021 15:15:13 -0400, Sean Anderson wrote: > This adds a binding for the Xilinx 1G/2.5G Ethernet PCS/PMA or SGMII > LogiCORE IP. This device is a soft device typically used to adapt between > GMII and SGMII or 1000BASE-X (in combination with a suitable SERDES). The > standard property is roughly analogous to the interface property of > ethernet controllers, except that it has an additional value used to > indicate that dynamic switching is supported. Note that switching is > supported only between SGMII and 1000BASE-X, and only if the appropriate > parameter is set when the device is synthesized. The property name was > chosen to align with the terminology in the datasheet. I also considered > "mdi", but that is a bit of a misnomer in the case of SGMII. > > Signed-off-by: Sean Anderson <sean.anderson@seco.com> > --- > > .../devicetree/bindings/net/xilinx,pcs.yaml | 83 +++++++++++++++++++ > 1 file changed, 83 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/xilinx,pcs.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: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/xilinx,pcs.yaml: properties:compatible:contains:const: ['xilinx,pcs-16.2'] is not of type 'string' from schema $id: http://devicetree.org/meta-schemas/string-array.yaml# /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/xilinx,pcs.yaml: properties:clocks: {'maxItems': 1, 'items': [{'description': 'The reference clock for the PMD, which is typically a SERDES but may be a direct interface to LVDS I/Os. Depending on your setup, this may be the gtrefclk, refclk, or clk125m signal.'}]} should not be valid under {'required': ['maxItems']} hint: "maxItems" is not needed with an "items" list from schema $id: http://devicetree.org/meta-schemas/items.yaml# /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/xilinx,pcs.yaml: properties:clocks: 'oneOf' conditional failed, one must be fixed: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/xilinx,pcs.yaml: properties:clocks: 'anyOf' conditional failed, one must be fixed: 'items' is not one of ['maxItems', 'description', 'deprecated'] hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values. 'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref'] 'items' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref'] 1 is less than the minimum of 2 hint: Arrays must be described with a combination of minItems/maxItems/items hint: cell array properties must define how many entries and what the entries are when there is more than one entry. from schema $id: http://devicetree.org/meta-schemas/clocks.yaml# 'maxItems' is not one of ['type', 'description', 'dependencies', 'properties', 'patternProperties', 'additionalProperties', 'unevaluatedProperties', 'deprecated', 'required', 'allOf', 'anyOf', 'oneOf', '$ref'] 'items' is not one of ['type', 'description', 'dependencies', 'properties', 'patternProperties', 'additionalProperties', 'unevaluatedProperties', 'deprecated', 'required', 'allOf', 'anyOf', 'oneOf', '$ref'] 'type' is a required property hint: DT nodes ("object" type in schemas) can only use a subset of json-schema keywords from schema $id: http://devicetree.org/meta-schemas/clocks.yaml# /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/xilinx,pcs.yaml: ignoring, error in schema: properties: compatible: contains: const warning: no schema found in file: ./Documentation/devicetree/bindings/net/xilinx,pcs.yaml Documentation/devicetree/bindings/net/xilinx,pcs.example.dt.yaml:0:0: /example-0/mdio/ethernet-pcs@0: failed to match any schema with compatible: ['xlnx,pcs-16.2'] doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/patch/1536331 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.
diff --git a/Documentation/devicetree/bindings/net/xilinx,pcs.yaml b/Documentation/devicetree/bindings/net/xilinx,pcs.yaml new file mode 100644 index 000000000000..43750dcb4b11 --- /dev/null +++ b/Documentation/devicetree/bindings/net/xilinx,pcs.yaml @@ -0,0 +1,83 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/xilinx,pcs.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Xilinx 1G/2.5G Ethernet PCS/PMA or SGMII LogiCORE IP + +maintainers: + - Sean Anderson <sean.anderson@seco.com> + +description: + This is a soft device which converts between GMII and SGMII, 2.5G SGMII, + 1000BASE-X, or 2500BASE-X. It may have an attached SERDES, or may talk + directly to LVDS. + +allOf: + - $ref: "ethernet-controller.yaml#" + +properties: + compatible: + contains: + const: + - xilinx,pcs-16.2 + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + items: + - description: The reference clock for the PMD, which is typically a + SERDES but may be a direct interface to LVDS I/Os. + Depending on your setup, this may be the gtrefclk, refclk, + or clk125m signal. + + clock-names: + const: refclk + + resets: + maxItems: 1 + + reset-names: + const: pcs + + standard: + description: + The interface standard that the PCS supports. The sgmii/1000base-x + setting indicates that the PCS supports dynamically switching between + SGMII and 1000BASE-X. + enum: + - sgmii + - 1000base-x + - sgmii/1000base-x + - 2500base-x + +required: + - compatible + - reg + - clocks + - clock-names + - resets + - reset-names + - standard + +additionalProperties: false + +examples: + - | + mdio { + #address-cells = <1>; + #size-cells = <0>; + + pcs0: ethernet-pcs@0 { + compatible = "xlnx,pcs-16.2"; + reg = <0>; + clocks = <&si570>; + clock-names = "refclk"; + resets = <&pcs_reset 1>; + reset-names = "pcs"; + standard = "sgmii/1000base-x"; + }; + };
This adds a binding for the Xilinx 1G/2.5G Ethernet PCS/PMA or SGMII LogiCORE IP. This device is a soft device typically used to adapt between GMII and SGMII or 1000BASE-X (in combination with a suitable SERDES). The standard property is roughly analogous to the interface property of ethernet controllers, except that it has an additional value used to indicate that dynamic switching is supported. Note that switching is supported only between SGMII and 1000BASE-X, and only if the appropriate parameter is set when the device is synthesized. The property name was chosen to align with the terminology in the datasheet. I also considered "mdi", but that is a bit of a misnomer in the case of SGMII. Signed-off-by: Sean Anderson <sean.anderson@seco.com> --- .../devicetree/bindings/net/xilinx,pcs.yaml | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/xilinx,pcs.yaml