[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190408082928.22840-1-horms+renesas@verge.net.au>
Date: Mon, 8 Apr 2019 10:29:28 +0200
From: Simon Horman <horms+renesas@...ge.net.au>
To: netdev@...r.kernel.org, linux-renesas-soc@...r.kernel.org
Cc: Magnus Damm <magnus.damm@...il.com>,
Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>,
Wolfram Sang <wsa+renesas@...g-engineering.com>,
Sergei Shtylyov <sergei.shtylyov@...entembedded.com>,
Simon Horman <horms+renesas@...ge.net.au>
Subject: [PATCH/RFC net-next] ravb: Avoid unsupported internal delay mode for R-Car E3/D3
According to the R-Car Gen3 Hardware Manual Errata for Rev 1.00 of
August 24, 2018, the TX clock internal delay mode isn't supported
on R-Car E3 (r8a77990) and D3 (r8a77995).
Based on work by Kazuya Mizuguchi.
Signed-off-by: Simon Horman <horms+renesas@...ge.net.au>
---
drivers/net/ethernet/renesas/ravb_main.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 4f648394e645..be8af4a382cf 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1969,6 +1969,12 @@ static void ravb_set_config_mode(struct net_device *ndev)
}
}
+static const struct soc_device_attribute ravb_delay_mode_quirk_match[] = {
+ { .soc_id = "r8a77990", .revision = "ES1.*" },
+ { .soc_id = "r8a77995", .revision = "ES1.*" },
+ { /* sentinel */ }
+};
+
/* Set tx and rx clock internal delay modes */
static void ravb_set_delay_mode(struct net_device *ndev)
{
@@ -1979,8 +1985,9 @@ static void ravb_set_delay_mode(struct net_device *ndev)
priv->phy_interface == PHY_INTERFACE_MODE_RGMII_RXID)
set |= APSR_DM_RDM;
- if (priv->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||
- priv->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID)
+ if ((priv->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||
+ priv->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID) &&
+ !soc_device_match(ravb_delay_mode_quirk_match))
set |= APSR_DM_TDM;
ravb_modify(ndev, APSR, APSR_DM, set);
--
2.11.0
Powered by blists - more mailing lists