[PATCH net-next] net: stmmac: visconti: convert to set_clk_tx_rate() method

nobuhiro1.iwamatsu at toshiba.co.jp nobuhiro1.iwamatsu at toshiba.co.jp
Tue Apr 15 21:56:58 PDT 2025


Hi Russell,

Thanks for your update!

> -----Original Message-----
> From: Russell King <rmk at armlinux.org.uk> On Behalf Of Russell King (Oracle)
> Sent: Wednesday, April 16, 2025 1:53 AM
> To: Andrew Lunn <andrew at lunn.ch>; Heiner Kallweit
> <hkallweit1 at gmail.com>
> Cc: Alexandre Torgue <alexandre.torgue at foss.st.com>; Andrew Lunn
> <andrew+netdev at lunn.ch>; David S. Miller <davem at davemloft.net>; Eric
> Dumazet <edumazet at google.com>; Jakub Kicinski <kuba at kernel.org>;
> linux-arm-kernel at lists.infradead.org;
> linux-stm32 at st-md-mailman.stormreply.com; Maxime Coquelin
> <mcoquelin.stm32 at gmail.com>; netdev at vger.kernel.org; iwamatsu
> nobuhiro(岩松 信洋 □DITC○CPT)
> <nobuhiro1.iwamatsu at toshiba.co.jp>; Paolo Abeni <pabeni at redhat.com>
> Subject: [PATCH net-next] net: stmmac: visconti: convert to set_clk_tx_rate()
> method
> 
> Convert visconti to use the set_clk_tx_rate() method. By doing so, the GMAC
> control register will already have been updated (unlike with the
> fix_mac_speed() method) so this code can be removed while porting to the
> set_clk_tx_rate() method.
> 
> There is also no need for the spinlock, and has never been - neither
> fix_mac_speed() nor set_clk_tx_rate() can be called by more than one thread at
> a time, so the lock does nothing useful.
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
> ---
>  .../ethernet/stmicro/stmmac/dwmac-visconti.c   | 18 ++++--------------
>  1 file changed, 4 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
> b/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
> index e1de471b215c..2215aef3ef42 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
> @@ -51,22 +51,16 @@ struct visconti_eth {
>  	u32 phy_intf_sel;
>  	struct clk *phy_ref_clk;
>  	struct device *dev;
> -	spinlock_t lock; /* lock to protect register update */
>  };
> 
> -static void visconti_eth_fix_mac_speed(void *priv, int speed, unsigned int
> mode)
> +static int visconti_eth_set_clk_tx_rate(void *bsp_priv, struct clk *clk_tx_i,
> +					phy_interface_t interface, int speed)
>  {
>  	struct visconti_eth *dwmac = priv;
>  	struct net_device *netdev = dev_get_drvdata(dwmac->dev);
>  	unsigned int val, clk_sel_val = 0;
>  	unsigned long flags;
> 
> -	spin_lock_irqsave(&dwmac->lock, flags);
> -
> -	/* adjust link */
> -	val = readl(dwmac->reg + MAC_CTRL_REG);
> -	val &= ~(GMAC_CONFIG_PS | GMAC_CONFIG_FES);
> -
>  	switch (speed) {
>  	case SPEED_1000:
>  		if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RGMII)
> @@ -89,12 +83,9 @@ static void visconti_eth_fix_mac_speed(void *priv, int
> speed, unsigned int mode)
>  	default:
>  		/* No bit control */
>  		netdev_err(netdev, "Unsupported speed request (%d)",
> speed);
> -		spin_unlock_irqrestore(&dwmac->lock, flags);
>  		return;

We need to set the return code (-EINVAL). 


Best regards,
 Nobuhiro


More information about the linux-arm-kernel mailing list