Hi Andrew, Thank you for your reply. > > phy-mode = "rgmii"; > > phy-handle = <ðphy2>; > > > > + tx-internal-delay-ps = <8>; > > + rx-internal-delay-ps = <4>; > > + > > Ideally you want: > > phy-mode = "rgmii-id"; > tx-internal-delay-ps = <0>; > rx-internal-delay-ps = <0>; > > Since 'rgmii-id' correctly describes the hardware. I still confuse about ethernet-controller.yaml. It lists 'rgmi', 'rgmii-rxid', 'rgmii-txid' and 'rgmii-id'. ethernet-controller.yaml ... # RX and TX delays are added by the MAC when required - rgmii # RGMII with internal RX and TX delays provided by the PHY, # the MAC should not add the RX or TX delays in this case - rgmii-id # RGMII with internal RX delay provided by the PHY, the MAC # should not add an RX delay in this case - rgmii-rxid # RGMII with internal TX delay provided by the PHY, the MAC # should not add an TX delay in this case - rgmii-txid ... It seems if MAC has ability to add delay in MAC internal, driver can use these values to describes the hardware design. I know this topic had been discussed. I thought for a while to find a solution, but I cannot still understand why 'rgmii-id' is correct for HW? Thanks, Jacky