lkml.org 
[lkml]   [2022]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 net-next 06/14] net: dsa: felix: add configurable device quirks
    Date
    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>
    ---

    v2 & v3
    * No changes

    v1 from previous RFC:
    * No changes

    ---
    drivers/net/dsa/ocelot/felix.c | 7 +++++--
    drivers/net/dsa/ocelot/felix.h | 1 +
    drivers/net/dsa/ocelot/felix_vsc9959.c | 1 +
    drivers/net/dsa/ocelot/seville_vsc9953.c | 1 +
    4 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c
    index d2a9d292160c..07c2f1b6913d 100644
    --- a/drivers/net/dsa/ocelot/felix.c
    +++ b/drivers/net/dsa/ocelot/felix.c
    @@ -1082,9 +1082,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,
    @@ -1099,7 +1102,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);
    diff --git a/drivers/net/dsa/ocelot/felix.h b/drivers/net/dsa/ocelot/felix.h
    index e4fd5eef57a0..f94a445c2542 100644
    --- a/drivers/net/dsa/ocelot/felix.h
    +++ b/drivers/net/dsa/ocelot/felix.h
    @@ -33,6 +33,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
    diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c
    index 2ec49e42b3f4..2fd2bb499e9c 100644
    --- a/drivers/net/dsa/ocelot/felix_vsc9959.c
    +++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
    @@ -2605,6 +2605,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,
    diff --git a/drivers/net/dsa/ocelot/seville_vsc9953.c b/drivers/net/dsa/ocelot/seville_vsc9953.c
    index 5b29fa930627..e589d07f84db 100644
    --- a/drivers/net/dsa/ocelot/seville_vsc9953.c
    +++ b/drivers/net/dsa/ocelot/seville_vsc9953.c
    @@ -1071,6 +1071,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,
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-09-26 02:32    [W:4.242 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site