Re: [RFC PATCH net-next v3 13/20] net: dsa: qca8k: make rgmii delay configurable
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-05-05 01:00:52
Also in:
lkml
On Wed, May 05, 2021 at 12:29:07AM +0200, Ansuel Smith wrote:
quoted hunk ↗ jump to hunk
The legacy qsdk code used a different delay instead of the max value. Qsdk use 1 ps for rx and 2 ps for tx. Make these values configurable using the standard rx/tx-internal-delay-ps ethernet binding and apply qsdk values by default. The connected gmac doesn't add any delay so no additional delay is added to tx/rx. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> --- drivers/net/dsa/qca8k.c | 51 +++++++++++++++++++++++++++++++++++++++-- drivers/net/dsa/qca8k.h | 11 +++++---- 2 files changed, 55 insertions(+), 7 deletions(-)diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 22334d416f53..cb9b44769e92 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c@@ -779,6 +779,47 @@ qca8k_setup_mdio_bus(struct qca8k_priv *priv) return 0; } +static int +qca8k_setup_of_rgmii_delay(struct qca8k_priv *priv) +{ + struct device_node *ports, *port; + u32 val; + + ports = of_get_child_by_name(priv->dev->of_node, "ports"); + if (!ports) + return -EINVAL; + + /* Assume only one port with rgmii-id mode */ + for_each_available_child_of_node(ports, port) {
Are delays global? Or per port? They really should be per port. If it
is global, one value that applies to all ports, i would not use
it. Have the PHY apply the delay, not the MAC.
Andrew