@@ -2522,12 +2522,13 @@ static int mt7531_rgmii_setup(struct mt7530_priv *priv, u32 port,
}
static void mt7531_sgmii_validate(struct mt7530_priv *priv, int port,
+ phy_interface_t interface,
unsigned long *supported)
{
/* Port5 supports ethier RGMII or SGMII.
* Port6 supports SGMII only.
*/
- if (port == 6) {
+ if (port == 6 && interface == PHY_INTERFACE_MODE_2500BASEX) {
phylink_set(supported, 2500baseX_Full);
phylink_set(supported, 2500baseT_Full);
}
@@ -2902,16 +2903,18 @@ static void mt753x_phylink_get_caps(struct dsa_switch *ds, int port,
static void
mt7530_mac_port_validate(struct dsa_switch *ds, int port,
+ phy_interface_t interface,
unsigned long *supported)
{
}
static void mt7531_mac_port_validate(struct dsa_switch *ds, int port,
+ phy_interface_t interface,
unsigned long *supported)
{
struct mt7530_priv *priv = ds->priv;
- mt7531_sgmii_validate(priv, port, supported);
+ mt7531_sgmii_validate(priv, port, interface, supported);
}
static void
@@ -2934,12 +2937,13 @@ mt753x_phylink_validate(struct dsa_switch *ds, int port,
}
/* This switch only supports 1G full-duplex. */
- if (state->interface != PHY_INTERFACE_MODE_MII) {
+ if (state->interface != PHY_INTERFACE_MODE_MII &&
+ state->interface != PHY_INTERFACE_MODE_2500BASEX) {
phylink_set(mask, 1000baseT_Full);
phylink_set(mask, 1000baseX_Full);
}
- priv->info->mac_port_validate(ds, port, mask);
+ priv->info->mac_port_validate(ds, port, state->interface, mask);
phylink_set(mask, Pause);
phylink_set(mask, Asym_Pause);
@@ -772,6 +772,7 @@ struct mt753x_info {
void (*mac_port_get_caps)(struct dsa_switch *ds, int port,
struct phylink_config *config);
void (*mac_port_validate)(struct dsa_switch *ds, int port,
+ phy_interface_t interface,
unsigned long *supported);
int (*mac_port_get_state)(struct dsa_switch *ds, int port,
struct phylink_link_state *state);