[PATCH net-next v2 2/9] dt-bindings: net: add backplane dt bindings

From: Florinel Iordache
Date: Fri Apr 24 2020 - 08:46:59 EST


Add ethernet backplane device tree bindings

Signed-off-by: Florinel Iordache <florinel.iordache@xxxxxxx>
---
.../bindings/net/ethernet-controller.yaml | 3 +-
.../devicetree/bindings/net/ethernet-phy.yaml | 50 +++++++++++++++++++++
.../devicetree/bindings/net/serdes-lane.yaml | 51 ++++++++++++++++++++++
Documentation/devicetree/bindings/net/serdes.yaml | 44 +++++++++++++++++++
4 files changed, 147 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/net/serdes-lane.yaml
create mode 100644 Documentation/devicetree/bindings/net/serdes.yaml

diff --git a/Documentation/devicetree/bindings/net/ethernet-controller.yaml b/Documentation/devicetree/bindings/net/ethernet-controller.yaml
index ac471b6..541cee5 100644
--- a/Documentation/devicetree/bindings/net/ethernet-controller.yaml
+++ b/Documentation/devicetree/bindings/net/ethernet-controller.yaml
@@ -93,8 +93,9 @@ properties:
- rxaui
- xaui

- # 10GBASE-KR, XFI, SFI
+ # 10GBASE-KR, 40GBASE-KR4, XFI, SFI
- 10gbase-kr
+ - 40gbase-kr4
- usxgmii

phy-mode:
diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
index 5aa141c..436b5a7 100644
--- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml
+++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
@@ -161,6 +161,42 @@ properties:
description:
Specifies a reference to a node representing a SFP cage.

+ eq-algorithm:
+ description:
+ Specifies the desired equalization algorithm to be used
+ by the KR link training
+ oneOf:
+ - const: fixed
+ description:
+ Backplane KR using fixed coefficients meaning no
+ equalization algorithm
+ - const: bee
+ description:
+ Backplane KR using 3-Taps Bit Edge Equalization (BEE)
+ algorithm
+
+ eq-init:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 3
+ maxItems: 3
+ description:
+ Triplet of KR coefficients. Specifies the initialization
+ values for standard KR equalization coefficients used by
+ the link training (pre-cursor, main-cursor, post-cursor)
+
+ eq-params:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description:
+ Variable size array of KR parameters. Specifies the HW
+ specific parameters used by the link training.
+
+ lane-handle:
+ $ref: /schemas/types.yaml#definitions/phandle
+ description:
+ Specifies a reference (or array of references) to a node
+ representing the desired SERDES lane (or lanes) used in
+ backplane mode.
+
required:
- reg

@@ -183,3 +219,17 @@ examples:
reset-deassert-us = <2000>;
};
};
+ - |
+ ethernet {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ethernet-phy@0 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <0x0>;
+ lane-handle = <&lane_d>;
+ eq-algorithm = "fixed";
+ eq-init = <0x2 0x29 0x5>;
+ eq-params = <0>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/net/serdes-lane.yaml b/Documentation/devicetree/bindings/net/serdes-lane.yaml
new file mode 100644
index 0000000..ce3581e
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/serdes-lane.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/serdes-lane.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Serdes Lane Binding
+
+maintainers:
+ - Florinel Iordache <florinel.iordache@xxxxxxx>
+
+properties:
+ $nodename:
+ pattern: "^lane(@[a-f0-9]+)?$"
+
+ compatible:
+ oneOf:
+ - const: lane-10g
+ description: Lane part of a 10G SerDes module
+ - const: lane-28g
+ description: Lane part of a 28G SerDes module
+
+ reg:
+ description:
+ Registers memory map offset and size for this lane
+
+ reg-names:
+ description:
+ Names of the register map given in "reg" node.
+
+examples:
+ - |
+ serdes1: serdes@1ea0000 {
+ compatible = "serdes-10g";
+ reg = <0x0 0x1ea0000 0 0x00002000>;
+ reg-names = "serdes", "serdes-10g";
+ little-endian;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+ lane_a: lane@800 {
+ compatible = "lane-10g";
+ reg = <0x800 0x40>;
+ reg-names = "lane", "serdes-lane";
+ };
+ lane_b: lane@840 {
+ compatible = "lane-10g";
+ reg = <0x840 0x40>;
+ reg-names = "lane", "serdes-lane";
+ };
+ };
diff --git a/Documentation/devicetree/bindings/net/serdes.yaml b/Documentation/devicetree/bindings/net/serdes.yaml
new file mode 100644
index 0000000..fd3da85
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/serdes.yaml
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/serdes.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Serdes Module Binding
+
+maintainers:
+ - Florinel Iordache <florinel.iordache@xxxxxxx>
+
+properties:
+ $nodename:
+ pattern: "^serdes(@[a-f0-9]+)?$"
+
+ compatible:
+ oneOf:
+ - const: serdes-10g
+ description: SerDes module type of 10G
+ - const: serdes-28g
+ description: SerDes module type of 28G
+
+ reg:
+ description:
+ Registers memory map offset and size for this serdes module
+
+ reg-names:
+ description:
+ Names of the register map given in "reg" node.
+
+ little-endian:
+ description:
+ Specifies the endianness of serdes module
+ For complete definition see
+ Documentation/devicetree/bindings/common-properties.txt
+
+examples:
+ - |
+ serdes1: serdes@1ea0000 {
+ compatible = "serdes-10g";
+ reg = <0x0 0x1ea0000 0 0x00002000>;
+ reg-names = "serdes", "serdes-10g";
+ little-endian;
+ };
--
1.9.1