[PATCH net-next v2 3/3] net: stmmac: Add glue layer for Spacemit K3 SoC
Andrew Lunn
andrew at lunn.ch
Wed Jan 21 05:45:24 PST 2026
On Wed, Jan 21, 2026 at 12:05:30PM +0000, Russell King (Oracle) wrote:
> On Wed, Jan 21, 2026 at 03:13:11PM +0800, Inochi Amaoto wrote:
> > + mask = RGMII_RX_DLINE_STEP | RGMII_TX_DLINE_CODE | RGMII_TX_DLINE_EN |
> > + RGMII_TX_DLINE_STEP | RGMII_RX_DLINE_CODE | RGMII_RX_DLINE_EN;
> > + val = FIELD_PREP(RGMII_TX_DLINE_STEP, tx_config) |
> > + FIELD_PREP(RGMII_TX_DLINE_CODE, tx_code) | RGMII_TX_DLINE_EN |
> > + FIELD_PREP(RGMII_RX_DLINE_STEP, rx_config) |
> > + FIELD_PREP(RGMII_RX_DLINE_CODE, rx_code) | RGMII_RX_DLINE_EN;
>
> So your reply where you basically stated that all the RGMII.*DLINE.*
> constants here should be the same was nonsense. How can we trust your
> replies?
>
> > +static int spacemit_dwmac_fix_delay(struct plat_stmmacenet_data *plat_dat,
> > + struct regmap *apmu,
> > + unsigned int dline_offset,
> > + unsigned int tx_delay, unsigned int rx_delay)
> > +{
> > + bool mac_rxid = rx_delay != 0;
> > + bool mac_txid = tx_delay != 0;
> > + unsigned int rx_config = 0;
> > + unsigned int tx_config = 0;
> > + int rx_code;
> > + int tx_code;
> > +
> > + plat_dat->phy_interface = phy_fix_phy_mode_for_mac_delays(plat_dat->phy_interface,
> > + mac_txid,
> > + mac_rxid);
>
> Maybe Andrew can confirm, but this function was to fix up existing
> broken DT, and shouldn't be used by brand new drivers.
Hi Russell, thanks for pointing this out.
This function should not be used in this case. MAC drivers in general
only add small delays, in order to do fine tuning. The PHY adds the
2ns delay. There are however some MACs who cannot disable their 2ns
delay, or have historically been broken, and add 2ns delay. In such
cases, the phy_interface passed to the PHY needs masking, to indicate
the PHY should not add the 2ns delays. That is what this function
does.
Please don't call it. Pass phy_interface as is to the PHY.
Andrew
More information about the linux-riscv
mailing list