net: dsa: felix: add configurable device quirks
The define FELIX_MAC_QUIRKS was used directly in the felix.c shared driver. Other devices (VSC7512 for example) don't require the same quirks, so they need to be configured on a per-device basis. Signed-off-by: Colin Foster <colin.foster@in-advantage.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com> # regression Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2efaca411c
commit
1dc6a2a023
@ -1075,9 +1075,12 @@ static void felix_phylink_mac_link_down(struct dsa_switch *ds, int port,
|
||||
phy_interface_t interface)
|
||||
{
|
||||
struct ocelot *ocelot = ds->priv;
|
||||
struct felix *felix;
|
||||
|
||||
felix = ocelot_to_felix(ocelot);
|
||||
|
||||
ocelot_phylink_mac_link_down(ocelot, port, link_an_mode, interface,
|
||||
FELIX_MAC_QUIRKS);
|
||||
felix->info->quirks);
|
||||
}
|
||||
|
||||
static void felix_phylink_mac_link_up(struct dsa_switch *ds, int port,
|
||||
@ -1092,7 +1095,7 @@ static void felix_phylink_mac_link_up(struct dsa_switch *ds, int port,
|
||||
|
||||
ocelot_phylink_mac_link_up(ocelot, port, phydev, link_an_mode,
|
||||
interface, speed, duplex, tx_pause, rx_pause,
|
||||
FELIX_MAC_QUIRKS);
|
||||
felix->info->quirks);
|
||||
|
||||
if (felix->info->port_sched_speed_set)
|
||||
felix->info->port_sched_speed_set(ocelot, port, speed);
|
||||
|
@ -36,6 +36,7 @@ struct felix_info {
|
||||
u16 vcap_pol_base2;
|
||||
u16 vcap_pol_max2;
|
||||
const struct ptp_clock_info *ptp_caps;
|
||||
unsigned long quirks;
|
||||
|
||||
/* Some Ocelot switches are integrated into the SoC without the
|
||||
* extraction IRQ line connected to the ARM GIC. By enabling this
|
||||
|
@ -2593,6 +2593,7 @@ static const struct felix_info felix_info_vsc9959 = {
|
||||
.num_mact_rows = 2048,
|
||||
.num_ports = VSC9959_NUM_PORTS,
|
||||
.num_tx_queues = OCELOT_NUM_TC,
|
||||
.quirks = FELIX_MAC_QUIRKS,
|
||||
.quirk_no_xtr_irq = true,
|
||||
.ptp_caps = &vsc9959_ptp_caps,
|
||||
.mdio_bus_alloc = vsc9959_mdio_bus_alloc,
|
||||
|
@ -971,6 +971,7 @@ static const struct felix_info seville_info_vsc9953 = {
|
||||
.vcap_pol_max = VSC9953_VCAP_POLICER_MAX,
|
||||
.vcap_pol_base2 = VSC9953_VCAP_POLICER_BASE2,
|
||||
.vcap_pol_max2 = VSC9953_VCAP_POLICER_MAX2,
|
||||
.quirks = FELIX_MAC_QUIRKS,
|
||||
.num_mact_rows = 2048,
|
||||
.num_ports = VSC9953_NUM_PORTS,
|
||||
.num_tx_queues = OCELOT_NUM_TC,
|
||||
|
Loading…
Reference in New Issue
Block a user