回覆: [PATCH net-next v6 3/5] net: ftgmac100: Add RGMII delay support for AST2600
Jacky Chou
jacky_chou at aspeedtech.com
Wed Mar 4 14:31:11 AEDT 2026
Hi Andrew,
Thank you for your reply.
> > On the AST2600 platform, the RGMII delay is controlled via the SCU
> > registers. The delay chain configuration differs between MAC0/1 and
> > MAC2/3, even though all four MACs use a 32-stage delay chain.
> > +------+----------+-----------+-------------+-------------+
> > | |Delay Unit|Delay Stage|TX Edge Stage|RX Edge Stage|
> > +------+----------+-----------+-------------+-------------+
> > |MAC0/1| 45 ps| 32 | 0 | 0 |
> > +------+----------+-----------+-------------+-------------+
> > |MAC2/3| 250 ps| 32 | 0 | 26 |
> > +------+----------+-----------+-------------+-------------+
> > For MAC2/3, the "no delay" condition starts from stage 26.
> > Setting the RX delay stage to 26 means that no additional RX delay is
> > applied.
> > Here lists the RX delay setting of MAC2/3 below.
> > 26 -> 0 ns, 27 -> 0.25 ns, ... , 31 -> 1.25 ns,
> > 0 -> 1.5 ns, 1 -> 1.75 ns, ... , 25 -> 7.75 ns
> >
> > Therefore, we calculate the delay stage from the rx-internal-delay-ps
> > of MAC2/3 to add 26. If the stage is equel to or bigger than 32, the
> > delay stage will be mask 0x1f to get the correct setting.
>
> Please return -EINVAL. Asking for more than 7.75ns is clearly broken.
...
tx_delay_index = DIV_ROUND_CLOSEST(rgmii_tx_delay, rgmii_delay_unit);
if (tx_delay_index >= 32) {
dev_err(dev, "The %u ps of TX delay is out of range\n",
rgmii_tx_delay);
return -EINVAL;
}
rx_delay_index = DIV_ROUND_CLOSEST(rgmii_rx_delay, rgmii_delay_unit);
if (rx_delay_index >= 32) {
dev_err(dev, "The %u ps of RX delay is out of range\n",
rgmii_rx_delay);
return -EINVAL;
}
...
These codes will calculate the ns delay to MAC delay index.
(rgmii_delay_unit is 250 ps on MAC2/3)
If set tx delay to 8 ns on MAC2 or MAC3, it will get index is 32.
It is over the delay configuration range, here will return -EINVAL.
Thanks,
Jacky
More information about the Linux-aspeed
mailing list