[PATCH net-next v7 01/15] dt-bindings: net: Introduce the ethernet-connector description

Maxime Chevallier posted 15 patches 3 months, 1 week ago
There is a newer version of this series
[PATCH net-next v7 01/15] dt-bindings: net: Introduce the ethernet-connector description
Posted by Maxime Chevallier 3 months, 1 week ago
The ability to describe the physical ports of Ethernet devices is useful
to describe multi-port devices, as well as to remove any ambiguity with
regard to the nature of the port.

Moreover, describing ports allows for a better description of features
that are tied to connectors, such as PoE through the PSE-PD devices.

Introduce a binding to allow describing the ports, for now with 2
attributes :

 - The number of lanes, which is a quite generic property that allows
   differentating between multiple similar technologies such as BaseT1
   and "regular" BaseT (which usually means BaseT4).

 - The media that can be used on that port, such as BaseT for Twisted
   Copper, BaseC for coax copper, BaseS/L for Fiber, BaseK for backplane
   ethernet, etc. This allows defining the nature of the port, and
   therefore avoids the need for vendor-specific properties such as
   "micrel,fiber-mode" or "ti,fiber-mode".

The port description lives in its own file, as it is intended in the
future to allow describing the ports for phy-less devices.

Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
 .../bindings/net/ethernet-connector.yaml      | 47 +++++++++++++++++++
 .../devicetree/bindings/net/ethernet-phy.yaml | 18 +++++++
 MAINTAINERS                                   |  1 +
 3 files changed, 66 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/ethernet-connector.yaml

diff --git a/Documentation/devicetree/bindings/net/ethernet-connector.yaml b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
new file mode 100644
index 000000000000..2aa28e6c1523
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/ethernet-connector.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic Ethernet Connector
+
+maintainers:
+  - Maxime Chevallier <maxime.chevallier@bootlin.com>
+
+description:
+  An Ethernet Connectr represents the output of a network component such as
+  a PHY, an Ethernet controller with no PHY, or an SFP module.
+
+properties:
+
+  lanes:
+    description:
+      Defines the number of lanes on the port, that is the number of physical
+      channels used to convey the data with the link partner.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  media:
+    description:
+      The mediums, as defined in 802.3, that can be used on the port.
+    items:
+      enum:
+        - BaseT
+        - BaseK
+        - BaseS
+        - BaseC
+        - BaseL
+        - BaseD
+        - BaseE
+        - BaseF
+        - BaseV
+        - BaseMLD
+        - BaseX
+
+required:
+  - lanes
+  - media
+
+additionalProperties: true
+
+...
diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
index 71e2cd32580f..6bf670beb66f 100644
--- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml
+++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
@@ -277,6 +277,17 @@ properties:
 
     additionalProperties: false
 
+  mdi:
+    type: object
+
+    patternProperties:
+      '^connector-[a-f0-9]+$':
+        $ref: /schemas/net/ethernet-connector.yaml#
+
+        unevaluatedProperties: false
+
+    additionalProperties: false
+
 required:
   - reg
 
@@ -313,5 +324,12 @@ examples:
                     default-state = "keep";
                 };
             };
+
+            mdi {
+              connector-0 {
+                lanes = <2>;
+                media = "BaseT";
+              };
+            };
         };
     };
diff --git a/MAINTAINERS b/MAINTAINERS
index bb9df569a3ff..20806cfc1003 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8946,6 +8946,7 @@ R:	Russell King <linux@armlinux.org.uk>
 L:	netdev@vger.kernel.org
 S:	Maintained
 F:	Documentation/ABI/testing/sysfs-class-net-phydev
+F:	Documentation/devicetree/bindings/net/ethernet-connector.yaml
 F:	Documentation/devicetree/bindings/net/ethernet-phy.yaml
 F:	Documentation/devicetree/bindings/net/mdio*
 F:	Documentation/devicetree/bindings/net/qca,ar803x.yaml
