Commit 884b6b8a authored by David S. Miller's avatar David S. Miller

Merge branch 'Add-5gbase-r-PHY-interface-mode'

Marek Behún says:

====================-
Add 5gbase-r PHY interface mode

there is still some testing needed for Amethyst patches, so I have
split the part adding support for 5gbase-r interface mode and am sending
it alone.

The first two patches are already reviewed.

Changes since last patches (Amethyst v16):
- added phylink 5gbase-r handler
- added SFP support for 5gbase-r mode
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 32aeba1f cfb971de
...@@ -89,6 +89,7 @@ properties: ...@@ -89,6 +89,7 @@ properties:
- trgmii - trgmii
- 1000base-x - 1000base-x
- 2500base-x - 2500base-x
- 5gbase-r
- rxaui - rxaui
- xaui - xaui
......
...@@ -267,6 +267,12 @@ Some of the interface modes are described below: ...@@ -267,6 +267,12 @@ Some of the interface modes are described below:
duplex, pause or other settings. This is dependent on the MAC and/or duplex, pause or other settings. This is dependent on the MAC and/or
PHY behaviour. PHY behaviour.
``PHY_INTERFACE_MODE_5GBASER``
This is the IEEE 802.3 Clause 129 defined 5GBASE-R protocol. It is
identical to the 10GBASE-R protocol defined in Clause 49, with the
exception that it operates at half the frequency. Please refer to the
IEEE standard for the definition.
``PHY_INTERFACE_MODE_10GBASER`` ``PHY_INTERFACE_MODE_10GBASER``
This is the IEEE 802.3 Clause 49 defined 10GBASE-R protocol used with This is the IEEE 802.3 Clause 49 defined 10GBASE-R protocol used with
various different mediums. Please refer to the IEEE standard for a various different mediums. Please refer to the IEEE standard for a
......
...@@ -306,6 +306,10 @@ static int phylink_parse_mode(struct phylink *pl, struct fwnode_handle *fwnode) ...@@ -306,6 +306,10 @@ static int phylink_parse_mode(struct phylink *pl, struct fwnode_handle *fwnode)
phylink_set(pl->supported, 2500baseX_Full); phylink_set(pl->supported, 2500baseX_Full);
break; break;
case PHY_INTERFACE_MODE_5GBASER:
phylink_set(pl->supported, 5000baseT_Full);
break;
case PHY_INTERFACE_MODE_USXGMII: case PHY_INTERFACE_MODE_USXGMII:
case PHY_INTERFACE_MODE_10GKR: case PHY_INTERFACE_MODE_10GKR:
case PHY_INTERFACE_MODE_10GBASER: case PHY_INTERFACE_MODE_10GBASER:
......
...@@ -400,6 +400,9 @@ phy_interface_t sfp_select_interface(struct sfp_bus *bus, ...@@ -400,6 +400,9 @@ phy_interface_t sfp_select_interface(struct sfp_bus *bus,
phylink_test(link_modes, 10000baseT_Full)) phylink_test(link_modes, 10000baseT_Full))
return PHY_INTERFACE_MODE_10GBASER; return PHY_INTERFACE_MODE_10GBASER;
if (phylink_test(link_modes, 5000baseT_Full))
return PHY_INTERFACE_MODE_5GBASER;
if (phylink_test(link_modes, 2500baseX_Full)) if (phylink_test(link_modes, 2500baseX_Full))
return PHY_INTERFACE_MODE_2500BASEX; return PHY_INTERFACE_MODE_2500BASEX;
......
...@@ -107,6 +107,7 @@ extern const int phy_10gbit_features_array[1]; ...@@ -107,6 +107,7 @@ extern const int phy_10gbit_features_array[1];
* @PHY_INTERFACE_MODE_100BASEX: 100 BaseX * @PHY_INTERFACE_MODE_100BASEX: 100 BaseX
* @PHY_INTERFACE_MODE_1000BASEX: 1000 BaseX * @PHY_INTERFACE_MODE_1000BASEX: 1000 BaseX
* @PHY_INTERFACE_MODE_2500BASEX: 2500 BaseX * @PHY_INTERFACE_MODE_2500BASEX: 2500 BaseX
* @PHY_INTERFACE_MODE_5GBASER: 5G BaseR
* @PHY_INTERFACE_MODE_RXAUI: Reduced XAUI * @PHY_INTERFACE_MODE_RXAUI: Reduced XAUI
* @PHY_INTERFACE_MODE_XAUI: 10 Gigabit Attachment Unit Interface * @PHY_INTERFACE_MODE_XAUI: 10 Gigabit Attachment Unit Interface
* @PHY_INTERFACE_MODE_10GBASER: 10G BaseR * @PHY_INTERFACE_MODE_10GBASER: 10G BaseR
...@@ -139,6 +140,7 @@ typedef enum { ...@@ -139,6 +140,7 @@ typedef enum {
PHY_INTERFACE_MODE_100BASEX, PHY_INTERFACE_MODE_100BASEX,
PHY_INTERFACE_MODE_1000BASEX, PHY_INTERFACE_MODE_1000BASEX,
PHY_INTERFACE_MODE_2500BASEX, PHY_INTERFACE_MODE_2500BASEX,
PHY_INTERFACE_MODE_5GBASER,
PHY_INTERFACE_MODE_RXAUI, PHY_INTERFACE_MODE_RXAUI,
PHY_INTERFACE_MODE_XAUI, PHY_INTERFACE_MODE_XAUI,
/* 10GBASE-R, XFI, SFI - single lane 10G Serdes */ /* 10GBASE-R, XFI, SFI - single lane 10G Serdes */
...@@ -209,6 +211,8 @@ static inline const char *phy_modes(phy_interface_t interface) ...@@ -209,6 +211,8 @@ static inline const char *phy_modes(phy_interface_t interface)
return "1000base-x"; return "1000base-x";
case PHY_INTERFACE_MODE_2500BASEX: case PHY_INTERFACE_MODE_2500BASEX:
return "2500base-x"; return "2500base-x";
case PHY_INTERFACE_MODE_5GBASER:
return "5gbase-r";
case PHY_INTERFACE_MODE_RXAUI: case PHY_INTERFACE_MODE_RXAUI:
return "rxaui"; return "rxaui";
case PHY_INTERFACE_MODE_XAUI: case PHY_INTERFACE_MODE_XAUI:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment