Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| 2 | %YAML 1.2 |
| 3 | --- |
| 4 | $id: http://devicetree.org/schemas/net/sff,sfp.yaml# |
| 5 | $schema: http://devicetree.org/meta-schemas/core.yaml# |
| 6 | |
| 7 | title: Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) |
| 8 | Transceiver |
| 9 | |
| 10 | maintainers: |
| 11 | - Russell King <linux@armlinux.org.uk> |
| 12 | |
| 13 | properties: |
| 14 | compatible: |
| 15 | enum: |
| 16 | - sff,sfp # for SFP modules |
| 17 | - sff,sff # for soldered down SFF modules |
| 18 | |
| 19 | i2c-bus: |
| 20 | $ref: /schemas/types.yaml#/definitions/phandle |
| 21 | description: |
| 22 | phandle of an I2C bus controller for the SFP two wire serial |
| 23 | |
| 24 | maximum-power-milliwatt: |
| 25 | minimum: 1000 |
| 26 | default: 1000 |
| 27 | description: |
| 28 | Maximum module power consumption Specifies the maximum power consumption |
| 29 | allowable by a module in the slot, in milli-Watts. Presently, modules can |
| 30 | be up to 1W, 1.5W or 2W. |
| 31 | |
| 32 | "mod-def0-gpios": |
| 33 | maxItems: 1 |
| 34 | description: |
| 35 | GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS) module |
| 36 | presence input gpio signal, active (module absent) high. Must not be |
| 37 | present for SFF modules |
| 38 | |
| 39 | "los-gpios": |
| 40 | maxItems: 1 |
| 41 | description: |
| 42 | GPIO phandle and a specifier of the Receiver Loss of Signal Indication |
| 43 | input gpio signal, active (signal lost) high |
| 44 | |
| 45 | "tx-fault-gpios": |
| 46 | maxItems: 1 |
| 47 | description: |
| 48 | GPIO phandle and a specifier of the Module Transmitter Fault input gpio |
| 49 | signal, active (fault condition) high |
| 50 | |
| 51 | "tx-disable-gpios": |
| 52 | maxItems: 1 |
| 53 | description: |
| 54 | GPIO phandle and a specifier of the Transmitter Disable output gpio |
| 55 | signal, active (Tx disable) high |
| 56 | |
| 57 | "rate-select0-gpios": |
| 58 | maxItems: 1 |
| 59 | description: |
| 60 | GPIO phandle and a specifier of the Rx Signaling Rate Select (AKA RS0) |
| 61 | output gpio signal, low - low Rx rate, high - high Rx rate Must not be |
| 62 | present for SFF modules |
| 63 | |
| 64 | "rate-select1-gpios": |
| 65 | maxItems: 1 |
| 66 | description: |
| 67 | GPIO phandle and a specifier of the Tx Signaling Rate Select (AKA RS1) |
| 68 | output gpio signal (SFP+ only), low - low Tx rate, high - high Tx rate. Must |
| 69 | not be present for SFF modules |
| 70 | |
| 71 | allOf: |
| 72 | - if: |
| 73 | properties: |
| 74 | compatible: |
| 75 | contains: |
| 76 | const: sff,sff |
| 77 | then: |
| 78 | properties: |
| 79 | mod-def0-gpios: false |
| 80 | rate-select0-gpios: false |
| 81 | rate-select1-gpios: false |
| 82 | |
| 83 | required: |
| 84 | - compatible |
| 85 | - i2c-bus |
| 86 | |
| 87 | additionalProperties: false |
| 88 | |
| 89 | examples: |
| 90 | - | # Direct serdes to SFP connection |
| 91 | #include <dt-bindings/gpio/gpio.h> |
| 92 | |
| 93 | sfp1: sfp { |
| 94 | compatible = "sff,sfp"; |
| 95 | i2c-bus = <&sfp_1g_i2c>; |
| 96 | los-gpios = <&cpm_gpio2 22 GPIO_ACTIVE_HIGH>; |
| 97 | mod-def0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>; |
| 98 | maximum-power-milliwatt = <1000>; |
| 99 | pinctrl-names = "default"; |
| 100 | pinctrl-0 = <&cpm_sfp_1g_pins &cps_sfp_1g_pins>; |
| 101 | tx-disable-gpios = <&cps_gpio1 24 GPIO_ACTIVE_HIGH>; |
| 102 | tx-fault-gpios = <&cpm_gpio2 19 GPIO_ACTIVE_HIGH>; |
| 103 | }; |
| 104 | |
| 105 | ethernet { |
| 106 | phy-names = "comphy"; |
| 107 | phys = <&cps_comphy5 0>; |
| 108 | sfp = <&sfp1>; |
| 109 | }; |
| 110 | |
| 111 | - | # Serdes to PHY to SFP connection |
| 112 | #include <dt-bindings/gpio/gpio.h> |
| 113 | #include <dt-bindings/interrupt-controller/arm-gic.h> |
| 114 | |
| 115 | sfp2: sfp { |
| 116 | compatible = "sff,sfp"; |
| 117 | i2c-bus = <&sfp_i2c>; |
| 118 | los-gpios = <&cps_gpio1 28 GPIO_ACTIVE_HIGH>; |
| 119 | mod-def0-gpios = <&cps_gpio1 27 GPIO_ACTIVE_LOW>; |
| 120 | pinctrl-names = "default"; |
| 121 | pinctrl-0 = <&cps_sfpp0_pins>; |
| 122 | tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>; |
Tom Rini | 93743d2 | 2024-04-01 09:08:13 -0400 | [diff] [blame] | 123 | tx-fault-gpios = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>; |
Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 124 | }; |
| 125 | |
| 126 | mdio { |
| 127 | #address-cells = <1>; |
| 128 | #size-cells = <0>; |
| 129 | |
| 130 | phy: ethernet-phy@0 { |
| 131 | compatible = "ethernet-phy-ieee802.3-c45"; |
| 132 | pinctrl-names = "default"; |
| 133 | pinctrl-0 = <&cpm_phy0_pins &cps_phy0_pins>; |
| 134 | reg = <0>; |
| 135 | interrupt = <&cpm_gpio2 18 IRQ_TYPE_EDGE_FALLING>; |
| 136 | sfp = <&sfp2>; |
| 137 | }; |
| 138 | }; |
| 139 | |
| 140 | ethernet { |
| 141 | phy = <&phy>; |
| 142 | phy-mode = "10gbase-kr"; |
| 143 | }; |