Commit 1dc6a2a0 authored by Colin Foster's avatar Colin Foster Committed by Jakub Kicinski

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: default avatarColin Foster <colin.foster@in-advantage.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com> # regression
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 2efaca41
...@@ -1075,9 +1075,12 @@ static void felix_phylink_mac_link_down(struct dsa_switch *ds, int port, ...@@ -1075,9 +1075,12 @@ static void felix_phylink_mac_link_down(struct dsa_switch *ds, int port,
phy_interface_t interface) phy_interface_t interface)
{ {
struct ocelot *ocelot = ds->priv; struct ocelot *ocelot = ds->priv;
struct felix *felix;
felix = ocelot_to_felix(ocelot);
ocelot_phylink_mac_link_down(ocelot, port, link_an_mode, interface, 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, 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, ...@@ -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, ocelot_phylink_mac_link_up(ocelot, port, phydev, link_an_mode,
interface, speed, duplex, tx_pause, rx_pause, interface, speed, duplex, tx_pause, rx_pause,
FELIX_MAC_QUIRKS); felix->info->quirks);
if (felix->info->port_sched_speed_set) if (felix->info->port_sched_speed_set)
felix->info->port_sched_speed_set(ocelot, port, speed); felix->info->port_sched_speed_set(ocelot, port, speed);
......
...@@ -36,6 +36,7 @@ struct felix_info { ...@@ -36,6 +36,7 @@ struct felix_info {
u16 vcap_pol_base2; u16 vcap_pol_base2;
u16 vcap_pol_max2; u16 vcap_pol_max2;
const struct ptp_clock_info *ptp_caps; const struct ptp_clock_info *ptp_caps;
unsigned long quirks;
/* Some Ocelot switches are integrated into the SoC without the /* Some Ocelot switches are integrated into the SoC without the
* extraction IRQ line connected to the ARM GIC. By enabling this * extraction IRQ line connected to the ARM GIC. By enabling this
......
...@@ -2593,6 +2593,7 @@ static const struct felix_info felix_info_vsc9959 = { ...@@ -2593,6 +2593,7 @@ static const struct felix_info felix_info_vsc9959 = {
.num_mact_rows = 2048, .num_mact_rows = 2048,
.num_ports = VSC9959_NUM_PORTS, .num_ports = VSC9959_NUM_PORTS,
.num_tx_queues = OCELOT_NUM_TC, .num_tx_queues = OCELOT_NUM_TC,
.quirks = FELIX_MAC_QUIRKS,
.quirk_no_xtr_irq = true, .quirk_no_xtr_irq = true,
.ptp_caps = &vsc9959_ptp_caps, .ptp_caps = &vsc9959_ptp_caps,
.mdio_bus_alloc = vsc9959_mdio_bus_alloc, .mdio_bus_alloc = vsc9959_mdio_bus_alloc,
......
...@@ -971,6 +971,7 @@ static const struct felix_info seville_info_vsc9953 = { ...@@ -971,6 +971,7 @@ static const struct felix_info seville_info_vsc9953 = {
.vcap_pol_max = VSC9953_VCAP_POLICER_MAX, .vcap_pol_max = VSC9953_VCAP_POLICER_MAX,
.vcap_pol_base2 = VSC9953_VCAP_POLICER_BASE2, .vcap_pol_base2 = VSC9953_VCAP_POLICER_BASE2,
.vcap_pol_max2 = VSC9953_VCAP_POLICER_MAX2, .vcap_pol_max2 = VSC9953_VCAP_POLICER_MAX2,
.quirks = FELIX_MAC_QUIRKS,
.num_mact_rows = 2048, .num_mact_rows = 2048,
.num_ports = VSC9953_NUM_PORTS, .num_ports = VSC9953_NUM_PORTS,
.num_tx_queues = OCELOT_NUM_TC, .num_tx_queues = OCELOT_NUM_TC,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment