Skip to content

Commit 94c437e

Browse files
Russell King (Oracle)Paolo Abeni
authored andcommitted
net: dsa: lantiq_gswip: provide own phylink MAC operations
Convert lantiq_gswip to provide its own phylink MAC operations, thus avoiding the shim layer in DSA's port.c. For lantiq_gswip, it means we end up with a common instance of phylink MAC operations that are shared between the different variants, rather than having duplicated initialisers in dsa_switch_ops. Signed-off-by: Russell King (Oracle) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent 636d022 commit 94c437e

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

drivers/net/dsa/lantiq_gswip.c

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,11 +1670,13 @@ static void gswip_port_set_pause(struct gswip_priv *priv, int port,
16701670
mdio_phy, GSWIP_MDIO_PHYp(port));
16711671
}
16721672

1673-
static void gswip_phylink_mac_config(struct dsa_switch *ds, int port,
1673+
static void gswip_phylink_mac_config(struct phylink_config *config,
16741674
unsigned int mode,
16751675
const struct phylink_link_state *state)
16761676
{
1677-
struct gswip_priv *priv = ds->priv;
1677+
struct dsa_port *dp = dsa_phylink_to_port(config);
1678+
struct gswip_priv *priv = dp->ds->priv;
1679+
int port = dp->index;
16781680
u32 miicfg = 0;
16791681

16801682
miicfg |= GSWIP_MII_CFG_LDCLKDIS;
@@ -1700,7 +1702,7 @@ static void gswip_phylink_mac_config(struct dsa_switch *ds, int port,
17001702
miicfg |= GSWIP_MII_CFG_MODE_GMII;
17011703
break;
17021704
default:
1703-
dev_err(ds->dev,
1705+
dev_err(dp->ds->dev,
17041706
"Unsupported interface: %d\n", state->interface);
17051707
return;
17061708
}
@@ -1726,28 +1728,32 @@ static void gswip_phylink_mac_config(struct dsa_switch *ds, int port,
17261728
}
17271729
}
17281730

1729-
static void gswip_phylink_mac_link_down(struct dsa_switch *ds, int port,
1731+
static void gswip_phylink_mac_link_down(struct phylink_config *config,
17301732
unsigned int mode,
17311733
phy_interface_t interface)
17321734
{
1733-
struct gswip_priv *priv = ds->priv;
1735+
struct dsa_port *dp = dsa_phylink_to_port(config);
1736+
struct gswip_priv *priv = dp->ds->priv;
1737+
int port = dp->index;
17341738

17351739
gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, port);
17361740

1737-
if (!dsa_is_cpu_port(ds, port))
1741+
if (!dsa_port_is_cpu(dp))
17381742
gswip_port_set_link(priv, port, false);
17391743
}
17401744

1741-
static void gswip_phylink_mac_link_up(struct dsa_switch *ds, int port,
1745+
static void gswip_phylink_mac_link_up(struct phylink_config *config,
1746+
struct phy_device *phydev,
17421747
unsigned int mode,
17431748
phy_interface_t interface,
1744-
struct phy_device *phydev,
17451749
int speed, int duplex,
17461750
bool tx_pause, bool rx_pause)
17471751
{
1748-
struct gswip_priv *priv = ds->priv;
1752+
struct dsa_port *dp = dsa_phylink_to_port(config);
1753+
struct gswip_priv *priv = dp->ds->priv;
1754+
int port = dp->index;
17491755

1750-
if (!dsa_is_cpu_port(ds, port)) {
1756+
if (!dsa_port_is_cpu(dp)) {
17511757
gswip_port_set_link(priv, port, true);
17521758
gswip_port_set_speed(priv, port, speed, interface);
17531759
gswip_port_set_duplex(priv, port, duplex);
@@ -1824,6 +1830,12 @@ static int gswip_get_sset_count(struct dsa_switch *ds, int port, int sset)
18241830
return ARRAY_SIZE(gswip_rmon_cnt);
18251831
}
18261832

1833+
static const struct phylink_mac_ops gswip_phylink_mac_ops = {
1834+
.mac_config = gswip_phylink_mac_config,
1835+
.mac_link_down = gswip_phylink_mac_link_down,
1836+
.mac_link_up = gswip_phylink_mac_link_up,
1837+
};
1838+
18271839
static const struct dsa_switch_ops gswip_xrx200_switch_ops = {
18281840
.get_tag_protocol = gswip_get_tag_protocol,
18291841
.setup = gswip_setup,
@@ -1842,9 +1854,6 @@ static const struct dsa_switch_ops gswip_xrx200_switch_ops = {
18421854
.port_change_mtu = gswip_port_change_mtu,
18431855
.port_max_mtu = gswip_port_max_mtu,
18441856
.phylink_get_caps = gswip_xrx200_phylink_get_caps,
1845-
.phylink_mac_config = gswip_phylink_mac_config,
1846-
.phylink_mac_link_down = gswip_phylink_mac_link_down,
1847-
.phylink_mac_link_up = gswip_phylink_mac_link_up,
18481857
.get_strings = gswip_get_strings,
18491858
.get_ethtool_stats = gswip_get_ethtool_stats,
18501859
.get_sset_count = gswip_get_sset_count,
@@ -1868,9 +1877,6 @@ static const struct dsa_switch_ops gswip_xrx300_switch_ops = {
18681877
.port_change_mtu = gswip_port_change_mtu,
18691878
.port_max_mtu = gswip_port_max_mtu,
18701879
.phylink_get_caps = gswip_xrx300_phylink_get_caps,
1871-
.phylink_mac_config = gswip_phylink_mac_config,
1872-
.phylink_mac_link_down = gswip_phylink_mac_link_down,
1873-
.phylink_mac_link_up = gswip_phylink_mac_link_up,
18741880
.get_strings = gswip_get_strings,
18751881
.get_ethtool_stats = gswip_get_ethtool_stats,
18761882
.get_sset_count = gswip_get_sset_count,
@@ -2136,6 +2142,7 @@ static int gswip_probe(struct platform_device *pdev)
21362142
priv->ds->num_ports = priv->hw_info->max_ports;
21372143
priv->ds->priv = priv;
21382144
priv->ds->ops = priv->hw_info->ops;
2145+
priv->ds->phylink_mac_ops = &gswip_phylink_mac_ops;
21392146
priv->dev = dev;
21402147
mutex_init(&priv->pce_table_lock);
21412148
version = gswip_switch_r(priv, GSWIP_VERSION);

0 commit comments

Comments
 (0)