diff mbox series

[v2,net-next,1/4] dt-bindings: net: convert sff,sfp to dtschema

Message ID 20220704134604.13626-2-ioana.ciornei@nxp.com
State Changes Requested, archived
Headers show
Series dt-bindings: net: convert sff,sfp to dtschema | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 2 warnings, 150 lines checked
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Ioana Ciornei July 4, 2022, 1:46 p.m. UTC
Convert the sff,sfp.txt bindings to the DT schema format.
Also add the new path to the list of maintained files.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
Changes in v2:
 - used the -gpios suffix
 - restricted the use of some gpios if the compatible is sff,sff

 .../devicetree/bindings/net/sff,sfp.txt       |  85 -----------
 .../devicetree/bindings/net/sff,sfp.yaml      | 143 ++++++++++++++++++
 MAINTAINERS                                   |   1 +
 3 files changed, 144 insertions(+), 85 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt
 create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.yaml

Comments

Rob Herring July 5, 2022, 9:29 p.m. UTC | #1
On Mon, Jul 04, 2022 at 04:46:01PM +0300, Ioana Ciornei wrote:
> Convert the sff,sfp.txt bindings to the DT schema format.
> Also add the new path to the list of maintained files.
> 
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> ---
> Changes in v2:
>  - used the -gpios suffix
>  - restricted the use of some gpios if the compatible is sff,sff
> 
>  .../devicetree/bindings/net/sff,sfp.txt       |  85 -----------
>  .../devicetree/bindings/net/sff,sfp.yaml      | 143 ++++++++++++++++++
>  MAINTAINERS                                   |   1 +
>  3 files changed, 144 insertions(+), 85 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt
>  create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.yaml
> 
> diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt
> deleted file mode 100644
> index 832139919f20..000000000000
> --- a/Documentation/devicetree/bindings/net/sff,sfp.txt
> +++ /dev/null
> @@ -1,85 +0,0 @@
> -Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP)
> -Transceiver
> -
> -Required properties:
> -
> -- compatible : must be one of
> -  "sff,sfp" for SFP modules
> -  "sff,sff" for soldered down SFF modules
> -
> -- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial
> -  interface
> -
> -Optional Properties:
> -
> -- mod-def0-gpios : GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS)
> -  module presence input gpio signal, active (module absent) high. Must
> -  not be present for SFF modules
> -
> -- los-gpios : GPIO phandle and a specifier of the Receiver Loss of Signal
> -  Indication input gpio signal, active (signal lost) high
> -
> -- tx-fault-gpios : GPIO phandle and a specifier of the Module Transmitter
> -  Fault input gpio signal, active (fault condition) high
> -
> -- tx-disable-gpios : GPIO phandle and a specifier of the Transmitter Disable
> -  output gpio signal, active (Tx disable) high
> -
> -- rate-select0-gpios : GPIO phandle and a specifier of the Rx Signaling Rate
> -  Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx rate
> -  Must not be present for SFF modules
> -
> -- rate-select1-gpios : GPIO phandle and a specifier of the Tx Signaling Rate
> -  Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, high:
> -  high Tx rate. Must not be present for SFF modules
> -
> -- maximum-power-milliwatt : Maximum module power consumption
> -  Specifies the maximum power consumption allowable by a module in the
> -  slot, in milli-Watts.  Presently, modules can be up to 1W, 1.5W or 2W.
> -
> -Example #1: Direct serdes to SFP connection
> -
> -sfp_eth3: sfp-eth3 {
> -	compatible = "sff,sfp";
> -	i2c-bus = <&sfp_1g_i2c>;
> -	los-gpios = <&cpm_gpio2 22 GPIO_ACTIVE_HIGH>;
> -	mod-def0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>;
> -	maximum-power-milliwatt = <1000>;
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&cpm_sfp_1g_pins &cps_sfp_1g_pins>;
> -	tx-disable-gpios = <&cps_gpio1 24 GPIO_ACTIVE_HIGH>;
> -	tx-fault-gpios = <&cpm_gpio2 19 GPIO_ACTIVE_HIGH>;
> -};
> -
> -&cps_emac3 {
> -	phy-names = "comphy";
> -	phys = <&cps_comphy5 0>;
> -	sfp = <&sfp_eth3>;
> -};
> -
> -Example #2: Serdes to PHY to SFP connection
> -
> -sfp_eth0: sfp-eth0 {
> -	compatible = "sff,sfp";
> -	i2c-bus = <&sfpp0_i2c>;
> -	los-gpios = <&cps_gpio1 28 GPIO_ACTIVE_HIGH>;
> -	mod-def0-gpios = <&cps_gpio1 27 GPIO_ACTIVE_LOW>;
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&cps_sfpp0_pins>;
> -	tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>;
> -	tx-fault-gpios  = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>;
> -};
> -
> -p0_phy: ethernet-phy@0 {
> -	compatible = "ethernet-phy-ieee802.3-c45";
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&cpm_phy0_pins &cps_phy0_pins>;
> -	reg = <0>;
> -	interrupt = <&cpm_gpio2 18 IRQ_TYPE_EDGE_FALLING>;
> -	sfp = <&sfp_eth0>;
> -};
> -
> -&cpm_eth0 {
> -	phy = <&p0_phy>;
> -	phy-mode = "10gbase-kr";
> -};
> diff --git a/Documentation/devicetree/bindings/net/sff,sfp.yaml b/Documentation/devicetree/bindings/net/sff,sfp.yaml
> new file mode 100644
> index 000000000000..86f3ed2546d9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/sff,sfp.yaml
> @@ -0,0 +1,143 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/net/sff,sfp.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP)
> +  Transceiver
> +
> +maintainers:
> +  - Russell King <linux@armlinux.org.uk>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - sff,sfp  # for SFP modules
> +      - sff,sff  # for soldered down SFF modules
> +
> +  i2c-bus:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description:
> +      phandle of an I2C bus controller for the SFP two wire serial
> +
> +  maximum-power-milliwatt:
> +    maxItems: 1
> +    description:
> +      Maximum module power consumption Specifies the maximum power consumption
> +      allowable by a module in the slot, in milli-Watts. Presently, modules can
> +      be up to 1W, 1.5W or 2W.

       enum: [ 1000, 1500, 2000 ]

