net: phy: Add missing features to PHY drivers
The bcm87xx and micrel driver has PHYs which are missing the .features
value. Add them. The bcm87xx is a 10G FEC only PHY. Add the needed
features definition of this PHY.
Fixes: 719655a149
("net: phy: Replace phy driver features u32 with link_mode bitmap")
Reported-by: Scott Wood <oss@buserror.net>
Reported-by: Camelia Groza <camelia.groza@nxp.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a5a82d8411
commit
9e857a40dc
|
@ -197,6 +197,7 @@ static struct phy_driver bcm87xx_driver[] = {
|
|||
.phy_id = PHY_ID_BCM8706,
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Broadcom BCM8706",
|
||||
.features = PHY_10GBIT_FEC_FEATURES,
|
||||
.config_init = bcm87xx_config_init,
|
||||
.config_aneg = bcm87xx_config_aneg,
|
||||
.read_status = bcm87xx_read_status,
|
||||
|
@ -208,6 +209,7 @@ static struct phy_driver bcm87xx_driver[] = {
|
|||
.phy_id = PHY_ID_BCM8727,
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Broadcom BCM8727",
|
||||
.features = PHY_10GBIT_FEC_FEATURES,
|
||||
.config_init = bcm87xx_config_init,
|
||||
.config_aneg = bcm87xx_config_aneg,
|
||||
.read_status = bcm87xx_read_status,
|
||||
|
|
|
@ -1099,6 +1099,7 @@ static struct phy_driver ksphy_driver[] = {
|
|||
.phy_id = PHY_ID_KSZ8873MLL,
|
||||
.phy_id_mask = MICREL_PHY_ID_MASK,
|
||||
.name = "Micrel KSZ8873MLL Switch",
|
||||
.features = PHY_BASIC_FEATURES,
|
||||
.config_init = kszphy_config_init,
|
||||
.config_aneg = ksz8873mll_config_aneg,
|
||||
.read_status = ksz8873mll_read_status,
|
||||
|
|
|
@ -61,6 +61,9 @@ EXPORT_SYMBOL_GPL(phy_gbit_all_ports_features);
|
|||
__ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init;
|
||||
EXPORT_SYMBOL_GPL(phy_10gbit_features);
|
||||
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_fec_features) __ro_after_init;
|
||||
EXPORT_SYMBOL_GPL(phy_10gbit_fec_features);
|
||||
|
||||
static const int phy_basic_ports_array[] = {
|
||||
ETHTOOL_LINK_MODE_Autoneg_BIT,
|
||||
ETHTOOL_LINK_MODE_TP_BIT,
|
||||
|
@ -109,6 +112,11 @@ const int phy_10gbit_features_array[1] = {
|
|||
};
|
||||
EXPORT_SYMBOL_GPL(phy_10gbit_features_array);
|
||||
|
||||
const int phy_10gbit_fec_features_array[1] = {
|
||||
ETHTOOL_LINK_MODE_10000baseR_FEC_BIT,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(phy_10gbit_fec_features_array);
|
||||
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init;
|
||||
EXPORT_SYMBOL_GPL(phy_10gbit_full_features);
|
||||
|
||||
|
@ -191,6 +199,10 @@ static void features_init(void)
|
|||
linkmode_set_bit_array(phy_10gbit_full_features_array,
|
||||
ARRAY_SIZE(phy_10gbit_full_features_array),
|
||||
phy_10gbit_full_features);
|
||||
/* 10G FEC only */
|
||||
linkmode_set_bit_array(phy_10gbit_fec_features_array,
|
||||
ARRAY_SIZE(phy_10gbit_fec_features_array),
|
||||
phy_10gbit_fec_features);
|
||||
}
|
||||
|
||||
void phy_device_free(struct phy_device *phydev)
|
||||
|
|
|
@ -48,6 +48,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_features) __ro_after_init;
|
|||
extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_fibre_features) __ro_after_init;
|
||||
extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_all_ports_features) __ro_after_init;
|
||||
extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init;
|
||||
extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_fec_features) __ro_after_init;
|
||||
extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init;
|
||||
|
||||
#define PHY_BASIC_FEATURES ((unsigned long *)&phy_basic_features)
|
||||
|
@ -56,6 +57,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_ini
|
|||
#define PHY_GBIT_FIBRE_FEATURES ((unsigned long *)&phy_gbit_fibre_features)
|
||||
#define PHY_GBIT_ALL_PORTS_FEATURES ((unsigned long *)&phy_gbit_all_ports_features)
|
||||
#define PHY_10GBIT_FEATURES ((unsigned long *)&phy_10gbit_features)
|
||||
#define PHY_10GBIT_FEC_FEATURES ((unsigned long *)&phy_10gbit_fec_features)
|
||||
#define PHY_10GBIT_FULL_FEATURES ((unsigned long *)&phy_10gbit_full_features)
|
||||
|
||||
extern const int phy_10_100_features_array[4];
|
||||
|
|
Loading…
Reference in New Issue