[PATCH v1 3/3] dt-bindings: net: sun8i-emac: Add AC300 EMAC1 nvmem phy selection
Andrew Lunn
andrew at lunn.ch
Mon May 26 15:38:15 PDT 2025
On Mon, May 26, 2025 at 03:32:03PM -0600, James Hilliard wrote:
> On Mon, May 26, 2025 at 1:36 PM Andrew Lunn <andrew at lunn.ch> wrote:
> >
> > > + phy-mode = "rgmii";
> >
> > Does the PCB have extra long clock lines?
>
> I'm not sure, it's a copackaged(maybe on-die is the wrong terminology)
> PHY I think so I assume the clock lines are internal, in the device specific
> dts we set something like this on the emac1 node:
> allwinner,rx-delay-ps = <3100>;
> allwinner,tx-delay-ps = <700>;
Those values are just weird. The RGMII delay should be 2000ps. 3100 is
way too big, and 700 is way too small.
I think phy-mode = "internal" would be better, and just hard code the
delays either in the MAC or PHY driver.
Thanks for the link to the old thread, which was 5 years
ago. Hopefully since then, a bit more has been learnt. Quickly reading
through that thread, i don't think an MFD is not the correct solution.
In the last 5 years we have had to deal with more chicken/egg problems
with PHYs. It has now become pretty much standard practice to put the
ID values in DT, to get the driver probed when the device does not
respond on the bus. The DT node can then use phandles to the reset and
clock controller to configure them as needed, the core will probably
do that. I2C is a bit messier, you probably want a phandle pointing to
the i2c_adapter, so you can use i2c_transfer() on it in the probe()
function.
Andrew
More information about the linux-arm-kernel
mailing list