Or is it not just those values? Maybe 'maximum: 2000' instead.

> +
> +patternProperties:
> +  "mod-def0-gpios":

These aren't patterns. Move to 'properties'.

> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS) module
> +      presence input gpio signal, active (module absent) high. Must not be
> +      present for SFF modules
> +
> +  "los-gpios":
> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the Receiver Loss of Signal Indication
> +      input gpio signal, active (signal lost) high
> +
> +  "tx-fault-gpios":
> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the Module Transmitter Fault input gpio
> +      signal, active (fault condition) high
> +
> +  "tx-disable-gpios":
> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the Transmitter Disable output gpio
> +      signal, active (Tx disable) high
> +
> +  "rate-select0-gpios":
> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the Rx Signaling Rate Select (AKA RS0)
> +      output gpio signal, low - low Rx rate, high - high Rx rate Must not be
> +      present for SFF modules
> +
> +  "rate-select1-gpios":
> +    maxItems: 1
> +    description:
> +      GPIO phandle and a specifier of the Tx Signaling Rate Select (AKA RS1)
> +      output gpio signal (SFP+ only), low - low Tx rate, high - high Tx rate. Must
> +      not be present for SFF modules
> +
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: sff,sff
> +    then:
> +      properties:
> +        mod-def0-gpios: false
> +        rate-select0-gpios: false
> +        rate-select1-gpios: false
> +
> +required:
> +  - compatible
> +  - i2c-bus
> +
> +additionalProperties: false
> +
> +examples:
> +  - | # Direct serdes to SFP connection
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    sfp_eth3: sfp-eth3 {
> +      compatible = "sff,sfp";
> +      i2c-bus = <&sfp_1g_i2c>;
> +      los-gpios = <&cpm_gpio2 22 GPIO_ACTIVE_HIGH>;
> +      mod-def0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>;
> +      maximum-power-milliwatt = <1000>;
> +      pinctrl-names = "default";
> +      pinctrl-0 = <&cpm_sfp_1g_pins &cps_sfp_1g_pins>;
> +      tx-disable-gpios = <&cps_gpio1 24 GPIO_ACTIVE_HIGH>;
> +      tx-fault-gpios = <&cpm_gpio2 19 GPIO_ACTIVE_HIGH>;
> +    };
> +
> +    cps_emac3 {
> +      phy-names = "comphy";
> +      phys = <&cps_comphy5 0>;
> +      sfp = <&sfp_eth3>;
> +    };
> +
> +  - | # Serdes to PHY to SFP connection
> +    #include <dt-bindings/gpio/gpio.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +    sfp_eth0: sfp-eth0 {
> +      compatible = "sff,sfp";
> +      i2c-bus = <&sfpp0_i2c>;
> +      los-gpios = <&cps_gpio1 28 GPIO_ACTIVE_HIGH>;
> +      mod-def0-gpios = <&cps_gpio1 27 GPIO_ACTIVE_LOW>;
> +      pinctrl-names = "default";
> +      pinctrl-0 = <&cps_sfpp0_pins>;
> +      tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>;
> +      tx-fault-gpios  = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>;
> +    };
> +
> +    mdio {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      p0_phy: ethernet-phy@0 {
> +        compatible = "ethernet-phy-ieee802.3-c45";
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&cpm_phy0_pins &cps_phy0_pins>;
> +        reg = <0>;
> +        interrupt = <&cpm_gpio2 18 IRQ_TYPE_EDGE_FALLING>;
> +        sfp = <&sfp_eth0>;
> +      };
> +    };
> +
> +    cpm_eth0 {
> +      phy = <&p0_phy>;
> +      phy-mode = "10gbase-kr";
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 28108e4fdb8f..8677878603fe 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18110,6 +18110,7 @@ SFF/SFP/SFP+ MODULE SUPPORT
>  M:	Russell King <linux@armlinux.org.uk>
>  L:	netdev@vger.kernel.org
>  S:	Maintained
> +F:	Documentation/devicetree/bindings/net/sff,sfp.yaml
>  F:	drivers/net/phy/phylink.c
>  F:	drivers/net/phy/sfp*
>  F:	include/linux/mdio/mdio-i2c.h
> -- 
> 2.17.1
> 
>
Russell King (Oracle) July 5, 2022, 9:34 p.m. UTC | #2
On Tue, Jul 05, 2022 at 03:29:03PM -0600, Rob Herring wrote:
> On Mon, Jul 04, 2022 at 04:46:01PM +0300, Ioana Ciornei wrote:
> > +  maximum-power-milliwatt:
> > +    maxItems: 1
> > +    description:
> > +      Maximum module power consumption Specifies the maximum power consumption
> > +      allowable by a module in the slot, in milli-Watts. Presently, modules can
> > +      be up to 1W, 1.5W or 2W.
> 
>        enum: [ 1000, 1500, 2000 ]
> 
> Or is it not just those values? Maybe 'maximum: 2000' instead.

There is no enforcing of the value, we just read the value from
firmware and use it as a limit for the module (and the module can
specify powers of 1.5W or 2W in its EEPROM, otherwise it defaults
to 1W. Future standards may allow higher power consumptions.
Ioana Ciornei July 7, 2022, 8:52 a.m. UTC | #3
On Tue, Jul 05, 2022 at 03:29:03PM -0600, Rob Herring wrote:
> On Mon, Jul 04, 2022 at 04:46:01PM +0300, Ioana Ciornei wrote:
> > Convert the sff,sfp.txt bindings to the DT schema format.
> > Also add the new path to the list of maintained files.
> > 
> > Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> > ---
> > Changes in v2:
> >  - used the -gpios suffix
> >  - restricted the use of some gpios if the compatible is sff,sff
> > 
> >  .../devicetree/bindings/net/sff,sfp.txt       |  85 -----------
> >  .../devicetree/bindings/net/sff,sfp.yaml      | 143 ++++++++++++++++++
> >  MAINTAINERS                                   |   1 +
> >  3 files changed, 144 insertions(+), 85 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt
> >  create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt
> > deleted file mode 100644
> > index 832139919f20..000000000000
> > --- a/Documentation/devicetree/bindings/net/sff,sfp.txt
> > +++ /dev/null
> > @@ -1,85 +0,0 @@
> > -Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP)
> > -Transceiver

(...)

> > +  maximum-power-milliwatt:
> > +    maxItems: 1
> > +    description:
> > +      Maximum module power consumption Specifies the maximum power consumption
> > +      allowable by a module in the slot, in milli-Watts. Presently, modules can
> > +      be up to 1W, 1.5W or 2W.
> 
>        enum: [ 1000, 1500, 2000 ]
> 
> Or is it not just those values? Maybe 'maximum: 2000' instead.

Keeping in mind Russell's comment, I think I will leave this just as it
is since there is no enforcing made on the value.

> 
> > +
> > +patternProperties:
> > +  "mod-def0-gpios":
> 
> These aren't patterns. Move to 'properties'.

Yes, I forgot to move them when I removed the '(s)?'

Thanks!

Ioana
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt
deleted file mode 100644
index 832139919f20..000000000000
--- a/Documentation/devicetree/bindings/net/sff,sfp.txt
+++ /dev/null
@@ -1,85 +0,0 @@ 
-Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP)
-Transceiver
-
-Required properties:
-
-- compatible : must be one of
-  "sff,sfp" for SFP modules
-  "sff,sff" for soldered down SFF modules
-
-- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial
-  interface
-
-Optional Properties:
-
-- mod-def0-gpios : GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS)
-  module presence input gpio signal, active (module absent) high. Must
-  not be present for SFF modules
-
-- los-gpios : GPIO phandle and a specifier of the Receiver Loss of Signal
-  Indication input gpio signal, active (signal lost) high
-
-- tx-fault-gpios : GPIO phandle and a specifier of the Module Transmitter
-  Fault input gpio signal, active (fault condition) high
-
-- tx-disable-gpios : GPIO phandle and a specifier of the Transmitter Disable
-  output gpio signal, active (Tx disable) high
-
-- rate-select0-gpios : GPIO phandle and a specifier of the Rx Signaling Rate
-  Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx rate
-  Must not be present for SFF modules
-
-- rate-select1-gpios : GPIO phandle and a specifier of the Tx Signaling Rate
-  Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, high:
-  high Tx rate. Must not be present for SFF modules
-
-- maximum-power-milliwatt : Maximum module power consumption
-  Specifies the maximum power consumption allowable by a module in the
-  slot, in milli-Watts.  Presently, modules can be up to 1W, 1.5W or 2W.
-
-Example #1: Direct serdes to SFP connection
-
-sfp_eth3: sfp-eth3 {
-	compatible = "sff,sfp";
-	i2c-bus = <&sfp_1g_i2c>;
-	los-gpios = <&cpm_gpio2 22 GPIO_ACTIVE_HIGH>;
-	mod-def0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>;
-	maximum-power-milliwatt = <1000>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&cpm_sfp_1g_pins &cps_sfp_1g_pins>;
-	tx-disable-gpios = <&cps_gpio1 24 GPIO_ACTIVE_HIGH>;
-	tx-fault-gpios = <&cpm_gpio2 19 GPIO_ACTIVE_HIGH>;
-};
-
-&cps_emac3 {
-	phy-names = "comphy";
-	phys = <&cps_comphy5 0>;
-	sfp = <&sfp_eth3>;
-};
-
-Example #2: Serdes to PHY to SFP connection
-
-sfp_eth0: sfp-eth0 {
-	compatible = "sff,sfp";
-	i2c-bus = <&sfpp0_i2c>;
-	los-gpios = <&cps_gpio1 28 GPIO_ACTIVE_HIGH>;
-	mod-def0-gpios = <&cps_gpio1 27 GPIO_ACTIVE_LOW>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&cps_sfpp0_pins>;
-	tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>;
-	tx-fault-gpios  = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>;
-};
-
-p0_phy: ethernet-phy@0 {
-	compatible = "ethernet-phy-ieee802.3-c45";
-	pinctrl-names = "default";
-	pinctrl-0 = <&cpm_phy0_pins &cps_phy0_pins>;
-	reg = <0>;
-	interrupt = <&cpm_gpio2 18 IRQ_TYPE_EDGE_FALLING>;
-	sfp = <&sfp_eth0>;
-};
-
-&cpm_eth0 {
-	phy = <&p0_phy>;
-	phy-mode = "10gbase-kr";
-};
diff --git a/Documentation/devicetree/bindings/net/sff,sfp.yaml b/Documentation/devicetree/bindings/net/sff,sfp.yaml
new file mode 100644
index 000000000000..86f3ed2546d9
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/sff,sfp.yaml
@@ -0,0 +1,143 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/net/sff,sfp.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP)
+  Transceiver
+
+maintainers:
+  - Russell King <linux@armlinux.org.uk>
+
+properties:
+  compatible:
+    enum:
+      - sff,sfp  # for SFP modules
+      - sff,sff  # for soldered down SFF modules
+
+  i2c-bus:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle of an I2C bus controller for the SFP two wire serial
+
+  maximum-power-milliwatt:
+    maxItems: 1
+    description:
+      Maximum module power consumption Specifies the maximum power consumption
+      allowable by a module in the slot, in milli-Watts. Presently, modules can
+      be up to 1W, 1.5W or 2W.
+
+patternProperties:
+  "mod-def0-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS) module
+      presence input gpio signal, active (module absent) high. Must not be
+      present for SFF modules
+
+  "los-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the Receiver Loss of Signal Indication
+      input gpio signal, active (signal lost) high
+
+  "tx-fault-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the Module Transmitter Fault input gpio
+      signal, active (fault condition) high
+
+  "tx-disable-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the Transmitter Disable output gpio
+      signal, active (Tx disable) high
+
+  "rate-select0-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the Rx Signaling Rate Select (AKA RS0)
+      output gpio signal, low - low Rx rate, high - high Rx rate Must not be
+      present for SFF modules
+
+  "rate-select1-gpios":
+    maxItems: 1
+    description:
+      GPIO phandle and a specifier of the Tx Signaling Rate Select (AKA RS1)
+      output gpio signal (SFP+ only), low - low Tx rate, high - high Tx rate. Must
+      not be present for SFF modules
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: sff,sff
+    then:
+      properties:
+        mod-def0-gpios: false
+        rate-select0-gpios: false
+        rate-select1-gpios: false
+
+required:
+  - compatible
+  - i2c-bus
+
+additionalProperties: false
+
+examples:
+  - | # Direct serdes to SFP connection
+    #include <dt-bindings/gpio/gpio.h>
+
+    sfp_eth3: sfp-eth3 {
+      compatible = "sff,sfp";
+      i2c-bus = <&sfp_1g_i2c>;
+      los-gpios = <&cpm_gpio2 22 GPIO_ACTIVE_HIGH>;
+      mod-def0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>;
+      maximum-power-milliwatt = <1000>;
+      pinctrl-names = "default";
+      pinctrl-0 = <&cpm_sfp_1g_pins &cps_sfp_1g_pins>;
+      tx-disable-gpios = <&cps_gpio1 24 GPIO_ACTIVE_HIGH>;
+      tx-fault-gpios = <&cpm_gpio2 19 GPIO_ACTIVE_HIGH>;
+    };
+
+    cps_emac3 {
+      phy-names = "comphy";
+      phys = <&cps_comphy5 0>;
+      sfp = <&sfp_eth3>;
+    };
+
+  - | # Serdes to PHY to SFP connection
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    sfp_eth0: sfp-eth0 {
+      compatible = "sff,sfp";
+      i2c-bus = <&sfpp0_i2c>;
+      los-gpios = <&cps_gpio1 28 GPIO_ACTIVE_HIGH>;
+      mod-def0-gpios = <&cps_gpio1 27 GPIO_ACTIVE_LOW>;
+      pinctrl-names = "default";
+      pinctrl-0 = <&cps_sfpp0_pins>;
+      tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>;
+      tx-fault-gpios  = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>;
+    };
+
+    mdio {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      p0_phy: ethernet-phy@0 {
+        compatible = "ethernet-phy-ieee802.3-c45";
+        pinctrl-names = "default";
+        pinctrl-0 = <&cpm_phy0_pins &cps_phy0_pins>;
+        reg = <0>;
+        interrupt = <&cpm_gpio2 18 IRQ_TYPE_EDGE_FALLING>;
+        sfp = <&sfp_eth0>;
+      };
+    };
+
+    cpm_eth0 {
+      phy = <&p0_phy>;
+      phy-mode = "10gbase-kr";
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 28108e4fdb8f..8677878603fe 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -18110,6 +18110,7 @@  SFF/SFP/SFP+ MODULE SUPPORT
 M:	Russell King <linux@armlinux.org.uk>
 L:	netdev@vger.kernel.org
 S:	Maintained
+F:	Documentation/devicetree/bindings/net/sff,sfp.yaml
 F:	drivers/net/phy/phylink.c
 F:	drivers/net/phy/sfp*
 F:	include/linux/mdio/mdio-i2c.h