diff options
author | Lendacky, Thomas <Thomas.Lendacky@amd.com> | 2016-11-10 17:10:58 -0600 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-13 00:56:26 -0500 |
commit | abf0a1c2b26ad964d19b143ce46735e1b0667f29 (patch) | |
tree | 6d31eda92b3ab7d9de635072c1b9d544a227bab1 /drivers/net/ethernet/amd/xgbe/xgbe.h | |
parent | 372788f964c95a6fa0f677c43d6153c27896ef42 (diff) | |
download | op-kernel-dev-abf0a1c2b26ad964d19b143ce46735e1b0667f29.zip op-kernel-dev-abf0a1c2b26ad964d19b143ce46735e1b0667f29.tar.gz |
amd-xgbe: Add support for SFP+ modules
Add support for recognizing and using SFP+ modules directly. This includes
using the I2C support to read and interpret the information returned from
an SFP+ module and configuring things properly.
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/amd/xgbe/xgbe.h')
-rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 586154f..a691f84 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -530,6 +530,10 @@ enum xgbe_mode { XGBE_MODE_KX_1000 = 0, XGBE_MODE_KX_2500, XGBE_MODE_KR, + XGBE_MODE_X, + XGBE_MODE_SGMII_100, + XGBE_MODE_SGMII_1000, + XGBE_MODE_SFI, XGBE_MODE_UNKNOWN, }; @@ -538,6 +542,12 @@ enum xgbe_speedset { XGBE_SPEEDSET_2500_10000, }; +enum xgbe_mdio_mode { + XGBE_MDIO_MODE_NONE = 0, + XGBE_MDIO_MODE_CL22, + XGBE_MDIO_MODE_CL45, +}; + struct xgbe_phy { u32 supported; u32 advertising; @@ -764,7 +774,7 @@ struct xgbe_phy_impl_if { void (*stop)(struct xgbe_prv_data *); /* Return the link status */ - int (*link_status)(struct xgbe_prv_data *); + int (*link_status)(struct xgbe_prv_data *, int *); /* Indicate if a particular speed is valid */ bool (*valid_speed)(struct xgbe_prv_data *, int); @@ -783,6 +793,9 @@ struct xgbe_phy_impl_if { /* Retrieve current auto-negotiation mode */ enum xgbe_an_mode (*an_mode)(struct xgbe_prv_data *); + /* Configure auto-negotiation settings */ + int (*an_config)(struct xgbe_prv_data *); + /* Process results of auto-negotiation */ enum xgbe_mode (*an_outcome)(struct xgbe_prv_data *); |