summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/net/sff,sfp.yaml
blob: 90611b598d2bdde658f754cd277fc4363499a2f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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:
    minimum: 1000
    default: 1000
    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.

  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>

    sfp1: sfp {
      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>;
    };

    ethernet {
      phy-names = "comphy";
      phys = <&cps_comphy5 0>;
      sfp = <&sfp1>;
    };

  - | # Serdes to PHY to SFP connection
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    sfp2: sfp {
      compatible = "sff,sfp";
      i2c-bus = <&sfp_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>;

      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 = <&sfp2>;
      };
    };

    ethernet {
      phy = <&phy>;
      phy-mode = "10gbase-kr";
    };