Message ID | 01ae7bc45d68322669d18a4feeaeef733ba888d7.1504441874.git.baruch@tkos.co.il |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | [v3,1/3] dt-bindings: add SFF vendor prefix | expand |
On Sun, Sep 03, 2017 at 03:31:13PM +0300, Baruch Siach wrote: > Add device-tree binding documentation SFP transceivers. Support for SFP > transceivers has been recently introduced (drivers/net/phy/sfp.c). > > Signed-off-by: Baruch Siach <baruch@tkos.co.il> > --- > v3: > Mention gpios phandle and specifier > Mention the polarity of each gpio > Fix example property names > > v2: > Rename -gpio properties to -gpios > Rename the rate-select-gpio property to rate-select0-gpios > Add the rate-select1-gpios property > Add examples > --- > Documentation/devicetree/bindings/net/sff,sfp.txt | 78 +++++++++++++++++++++++ > 1 file changed, 78 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt > > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt > new file mode 100644 > index 000000000000..b98ee5945265 > --- /dev/null > +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt > @@ -0,0 +1,78 @@ > +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) > +Transceiver > + > +Required properties: > + > +- compatible : must be "sff,sfp" > + > +Optional Properties: > + > +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial > + interface > + > +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA > + Mod_ABS) module presence input gpio signal, active (module absent) high > + > +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of > + Signal Indication input gpio signal, active (signal lost) high > + > +- tx-fault-gpios : GPIO phandle and a single specifier of the Module > + Transmitter Fault input gpio signal, active (fault condition) high > + > +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter > + Disable output gpio signal, active (Tx disable) high > + > +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling > + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx > + rate > + > +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling > + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, > + high: high Tx rate > + > +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>; > + moddef0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>; > + 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-mode = "sgmii"; > + phy-names = "comphy"; > + phys = <&cps_comphy 5 COMPHY_SGMII2>; I don't like this level of example - SGMII is Cisco SGMII which is not the same as 1000Base-X - the two are incompatible. Fibre SFP modules only work with 1000Base-X. The SFP/phylink takes care of informing the MAC which mode it should be in, and the MAC must configure itself appropriately in response to that, otherwise the module can't be supported.
Hi Russell, On Sun, Sep 03, 2017 at 09:46:35PM +0100, Russell King - ARM Linux wrote: > On Sun, Sep 03, 2017 at 03:31:13PM +0300, Baruch Siach wrote: > > Add device-tree binding documentation SFP transceivers. Support for SFP > > transceivers has been recently introduced (drivers/net/phy/sfp.c). > > > > Signed-off-by: Baruch Siach <baruch@tkos.co.il> > > --- > > v3: > > Mention gpios phandle and specifier > > Mention the polarity of each gpio > > Fix example property names > > > > v2: > > Rename -gpio properties to -gpios > > Rename the rate-select-gpio property to rate-select0-gpios > > Add the rate-select1-gpios property > > Add examples > > --- > > Documentation/devicetree/bindings/net/sff,sfp.txt | 78 +++++++++++++++++++++++ > > 1 file changed, 78 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt > > > > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt > > new file mode 100644 > > index 000000000000..b98ee5945265 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt > > @@ -0,0 +1,78 @@ > > +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) > > +Transceiver > > + > > +Required properties: > > + > > +- compatible : must be "sff,sfp" > > + > > +Optional Properties: > > + > > +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial > > + interface > > + > > +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA > > + Mod_ABS) module presence input gpio signal, active (module absent) high > > + > > +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of > > + Signal Indication input gpio signal, active (signal lost) high > > + > > +- tx-fault-gpios : GPIO phandle and a single specifier of the Module > > + Transmitter Fault input gpio signal, active (fault condition) high > > + > > +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter > > + Disable output gpio signal, active (Tx disable) high > > + > > +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling > > + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx > > + rate > > + > > +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling > > + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, > > + high: high Tx rate > > + > > +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>; > > + moddef0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>; > > + 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-mode = "sgmii"; > > + phy-names = "comphy"; > > + phys = <&cps_comphy 5 COMPHY_SGMII2>; > > I don't like this level of example - SGMII is Cisco SGMII which is not > the same as 1000Base-X - the two are incompatible. Fibre SFP modules > only work with 1000Base-X. > > The SFP/phylink takes care of informing the MAC which mode it should > be in, and the MAC must configure itself appropriately in response to > that, otherwise the module can't be supported. So, if I understand you correctly, the PHY mode should not be coded in the DT since the mode is run-time configurable, and depends on the SFP module. Is that correct? How about the following then: &cps_emac3 { phy-names = "comphy"; phys = <&cps_comphy 5>; sfp = <&sfp_eth3>; }; Thanks, baruch
Hello! On 9/3/2017 3:31 PM, Baruch Siach wrote: > Add device-tree binding documentation SFP transceivers. Support for SFP > transceivers has been recently introduced (drivers/net/phy/sfp.c). > > Signed-off-by: Baruch Siach <baruch@tkos.co.il> [...] > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt > new file mode 100644 > index 000000000000..b98ee5945265 > --- /dev/null > +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt > @@ -0,0 +1,78 @@ > +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) > +Transceiver > + > +Required properties: > + > +- compatible : must be "sff,sfp" > + > +Optional Properties: > + > +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial > + interface > + > +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA There's always a single specifier following a phandle, tho it may have different # of cells, no need to spell that out. > + Mod_ABS) module presence input gpio signal, active (module absent) high > + > +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of Same here. > + Signal Indication input gpio signal, active (signal lost) high > + > +- tx-fault-gpios : GPIO phandle and a single specifier of the Module And here. > + Transmitter Fault input gpio signal, active (fault condition) high > + > +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter And here. > + Disable output gpio signal, active (Tx disable) high > + > +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling Here too. > + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx > + rate > + > +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling Here ass well. > + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, > + high: high Tx rate > + [...] MBR, Sergei
Le 09/03/17 à 05:31, Baruch Siach a écrit : > Add device-tree binding documentation SFP transceivers. Support for SFP > transceivers has been recently introduced (drivers/net/phy/sfp.c). > > Signed-off-by: Baruch Siach <baruch@tkos.co.il> > --- > v3: > Mention gpios phandle and specifier > Mention the polarity of each gpio > Fix example property names > > v2: > Rename -gpio properties to -gpios > Rename the rate-select-gpio property to rate-select0-gpios > Add the rate-select1-gpios property > Add examples > --- > Documentation/devicetree/bindings/net/sff,sfp.txt | 78 +++++++++++++++++++++++ > 1 file changed, 78 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt > > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt > new file mode 100644 > index 000000000000..b98ee5945265 > --- /dev/null > +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt > @@ -0,0 +1,78 @@ > +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) > +Transceiver > + > +Required properties: > + > +- compatible : must be "sff,sfp" > + > +Optional Properties: > + > +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial > + interface > + > +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA > + Mod_ABS) module presence input gpio signal, active (module absent) high Sorry for nitpicking on this, why are not we naming this mod-def0-gpios which would be consistent with how other GPIOs are named? > + > +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of > + Signal Indication input gpio signal, active (signal lost) high > + > +- tx-fault-gpios : GPIO phandle and a single specifier of the Module > + Transmitter Fault input gpio signal, active (fault condition) high > + > +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter > + Disable output gpio signal, active (Tx disable) high > + > +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling > + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx > + rate > + > +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling > + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, > + high: high Tx rate > + > +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>; > + moddef0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>; > + 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-mode = "sgmii"; > + phy-names = "comphy"; > + phys = <&cps_comphy 5 COMPHY_SGMII2>; > + 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>; > + moddef0-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"; > +}; >
Hi Florian, On Mon, Sep 04, 2017 at 01:16:26PM -0700, Florian Fainelli wrote: > Le 09/03/17 à 05:31, Baruch Siach a écrit : [...] > > diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt > > new file mode 100644 > > index 000000000000..b98ee5945265 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt > > @@ -0,0 +1,78 @@ > > +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) > > +Transceiver > > + > > +Required properties: > > + > > +- compatible : must be "sff,sfp" > > + > > +Optional Properties: > > + > > +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial > > + interface > > + > > +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA > > + Mod_ABS) module presence input gpio signal, active (module absent) high > > Sorry for nitpicking on this, why are not we naming this mod-def0-gpios > which would be consistent with how other GPIOs are named? I'm fine with that as well. It only requires changing the implementation to match. > > + > > +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of > > + Signal Indication input gpio signal, active (signal lost) high > > + > > +- tx-fault-gpios : GPIO phandle and a single specifier of the Module > > + Transmitter Fault input gpio signal, active (fault condition) high > > + > > +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter > > + Disable output gpio signal, active (Tx disable) high > > + > > +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling > > + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx > > + rate > > + > > +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling > > + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, > > + high: high Tx rate baruch
diff --git a/Documentation/devicetree/bindings/net/sff,sfp.txt b/Documentation/devicetree/bindings/net/sff,sfp.txt new file mode 100644 index 000000000000..b98ee5945265 --- /dev/null +++ b/Documentation/devicetree/bindings/net/sff,sfp.txt @@ -0,0 +1,78 @@ +Small Form Factor (SFF) Committee Small Form-factor Pluggable (SFP) +Transceiver + +Required properties: + +- compatible : must be "sff,sfp" + +Optional Properties: + +- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial + interface + +- moddef0-gpios : GPIO phandle and a single specifier of the MOD-DEF0 (AKA + Mod_ABS) module presence input gpio signal, active (module absent) high + +- los-gpios : GPIO phandle and a single specifier of the Receiver Loss of + Signal Indication input gpio signal, active (signal lost) high + +- tx-fault-gpios : GPIO phandle and a single specifier of the Module + Transmitter Fault input gpio signal, active (fault condition) high + +- tx-disable-gpios : GPIO phandle and a single specifier of the Transmitter + Disable output gpio signal, active (Tx disable) high + +- rate-select0-gpios : GPIO phandle and a single specifier of the Rx Signaling + Rate Select (AKA RS0) output gpio signal, low: low Rx rate, high: high Rx + rate + +- rate-select1-gpios : GPIO phandle and a single specifier of the Tx Signaling + Rate Select (AKA RS1) output gpio signal (SFP+ only), low: low Tx rate, + high: high Tx rate + +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>; + moddef0-gpios = <&cpm_gpio2 21 GPIO_ACTIVE_LOW>; + 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-mode = "sgmii"; + phy-names = "comphy"; + phys = <&cps_comphy 5 COMPHY_SGMII2>; + 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>; + moddef0-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"; +};
Add device-tree binding documentation SFP transceivers. Support for SFP transceivers has been recently introduced (drivers/net/phy/sfp.c). Signed-off-by: Baruch Siach <baruch@tkos.co.il> --- v3: Mention gpios phandle and specifier Mention the polarity of each gpio Fix example property names v2: Rename -gpio properties to -gpios Rename the rate-select-gpio property to rate-select0-gpios Add the rate-select1-gpios property Add examples --- Documentation/devicetree/bindings/net/sff,sfp.txt | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/sff,sfp.txt