On Sun, Feb 16, 2025 at 06:07:05PM +0100, Andrew Lunn wrote: > On Sun, Feb 16, 2025 at 03:47:18PM +0000, Russell King (Oracle) wrote: > > On Sun, Feb 16, 2025 at 08:39:51PM +0800, Inochi Amaoto wrote: > > > +static void sophgo_dwmac_fix_mac_speed(void *priv, unsigned int speed, unsigned int mode) > > > +{ > > > + struct sophgo_dwmac *dwmac = priv; > > > + long rate; > > > + int ret; > > > + > > > + rate = rgmii_clock(speed); > > > + if (rate < 0) { > > > + dev_err(dwmac->dev, "invalid speed %u\n", speed); > > > + return; > > > + } > > > + > > > + ret = clk_set_rate(dwmac->clk_tx, rate); > > > + if (ret) > > > + dev_err(dwmac->dev, "failed to set tx rate %ld: %pe\n", > > > + rate, ERR_PTR(ret)); > > > +} > > > > There are a bunch of other platform support in stmmac that are doing > > the same: > > > > dwmac-s32.c is virtually identical > > dwmac-imx.c does the same, although has some pre-conditions > > dwmac-dwc-qos-eth.c is virually identical but the two steps are split > > across a bunch of register writes > > dwmac-starfive.c looks the same > > dwmac-rk.c also > > dwmac-intel-plat.c also > > > > So, I wonder whether either this should be a helper, or whether core > > code should be doing this. Maybe something to look at as a part of > > this patch submission? > > Inochi, please could you look at the datasheet for this IP. Is the > transmit clock a part of the IP? I checked the ip databook and found it is part of the RGMII clock. Also, I found RGMII also contains a rx clock following this quirk. > Can we expect all devices integrating this IP to have such a clock? > That would be a good indicator the clock handling should be moved > into the core. > I am not sure all whether devices has this clock, but it appears in the databook. So I think it is possible to move this in the core so any platform with these clock can reuse it. Regards, Inochi