mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2026-01-27 12:35:36 +01:00
net: sdk_dpaa: use phylink_interface_max_speed() instead of local phy2speed[]
We can piggyback on phylink's phylink_interface_max_speed() which is better maintained than our local array - for example we will need this also for PHY_INTERFACE_MODE_XGMII. We don't really care about making the MAC integration on the SDK driver any better than it currently is. We just don't want to bring in the phylink build-time dependency for now, so we move phylink_interface_max_speed() as a static inline function in phylink's header, rather than an exported symbol. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
This commit is contained in:
parent
c5b4b5407b
commit
2f07953055
|
|
@ -47,6 +47,7 @@
|
|||
#include <linux/phy_fixed.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/phylink.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "lnxwrp_fm_ext.h"
|
||||
|
|
@ -67,23 +68,6 @@
|
|||
| SUPPORTED_MII \
|
||||
| SUPPORTED_Backplane)
|
||||
|
||||
static const uint16_t phy2speed[] = {
|
||||
[PHY_INTERFACE_MODE_MII] = SPEED_100,
|
||||
[PHY_INTERFACE_MODE_GMII] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_SGMII] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_QSGMII] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_TBI] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_RMII] = SPEED_100,
|
||||
[PHY_INTERFACE_MODE_RGMII] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_RGMII_ID] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_RGMII_RXID] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_RGMII_TXID] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_RTBI] = SPEED_1000,
|
||||
[PHY_INTERFACE_MODE_XGMII] = SPEED_10000,
|
||||
[PHY_INTERFACE_MODE_2500BASEX] = SPEED_2500,
|
||||
[PHY_INTERFACE_MODE_10GKR] = SPEED_10000,
|
||||
};
|
||||
|
||||
static struct mac_device * __cold
|
||||
alloc_macdev(struct device *dev, size_t sizeof_priv,
|
||||
void (*setup)(struct mac_device *mac_dev))
|
||||
|
|
|
|||
|
|
@ -254,80 +254,6 @@ static unsigned int phylink_interface_signal_rate(phy_interface_t interface)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* phylink_interface_max_speed() - get the maximum speed of a phy interface
|
||||
* @interface: phy interface mode defined by &typedef phy_interface_t
|
||||
*
|
||||
* Determine the maximum speed of a phy interface. This is intended to help
|
||||
* determine the correct speed to pass to the MAC when the phy is performing
|
||||
* rate matching.
|
||||
*
|
||||
* Return: The maximum speed of @interface
|
||||
*/
|
||||
static int phylink_interface_max_speed(phy_interface_t interface)
|
||||
{
|
||||
switch (interface) {
|
||||
case PHY_INTERFACE_MODE_100BASEX:
|
||||
case PHY_INTERFACE_MODE_REVRMII:
|
||||
case PHY_INTERFACE_MODE_RMII:
|
||||
case PHY_INTERFACE_MODE_SMII:
|
||||
case PHY_INTERFACE_MODE_REVMII:
|
||||
case PHY_INTERFACE_MODE_MII:
|
||||
return SPEED_100;
|
||||
|
||||
case PHY_INTERFACE_MODE_TBI:
|
||||
case PHY_INTERFACE_MODE_MOCA:
|
||||
case PHY_INTERFACE_MODE_RTBI:
|
||||
case PHY_INTERFACE_MODE_1000BASEX:
|
||||
case PHY_INTERFACE_MODE_1000BASEKX:
|
||||
case PHY_INTERFACE_MODE_TRGMII:
|
||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||
case PHY_INTERFACE_MODE_RGMII:
|
||||
case PHY_INTERFACE_MODE_PSGMII:
|
||||
case PHY_INTERFACE_MODE_QSGMII:
|
||||
case PHY_INTERFACE_MODE_QUSGMII:
|
||||
case PHY_INTERFACE_MODE_SGMII:
|
||||
case PHY_INTERFACE_MODE_GMII:
|
||||
return SPEED_1000;
|
||||
|
||||
case PHY_INTERFACE_MODE_2500BASEX:
|
||||
case PHY_INTERFACE_MODE_2500SGMII:
|
||||
case PHY_INTERFACE_MODE_10G_QXGMII:
|
||||
return SPEED_2500;
|
||||
|
||||
case PHY_INTERFACE_MODE_5GBASER:
|
||||
return SPEED_5000;
|
||||
|
||||
case PHY_INTERFACE_MODE_XGMII:
|
||||
case PHY_INTERFACE_MODE_RXAUI:
|
||||
case PHY_INTERFACE_MODE_XAUI:
|
||||
case PHY_INTERFACE_MODE_10GBASER:
|
||||
case PHY_INTERFACE_MODE_10GKR:
|
||||
case PHY_INTERFACE_MODE_USXGMII:
|
||||
return SPEED_10000;
|
||||
|
||||
case PHY_INTERFACE_MODE_25GBASER:
|
||||
case PHY_INTERFACE_MODE_25GKR:
|
||||
return SPEED_25000;
|
||||
|
||||
case PHY_INTERFACE_MODE_XLGMII:
|
||||
case PHY_INTERFACE_MODE_40GKR4:
|
||||
return SPEED_40000;
|
||||
|
||||
case PHY_INTERFACE_MODE_INTERNAL:
|
||||
case PHY_INTERFACE_MODE_NA:
|
||||
case PHY_INTERFACE_MODE_MAX:
|
||||
/* No idea! Garbage in, unknown out */
|
||||
return SPEED_UNKNOWN;
|
||||
}
|
||||
|
||||
/* If we get here, someone forgot to add an interface mode above */
|
||||
WARN_ON_ONCE(1);
|
||||
return SPEED_UNKNOWN;
|
||||
}
|
||||
|
||||
/**
|
||||
* phylink_caps_to_linkmodes() - Convert capabilities to ethtool link modes
|
||||
* @linkmodes: ethtool linkmode mask (must be already initialised)
|
||||
|
|
|
|||
|
|
@ -605,6 +605,80 @@ void pcs_link_up(struct phylink_pcs *pcs, unsigned int neg_mode,
|
|||
phy_interface_t interface, int speed, int duplex);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* phylink_interface_max_speed() - get the maximum speed of a phy interface
|
||||
* @interface: phy interface mode defined by &typedef phy_interface_t
|
||||
*
|
||||
* Determine the maximum speed of a phy interface. This is intended to help
|
||||
* determine the correct speed to pass to the MAC when the phy is performing
|
||||
* rate matching.
|
||||
*
|
||||
* Return: The maximum speed of @interface
|
||||
*/
|
||||
static inline int phylink_interface_max_speed(phy_interface_t interface)
|
||||
{
|
||||
switch (interface) {
|
||||
case PHY_INTERFACE_MODE_100BASEX:
|
||||
case PHY_INTERFACE_MODE_REVRMII:
|
||||
case PHY_INTERFACE_MODE_RMII:
|
||||
case PHY_INTERFACE_MODE_SMII:
|
||||
case PHY_INTERFACE_MODE_REVMII:
|
||||
case PHY_INTERFACE_MODE_MII:
|
||||
return SPEED_100;
|
||||
|
||||
case PHY_INTERFACE_MODE_TBI:
|
||||
case PHY_INTERFACE_MODE_MOCA:
|
||||
case PHY_INTERFACE_MODE_RTBI:
|
||||
case PHY_INTERFACE_MODE_1000BASEX:
|
||||
case PHY_INTERFACE_MODE_1000BASEKX:
|
||||
case PHY_INTERFACE_MODE_TRGMII:
|
||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||
case PHY_INTERFACE_MODE_RGMII:
|
||||
case PHY_INTERFACE_MODE_PSGMII:
|
||||
case PHY_INTERFACE_MODE_QSGMII:
|
||||
case PHY_INTERFACE_MODE_QUSGMII:
|
||||
case PHY_INTERFACE_MODE_SGMII:
|
||||
case PHY_INTERFACE_MODE_GMII:
|
||||
return SPEED_1000;
|
||||
|
||||
case PHY_INTERFACE_MODE_2500BASEX:
|
||||
case PHY_INTERFACE_MODE_2500SGMII:
|
||||
case PHY_INTERFACE_MODE_10G_QXGMII:
|
||||
return SPEED_2500;
|
||||
|
||||
case PHY_INTERFACE_MODE_5GBASER:
|
||||
return SPEED_5000;
|
||||
|
||||
case PHY_INTERFACE_MODE_XGMII:
|
||||
case PHY_INTERFACE_MODE_RXAUI:
|
||||
case PHY_INTERFACE_MODE_XAUI:
|
||||
case PHY_INTERFACE_MODE_10GBASER:
|
||||
case PHY_INTERFACE_MODE_10GKR:
|
||||
case PHY_INTERFACE_MODE_USXGMII:
|
||||
return SPEED_10000;
|
||||
|
||||
case PHY_INTERFACE_MODE_25GBASER:
|
||||
case PHY_INTERFACE_MODE_25GKR:
|
||||
return SPEED_25000;
|
||||
|
||||
case PHY_INTERFACE_MODE_XLGMII:
|
||||
case PHY_INTERFACE_MODE_40GKR4:
|
||||
return SPEED_40000;
|
||||
|
||||
case PHY_INTERFACE_MODE_INTERNAL:
|
||||
case PHY_INTERFACE_MODE_NA:
|
||||
case PHY_INTERFACE_MODE_MAX:
|
||||
/* No idea! Garbage in, unknown out */
|
||||
return SPEED_UNKNOWN;
|
||||
}
|
||||
|
||||
/* If we get here, someone forgot to add an interface mode above */
|
||||
WARN_ON_ONCE(1);
|
||||
return SPEED_UNKNOWN;
|
||||
}
|
||||
|
||||
void phylink_caps_to_linkmodes(unsigned long *linkmodes, unsigned long caps);
|
||||
unsigned long phylink_get_capabilities(phy_interface_t interface,
|
||||
unsigned long mac_capabilities,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user