Patch "net: stmmac: allow CSR clock of 300MHz" has been added to the 5.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: stmmac: allow CSR clock of 300MHz

to the 5.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-stmmac-allow-csr-clock-of-300mhz.patch
and it can be found in the queue-5.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 0ba7aa5ca9a827e17a28acb0526f8333a8cf73c7
Author: Jesper Nilsson <jesper.nilsson@xxxxxxxx>
Date:   Fri Sep 10 21:55:34 2021 +0200

    net: stmmac: allow CSR clock of 300MHz
    
    [ Upstream commit 08dad2f4d541fcfe5e7bfda72cc6314bbfd2802f ]
    
    The Synopsys Ethernet IP uses the CSR clock as a base clock for MDC.
    The divisor used is set in the MAC_MDIO_Address register field CR
    (Clock Rate)
    
    The divisor is there to change the CSR clock into a clock that falls
    below the IEEE 802.3 specified max frequency of 2.5MHz.
    
    If the CSR clock is 300MHz, the code falls back to using the reset
    value in the MAC_MDIO_Address register, as described in the comment
    above this code.
    
    However, 300MHz is actually an allowed value and the proper divider
    can be estimated quite easily (it's just 1Hz difference!)
    
    A CSR frequency of 300MHz with the maximum clock rate value of 0x5
    (STMMAC_CSR_250_300M, a divisor of 124) gives somewhere around
    ~2.42MHz which is below the IEEE 802.3 specified maximum.
    
    For the ARTPEC-8 SoC, the CSR clock is this problematic 300MHz,
    and unfortunately, the reset-value of the MAC_MDIO_Address CR field
    is 0x0.
    
    This leads to a clock rate of zero and a divisor of 42, and gives an
    MDC frequency of ~7.14MHz.
    
    Allow CSR clock of 300MHz by making the comparison inclusive.
    
    Signed-off-by: Jesper Nilsson <jesper.nilsson@xxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 0dbd189c2721..2218bc3a624b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -309,7 +309,7 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)
 			priv->clk_csr = STMMAC_CSR_100_150M;
 		else if ((clk_rate >= CSR_F_150M) && (clk_rate < CSR_F_250M))
 			priv->clk_csr = STMMAC_CSR_150_250M;
-		else if ((clk_rate >= CSR_F_250M) && (clk_rate < CSR_F_300M))
+		else if ((clk_rate >= CSR_F_250M) && (clk_rate <= CSR_F_300M))
 			priv->clk_csr = STMMAC_CSR_250_300M;
 	}
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux