summaryrefslogtreecommitdiff
path: root/drivers/net/dsa/hirschmann/hellcreek.c
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2021-12-01 18:58:03 -0800
committerJakub Kicinski <kuba@kernel.org>2021-12-01 18:58:03 -0800
commit4a8e4640ddd1e18cade9f15e40f2d8cd65f173cf (patch)
treecc245a61fb2ed6b91bdb6fbde6052b4b0cd09fc7 /drivers/net/dsa/hirschmann/hellcreek.c
parent8057cbb8335cf6d419866737504473833e1d128a (diff)
parenta2279b08c7f4c97ad93916dae5c02eeac34b7f2c (diff)
Merge branch 'net-dsa-convert-two-drivers-to-phylink_generic_validate'
Russell King says: ==================== net: dsa: convert two drivers to phylink_generic_validate() Patches 1 to 3 update core DSA code to allow drivers to be converted, and patches 4 and 5 convert hellcreek and lantiq to use this (both of which received reviewed-by from their maintainers.) As the rest have yet to be reviewed by their maintainers, they are not included here. Patch 1 had a request to change the formatting of it; I have not done so as I believe a patch should do one change and one change only - reformatting it is a separate change that should be in its own patch. However, as patch 2 gets rid of the reason for reformatting it, it would be pointless, and pure noise to include such an intermediary patch. Instead, I have swapped the order of patches 2 and 3 from the RFC series. ==================== Link: https://lore.kernel.org/r/YaYiiU9nvmVugqnJ@shell.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/dsa/hirschmann/hellcreek.c')
-rw-r--r--drivers/net/dsa/hirschmann/hellcreek.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c
index 4e0b53d94b52..86839b43011b 100644
--- a/drivers/net/dsa/hirschmann/hellcreek.c
+++ b/drivers/net/dsa/hirschmann/hellcreek.c
@@ -1384,14 +1384,19 @@ static void hellcreek_teardown(struct dsa_switch *ds)
dsa_devlink_resources_unregister(ds);
}
-static void hellcreek_phylink_validate(struct dsa_switch *ds, int port,
- unsigned long *supported,
- struct phylink_link_state *state)
+static void hellcreek_phylink_get_caps(struct dsa_switch *ds, int port,
+ struct phylink_config *config)
{
- __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
struct hellcreek *hellcreek = ds->priv;
- dev_dbg(hellcreek->dev, "Phylink validate for port %d\n", port);
+ __set_bit(PHY_INTERFACE_MODE_MII, config->supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_RGMII, config->supported_interfaces);
+
+ /* Include GMII - the hardware does not support this interface
+ * mode, but it's the default interface mode for phylib, so we
+ * need it for compatibility with existing DT.
+ */
+ __set_bit(PHY_INTERFACE_MODE_GMII, config->supported_interfaces);
/* The MAC settings are a hardware configuration option and cannot be
* changed at run time or by strapping. Therefore the attached PHYs
@@ -1399,12 +1404,9 @@ static void hellcreek_phylink_validate(struct dsa_switch *ds, int port,
* by the hardware.
*/
if (hellcreek->pdata->is_100_mbits)
- phylink_set(mask, 100baseT_Full);
+ config->mac_capabilities = MAC_100FD;
else
- phylink_set(mask, 1000baseT_Full);
-
- linkmode_and(supported, supported, mask);
- linkmode_and(state->advertising, state->advertising, mask);
+ config->mac_capabilities = MAC_1000FD;
}
static int
@@ -1755,7 +1757,7 @@ static const struct dsa_switch_ops hellcreek_ds_ops = {
.get_strings = hellcreek_get_strings,
.get_tag_protocol = hellcreek_get_tag_protocol,
.get_ts_info = hellcreek_get_ts_info,
- .phylink_validate = hellcreek_phylink_validate,
+ .phylink_get_caps = hellcreek_phylink_get_caps,
.port_bridge_flags = hellcreek_bridge_flags,
.port_bridge_join = hellcreek_port_bridge_join,
.port_bridge_leave = hellcreek_port_bridge_leave,