-- 
2.49.0
Re: [PATCH net-next v7 01/15] dt-bindings: net: Introduce the ethernet-connector description
Posted by Rob Herring 3 months ago
On Mon, Jun 30, 2025 at 04:33:00PM +0200, Maxime Chevallier wrote:
> The ability to describe the physical ports of Ethernet devices is useful
> to describe multi-port devices, as well as to remove any ambiguity with
> regard to the nature of the port.
> 
> Moreover, describing ports allows for a better description of features
> that are tied to connectors, such as PoE through the PSE-PD devices.
> 
> Introduce a binding to allow describing the ports, for now with 2
> attributes :
> 
>  - The number of lanes, which is a quite generic property that allows
>    differentating between multiple similar technologies such as BaseT1
>    and "regular" BaseT (which usually means BaseT4).
> 
>  - The media that can be used on that port, such as BaseT for Twisted
>    Copper, BaseC for coax copper, BaseS/L for Fiber, BaseK for backplane
>    ethernet, etc. This allows defining the nature of the port, and
>    therefore avoids the need for vendor-specific properties such as
>    "micrel,fiber-mode" or "ti,fiber-mode".
> 
> The port description lives in its own file, as it is intended in the
> future to allow describing the ports for phy-less devices.
> 
> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> ---
>  .../bindings/net/ethernet-connector.yaml      | 47 +++++++++++++++++++
>  .../devicetree/bindings/net/ethernet-phy.yaml | 18 +++++++
>  MAINTAINERS                                   |  1 +
>  3 files changed, 66 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/net/ethernet-connector.yaml
> 
> diff --git a/Documentation/devicetree/bindings/net/ethernet-connector.yaml b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
> new file mode 100644
> index 000000000000..2aa28e6c1523
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
> @@ -0,0 +1,47 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/ethernet-connector.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Generic Ethernet Connector
> +
> +maintainers:
> +  - Maxime Chevallier <maxime.chevallier@bootlin.com>
> +
> +description:
> +  An Ethernet Connectr represents the output of a network component such as

typo

> +  a PHY, an Ethernet controller with no PHY, or an SFP module.
> +
> +properties:
> +
> +  lanes:
> +    description:
> +      Defines the number of lanes on the port, that is the number of physical
> +      channels used to convey the data with the link partner.
> +    $ref: /schemas/types.yaml#/definitions/uint32

maximum?

Or I'd guess this is power of 2 values?

> +
> +  media:
> +    description:
> +      The mediums, as defined in 802.3, that can be used on the port.
> +    items:
> +      enum:
> +        - BaseT
> +        - BaseK
> +        - BaseS
> +        - BaseC
> +        - BaseL
> +        - BaseD
> +        - BaseE
> +        - BaseF
> +        - BaseV
> +        - BaseMLD
> +        - BaseX

This can be multiple values? But then how does one know what is actually 
attached?

> +
> +required:
> +  - lanes
> +  - media
> +
> +additionalProperties: true
> +
> +...
> diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
> index 71e2cd32580f..6bf670beb66f 100644
> --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml
> +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
> @@ -277,6 +277,17 @@ properties:
>  
>      additionalProperties: false
>  
> +  mdi:
> +    type: object
> +
> +    patternProperties:
> +      '^connector-[a-f0-9]+$':
> +        $ref: /schemas/net/ethernet-connector.yaml#
> +
> +        unevaluatedProperties: false
> +
> +    additionalProperties: false
> +
>  required:
>    - reg
>  
> @@ -313,5 +324,12 @@ examples:
>                      default-state = "keep";
>                  };
>              };
> +
> +            mdi {
> +              connector-0 {
> +                lanes = <2>;
> +                media = "BaseT";
> +              };
> +            };
>          };
>      };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index bb9df569a3ff..20806cfc1003 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -8946,6 +8946,7 @@ R:	Russell King <linux@armlinux.org.uk>
>  L:	netdev@vger.kernel.org
>  S:	Maintained
>  F:	Documentation/ABI/testing/sysfs-class-net-phydev
> +F:	Documentation/devicetree/bindings/net/ethernet-connector.yaml
>  F:	Documentation/devicetree/bindings/net/ethernet-phy.yaml
>  F:	Documentation/devicetree/bindings/net/mdio*
>  F:	Documentation/devicetree/bindings/net/qca,ar803x.yaml
> -- 
> 2.49.0
>
Re: [PATCH net-next v7 01/15] dt-bindings: net: Introduce the ethernet-connector description
Posted by Maxime Chevallier 3 months ago
Hi Rob,

