return ret;
}
-static void ksz8_get_caps(struct ksz_device *dev, int port,
- struct phylink_config *config)
+static void ksz8_phylink_get_caps(struct dsa_switch *ds, int port,
+ struct phylink_config *config)
{
+ struct ksz_device *dev = ds->priv;
+
config->mac_capabilities = MAC_10 | MAC_100;
/* Silicon Errata Sheet (DS80000830A):
/* Asym pause is not supported on KSZ8863 and KSZ8873 */
if (!ksz_is_ksz88x3(dev))
config->mac_capabilities |= MAC_ASYM_PAUSE;
+
+ ksz_phylink_get_caps(ds, port, config);
}
static u32 ksz8_get_port_addr(int port, int offset)
.r_mib_stat64 = ksz88xx_r_mib_stats64,
.freeze_mib = ksz8_freeze_mib,
.port_init_cnt = ksz8_port_init_cnt,
- .get_caps = ksz8_get_caps,
.config_cpu_port = ksz8_config_cpu_port,
.enable_stp_addr = ksz8_enable_stp_addr,
.reset = ksz8_reset_switch,
.r_mib_stat64 = ksz_r_mib_stats64,
.freeze_mib = ksz8_freeze_mib,
.port_init_cnt = ksz8_port_init_cnt,
- .get_caps = ksz8_get_caps,
.config_cpu_port = ksz8_config_cpu_port,
.enable_stp_addr = ksz8_enable_stp_addr,
.reset = ksz8_reset_switch,
.r_mib_stat64 = ksz88xx_r_mib_stats64,
.freeze_mib = ksz8_freeze_mib,
.port_init_cnt = ksz8_port_init_cnt,
- .get_caps = ksz8_get_caps,
.config_cpu_port = ksz8_config_cpu_port,
.enable_stp_addr = ksz8_enable_stp_addr,
.reset = ksz8_reset_switch,
.teardown = ksz_teardown,
.phy_read = ksz_phy_read16,
.phy_write = ksz_phy_write16,
- .phylink_get_caps = ksz_phylink_get_caps,
+ .phylink_get_caps = ksz8_phylink_get_caps,
.port_setup = ksz_port_setup,
.get_strings = ksz_get_strings,
.get_ethtool_stats = ksz_get_ethtool_stats,
.teardown = ksz_teardown,
.phy_read = ksz_phy_read16,
.phy_write = ksz_phy_write16,
- .phylink_get_caps = ksz_phylink_get_caps,
+ .phylink_get_caps = ksz8_phylink_get_caps,
.port_setup = ksz_port_setup,
.get_strings = ksz_get_strings,
.get_ethtool_stats = ksz_get_ethtool_stats,
.teardown = ksz_teardown,
.phy_read = ksz_phy_read16,
.phy_write = ksz_phy_write16,
- .phylink_get_caps = ksz_phylink_get_caps,
+ .phylink_get_caps = ksz8_phylink_get_caps,
.port_setup = ksz_port_setup,
.get_strings = ksz_get_strings,
.get_ethtool_stats = ksz_get_ethtool_stats,
return interface;
}
-static void ksz9477_get_caps(struct ksz_device *dev, int port,
- struct phylink_config *config)
+static void ksz9477_phylink_get_caps(struct dsa_switch *ds, int port,
+ struct phylink_config *config)
{
+ struct ksz_device *dev = ds->priv;
+
config->mac_capabilities = MAC_10 | MAC_100 | MAC_ASYM_PAUSE |
MAC_SYM_PAUSE;
config->supported_interfaces,
p->pcs->supported_interfaces);
}
+
+ ksz_phylink_get_caps(ds, port, config);
}
static int ksz9477_set_ageing_time(struct dsa_switch *ds, unsigned int msecs)
.r_mib_stat64 = ksz_r_mib_stats64,
.freeze_mib = ksz9477_freeze_mib,
.port_init_cnt = ksz9477_port_init_cnt,
- .get_caps = ksz9477_get_caps,
.pme_write8 = ksz_write8,
.pme_pread8 = ksz_pread8,
.pme_pwrite8 = ksz_pwrite8,
.teardown = ksz_teardown,
.phy_read = ksz_phy_read16,
.phy_write = ksz_phy_write16,
- .phylink_get_caps = ksz_phylink_get_caps,
+ .phylink_get_caps = ksz9477_phylink_get_caps,
.port_setup = ksz_port_setup,
.set_ageing_time = ksz9477_set_ageing_time,
.get_strings = ksz_get_strings,
config->supported_interfaces);
}
- if (dev->dev_ops->get_caps)
- dev->dev_ops->get_caps(dev, port, config);
-
if (ds->ops->support_eee && ds->ops->support_eee(ds, port)) {
memcpy(config->lpi_interfaces, config->supported_interfaces,
sizeof(config->lpi_interfaces));
void (*r_mib_pkt)(struct ksz_device *dev, int port, u16 addr,
u64 *dropped, u64 *cnt);
void (*r_mib_stat64)(struct ksz_device *dev, int port);
- void (*get_caps)(struct ksz_device *dev, int port,
- struct phylink_config *config);
int (*pme_write8)(struct ksz_device *dev, u32 reg, u8 value);
int (*pme_pread8)(struct ksz_device *dev, int port, int offset,
u8 *data);
lan937x_set_tune_adj(dev, port, REG_PORT_XMII_CTRL_4, val);
}
-static void lan937x_phylink_get_caps(struct ksz_device *dev, int port,
+static void lan937x_phylink_get_caps(struct dsa_switch *ds, int port,
struct phylink_config *config)
{
+ struct ksz_device *dev = ds->priv;
+
config->mac_capabilities = MAC_100FD;
if (dev->info->supports_rgmii[port]) {
config->mac_capabilities |= MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
MAC_100HD | MAC_10;
}
+
+ ksz_phylink_get_caps(ds, port, config);
}
static void lan937x_setup_rgmii_delay(struct ksz_device *dev, int port)
.r_mib_stat64 = ksz_r_mib_stats64,
.freeze_mib = ksz9477_freeze_mib,
.port_init_cnt = ksz9477_port_init_cnt,
- .get_caps = lan937x_phylink_get_caps,
.setup_rgmii_delay = lan937x_setup_rgmii_delay,
.config_cpu_port = lan937x_config_cpu_port,
.tc_cbs_set_cinc = lan937x_tc_cbs_set_cinc,
.teardown = ksz_teardown,
.phy_read = ksz_phy_read16,
.phy_write = ksz_phy_write16,
- .phylink_get_caps = ksz_phylink_get_caps,
+ .phylink_get_caps = lan937x_phylink_get_caps,
.port_setup = ksz_port_setup,
.set_ageing_time = lan937x_set_ageing_time,
.get_strings = ksz_get_strings,