Message ID | 20241013-upstream_s32cc_gmac-v3-4-d84b5a67b930@oss.nxp.com |
---|---|
State | Superseded |
Headers | show |
Series | Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 | expand |
On Mon, Oct 14, 2024 at 03:40:51PM +0200, Andrew Lunn wrote: > On Sun, Oct 13, 2024 at 11:27:39PM +0200, Jan Petrous via B4 Relay wrote: > > From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com> > > > > The helper rgmii_clock() implemented Russel's hint during stmmac > > glue driver review: > > > > > We seem to have multiple cases of very similar logic in lots of stmmac > > > platform drivers, and I think it's about time we said no more to this. > > > So, what I think we should do is as follows: > > > > > > add the following helper - either in stmmac, or more generically > > > (phylib? - in which case its name will need changing.) > > > > > > static long stmmac_get_rgmii_clock(int speed) > > > { > > > switch (speed) { > > > case SPEED_10: > > > return 2500000; > > > > > > case SPEED_100: > > > return 25000000; > > > > > > case SPEED_1000: > > > return 125000000; > > > > > > default: > > > return -ENVAL; > > > } > > > } > > > > > > Then, this can become: > > > > > > long tx_clk_rate; > > > > > > ... > > > > > > tx_clk_rate = stmmac_get_rgmii_clock(speed); > > > if (tx_clk_rate < 0) { > > > dev_err(gmac->dev, "Unsupported/Invalid speed: %d\n", speed); > > > return; > > > } > > > > > > ret = clk_set_rate(gmac->tx_clk, tx_clk_rate); > > > > Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > > Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com> > > But of an unusual commit message, but it does explain the "Why?". I will reformulate description in v4. > > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Thanks. > > > > +/** > > + * rgmii_clock - map link speed to the clock rate > > + * @speed: link speed value > > + * > > + * Description: maps RGMII supported link speeds > > + * into the clock rates. > > + */ > > A Returns: line would be nice. will add it in v4. Thanks /Jan
diff --git a/include/linux/phy.h b/include/linux/phy.h index a98bc91a0cde..7f6d9e7533ce 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -298,6 +298,27 @@ static inline const char *phy_modes(phy_interface_t interface) } } +/** + * rgmii_clock - map link speed to the clock rate + * @speed: link speed value + * + * Description: maps RGMII supported link speeds + * into the clock rates. + */ +static inline long rgmii_clock(int speed) +{ + switch (speed) { + case SPEED_10: + return 2500000; + case SPEED_100: + return 25000000; + case SPEED_1000: + return 125000000; + default: + return -EINVAL; + } +} + #define PHY_INIT_TIMEOUT 100000 #define PHY_FORCE_TIMEOUT 10