On Tue, 8 Jul 2025 10:57:33 -0500
Rob Herring <robh@kernel.org> wrote:

> On Mon, Jun 30, 2025 at 04:33:00PM +0200, Maxime Chevallier wrote:
> > The ability to describe the physical ports of Ethernet devices is useful
> > to describe multi-port devices, as well as to remove any ambiguity with
> > regard to the nature of the port.
> > 
> > Moreover, describing ports allows for a better description of features
> > that are tied to connectors, such as PoE through the PSE-PD devices.
> > 
> > Introduce a binding to allow describing the ports, for now with 2
> > attributes :
> > 
> >  - The number of lanes, which is a quite generic property that allows
> >    differentating between multiple similar technologies such as BaseT1
> >    and "regular" BaseT (which usually means BaseT4).
> > 
> >  - The media that can be used on that port, such as BaseT for Twisted
> >    Copper, BaseC for coax copper, BaseS/L for Fiber, BaseK for backplane
> >    ethernet, etc. This allows defining the nature of the port, and
> >    therefore avoids the need for vendor-specific properties such as
> >    "micrel,fiber-mode" or "ti,fiber-mode".
> > 
> > The port description lives in its own file, as it is intended in the
> > future to allow describing the ports for phy-less devices.
> > 
> > Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> > ---
> >  .../bindings/net/ethernet-connector.yaml      | 47 +++++++++++++++++++
> >  .../devicetree/bindings/net/ethernet-phy.yaml | 18 +++++++
> >  MAINTAINERS                                   |  1 +
> >  3 files changed, 66 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/net/ethernet-connector.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/net/ethernet-connector.yaml b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
> > new file mode 100644
> > index 000000000000..2aa28e6c1523
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/net/ethernet-connector.yaml
> > @@ -0,0 +1,47 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/net/ethernet-connector.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Generic Ethernet Connector
> > +
> > +maintainers:
> > +  - Maxime Chevallier <maxime.chevallier@bootlin.com>
> > +
> > +description:
> > +  An Ethernet Connectr represents the output of a network component such as  
> 
> typo
> 
> > +  a PHY, an Ethernet controller with no PHY, or an SFP module.
> > +
> > +properties:
> > +
> > +  lanes:
> > +    description:
> > +      Defines the number of lanes on the port, that is the number of physical
> > +      channels used to convey the data with the link partner.
> > +    $ref: /schemas/types.yaml#/definitions/uint32  
> 
> maximum?
> 
> Or I'd guess this is power of 2 values?

All values that exist so far are indeed power of 2 values, but that's
not a strict requirement, there may be other values one day. I'll add
all possible values (1, 2 , 4 , 8) so far.
> 
> > +
> > +  media:
> > +    description:
> > +      The mediums, as defined in 802.3, that can be used on the port.
> > +    items:
> > +      enum:
> > +        - BaseT
> > +        - BaseK
> > +        - BaseS
> > +        - BaseC
> > +        - BaseL
> > +        - BaseD
> > +        - BaseE
> > +        - BaseF
> > +        - BaseV
> > +        - BaseMLD
> > +        - BaseX  

Heh I need to remove BaseX

> 
> This can be multiple values? But then how does one know what is actually 
> attached?

I don't see a scenario where we would put multiple values actually. I
need to update the code accordingly, but if we are in the case where we
need to specify in DT which medium we use, then that means we can only
use one.

Thanks you for reviewing,

Maxime