Add support for following phy-modes: rgmii, rgmii-id, rgmii-txid, rgmii-rxid.
This PHY has an internal RX delay of 1.2ns and no delay for TX.
The pad skew registers allow to set the total TX delay to max 1.38ns and
the total RX delay to max of 2.58ns (configurable 1.38ns + build in
1.2ns) and a minimal delay of 0ns.
According to the RGMII v1.3 specification the delay provided by PCB traces
should be between 1.5ns and 2.0ns. The RGMII v2.0 allows to provide this
delay by MAC or PHY. So, we configure this PHY to the best values we can
get by this HW: TX delay to 1.38ns (max supported value) and RX delay to
1.80ns (best calculated delay)
The phy-modes can still be fine tuned/overwritten by *-skew-ps
device tree properties described in:
Documentation/devicetree/bindings/net/micrel-ksz90x1.txt
Signed-off-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
---
changes v3:
- change delay on RX line to 1.80ns
- add warning if *-skew-ps properties are used together with not rgmii
mode.
changes v2:
- change RX_ID value from 0x1a to 0xa. The overflow bit was detected by
FIELD_PREP() build check.
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
drivers/net/phy/micrel.c | 128 +++++++++++++++++++++++++++++++++++++--
1 file changed, 123 insertions(+), 5 deletions(-)