Re: [PATCH net-next v2 3/3] net: stmmac: Add glue layer for Spacemit K3 SoC
From: Inochi Amaoto <inochiama@gmail.com>
Date: 2026-01-21 22:37:24
Also in:
linux-arm-kernel, linux-devicetree, linux-riscv, lkml, spacemit
On Wed, Jan 21, 2026 at 02:45:24PM +0100, Andrew Lunn wrote:
On Wed, Jan 21, 2026 at 12:05:30PM +0000, Russell King (Oracle) wrote:quoted
On Wed, Jan 21, 2026 at 03:13:11PM +0800, Inochi Amaoto wrote:quoted
+ 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?quoted
+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.
Great, I will remove this call and pass the phy_interface. Regards, Inochi