lkml.org 
[lkml]   [2023]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next v6 8/9] net: dsa: microchip: Refactor switch shutdown routine for WoL preparation
    Date
    Centralize the switch shutdown routine in a dedicated function,
    ksz_switch_shutdown(), to enhance code maintainability and reduce
    redundancy. This change abstracts the common shutdown operations
    previously duplicated in ksz9477_i2c_shutdown() and ksz_spi_shutdown().

    This refactoring is a preparatory step for an upcoming patch to avoid
    reset on shutdown if Wake-on-LAN (WoL) is enabled.

    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    ---
    drivers/net/dsa/microchip/ksz9477_i2c.c | 5 +----
    drivers/net/dsa/microchip/ksz_common.c | 19 +++++++++++++++++++
    drivers/net/dsa/microchip/ksz_common.h | 1 +
    drivers/net/dsa/microchip/ksz_spi.c | 5 +----
    4 files changed, 22 insertions(+), 8 deletions(-)

    diff --git a/drivers/net/dsa/microchip/ksz9477_i2c.c b/drivers/net/dsa/microchip/ksz9477_i2c.c
    index 2710afad4f3a..cac4a607e54a 100644
    --- a/drivers/net/dsa/microchip/ksz9477_i2c.c
    +++ b/drivers/net/dsa/microchip/ksz9477_i2c.c
    @@ -66,10 +66,7 @@ static void ksz9477_i2c_shutdown(struct i2c_client *i2c)
    if (!dev)
    return;

    - if (dev->dev_ops->reset)
    - dev->dev_ops->reset(dev);
    -
    - dsa_switch_shutdown(dev->ds);
    + ksz_switch_shutdown(dev);

    i2c_set_clientdata(i2c, NULL);
    }
    diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
    index 79052a54880c..08556b1dc452 100644
    --- a/drivers/net/dsa/microchip/ksz_common.c
    +++ b/drivers/net/dsa/microchip/ksz_common.c
    @@ -3810,6 +3810,25 @@ struct ksz_device *ksz_switch_alloc(struct device *base, void *priv)
    }
    EXPORT_SYMBOL(ksz_switch_alloc);

    +/**
    + * ksz_switch_shutdown - Shutdown routine for the switch device.
    + * @dev: The switch device structure.
    + *
    + * This function is responsible for initiating a shutdown sequence for the
    + * switch device. It invokes the reset operation defined in the device
    + * operations, if available, to reset the switch. Subsequently, it calls the
    + * DSA framework's shutdown function to ensure a proper shutdown of the DSA
    + * switch.
    + */
    +void ksz_switch_shutdown(struct ksz_device *dev)
    +{
    + if (dev->dev_ops->reset)
    + dev->dev_ops->reset(dev);
    +
    + dsa_switch_shutdown(dev->ds);
    +}
    +EXPORT_SYMBOL(ksz_switch_shutdown);
    +
    static void ksz_parse_rgmii_delay(struct ksz_device *dev, int port_num,
    struct device_node *port_dn)
    {
    diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h
    index 8fc3210d7a3d..34a8e9784cca 100644
    --- a/drivers/net/dsa/microchip/ksz_common.h
    +++ b/drivers/net/dsa/microchip/ksz_common.h
    @@ -399,6 +399,7 @@ extern const struct ksz_chip_data ksz_switch_chips[];
    int ksz_switch_macaddr_get(struct dsa_switch *ds, int port,
    struct netlink_ext_ack *extack);
    void ksz_switch_macaddr_put(struct dsa_switch *ds);
    +void ksz_switch_shutdown(struct ksz_device *dev);

    /* Common register access functions */
    static inline struct regmap *ksz_regmap_8(struct ksz_device *dev)
    diff --git a/drivers/net/dsa/microchip/ksz_spi.c b/drivers/net/dsa/microchip/ksz_spi.c
    index 279338451621..6f6d878e742c 100644
    --- a/drivers/net/dsa/microchip/ksz_spi.c
    +++ b/drivers/net/dsa/microchip/ksz_spi.c
    @@ -114,10 +114,7 @@ static void ksz_spi_shutdown(struct spi_device *spi)
    if (!dev)
    return;

    - if (dev->dev_ops->reset)
    - dev->dev_ops->reset(dev);
    -
    - dsa_switch_shutdown(dev->ds);
    + ksz_switch_shutdown(dev);

    spi_set_drvdata(spi, NULL);
    }
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-10-19 14:31    [W:4.293 / U:1.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site