All of lore.kernel.org
 help / color / mirror / Atom feed
From: fabrizio.castro@bp.renesas.com (Fabrizio Castro)
To: cip-dev@lists.cip-project.org
Subject: [cip-dev] [PATCH 4.19.y 30/60] ravb: Avoid unsupported internal delay mode for R-Car E3/D3
Date: Wed, 28 Aug 2019 12:03:01 +0100	[thread overview]
Message-ID: <1566990211-24785-31-git-send-email-fabrizio.castro@bp.renesas.com> (raw)
In-Reply-To: <1566990211-24785-1-git-send-email-fabrizio.castro@bp.renesas.com>

From: Simon Horman <horms+renesas@verge.net.au>

commit 0a5d329ffd1be394e3e4176eb11ca51dfde03c40 upstream.

According to the R-Car Gen3 Hardware Manual Rev 1.50 of Nov 30, 2018, the
TX clock internal delay mode isn't supported on R-Car E3 (r8a77990) or D3
(r8a77995). And by extension it is also not supported by RZ/G2E (r9a774c0).

This matches all ES versions of the affected SoCs as it is
not clear if this problem will be resolved in newer chips.
This can be revisited, as necessary.

This patch does not error-out if PHY_INTERFACE_MODE_RGMII_ID or
PHY_INTERFACE_MODE_RGMII_TXID are used on SoCs where TX clock delay
mode is not supported as there is a risk of introducing a regression
when used in conjunction with older DT blobs present in the field.
Rather, a warning is logged in such cases.

Based on work by Kazuya Mizuguchi.

Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com>
---
 drivers/net/ethernet/renesas/ravb_main.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 037a0ad..7ed70b7 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1980,6 +1980,13 @@ static void ravb_set_config_mode(struct net_device *ndev)
 	}
 }
 
+static const struct soc_device_attribute ravb_delay_mode_quirk_match[] = {
+	{ .soc_id = "r8a774c0" },
+	{ .soc_id = "r8a77990" },
+	{ .soc_id = "r8a77995" },
+	{ /* sentinel */ }
+};
+
 /* Set tx and rx clock internal delay modes */
 static void ravb_set_delay_mode(struct net_device *ndev)
 {
@@ -1991,8 +1998,12 @@ static void ravb_set_delay_mode(struct net_device *ndev)
 		set |= APSR_DM_RDM;
 
 	if (priv->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||
-	    priv->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID)
-		set |= APSR_DM_TDM;
+	    priv->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID) {
+		if (!WARN(soc_device_match(ravb_delay_mode_quirk_match),
+			  "phy-mode %s requires TX clock internal delay mode which is not supported by this hardware revision. Please update device tree",
+			  phy_modes(priv->phy_interface)))
+			set |= APSR_DM_TDM;
+	}
 
 	ravb_modify(ndev, APSR, APSR_DM, set);
 }
-- 
2.7.4

  parent reply	other threads:[~2019-08-28 11:03 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-28 11:02 [cip-dev] [PATCH 4.19.y 00/60] Add basic RZ/G2M SoC support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 01/60] dt-bindings: can: rcar_can: Add r8a774a1 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 02/60] dt-bindings: can: rcar_can: Fix RZ/G2 CAN clocks Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 03/60] dt-bindings: can: rcar_can: Add r8a774c0 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 04/60] dt-bindings: rcar-gen3-phy-usb3: Add r8a774a1 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 05/60] dt-bindings: usb-xhci: " Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 06/60] dt-bindings: usb-xhci: Add r8a774c0 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 07/60] dt-bindings: usb: renesas_usbhs: Add r8a774a1 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 08/60] dt-bindings: thermal: rcar-gen3-thermal: " Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 09/60] dt-bindings: dmaengine: usb-dmac: Add binding for r8a774a1 Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 10/60] thermal: rcar_gen3_thermal: Add r8a774a1 support Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 11/60] gpio: rcar: reference device instead of platform device Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 12/60] gpio: rcar: select General Output Register to set output states Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 13/60] gpio: rcar: Pedantic formatting Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 14/60] clk: renesas: cpg-mssr: Use genpd of_node instead of local copy Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 15/60] clk: renesas: cpg-mssr: Remove error messages on out-of-memory conditions Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 16/60] soc: renesas: rcar-sysc: Remove rcar_sysc_power_{down, up}() helpers Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 17/60] soc: renesas: rcar-sysc: Merge PM Domain registration and linking Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 18/60] soc: renesas: rcar-sysc: Fix power domain control after system resume Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 19/60] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 20/60] serial: sh-sci: Terminate TX DMA during buffer flushing Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 21/60] serial: sh-sci: Fix crash in rx_timer_fn() on PIO fallback Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 22/60] serial: sh-sci: Extract sci_dma_rx_chan_invalidate() Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 23/60] serial: sh-sci: Extract sci_dma_rx_reenable_irq() Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 24/60] serial: sh-sci: Fix fallback to PIO in sci_dma_rx_complete() Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 25/60] dmaengine: rcar-dmac: set scatter/gather max segment size Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 26/60] dmaengine: rcar-dmac: Update copyright information Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 27/60] dmaengine: rcar-dmac: Reject zero-length slave DMA requests Fabrizio Castro
2019-08-28 11:02 ` [cip-dev] [PATCH 4.19.y 28/60] spi: sh-msiof: fix deferred probing Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 29/60] ravb: remove tx buffer addr 4byte alilgnment restriction for R-Car Gen3 Fabrizio Castro
2019-08-28 11:03 ` Fabrizio Castro [this message]
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 31/60] mmc: renesas_sdhi_internal_dmac: set scatter/gather max segment size Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 32/60] arm64: dts: renesas: Initial r8a774a1 SoC device tree Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 33/60] arm64: dts: renesas: r8a774a1: Add SYS-DMAC controller nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 34/60] arm64: dts: renesas: r8a774a1: Add SCIF and HSCIF nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 35/60] arm64: dts: renesas: r8a774a1: Add INTC-EX device node Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 36/60] arm64: dts: renesas: r8a774a1: Add Ethernet AVB node Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 37/60] arm64: dts: renesas: r8a774a1: Add RWDT node Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 38/60] arm64: dts: renesas: r8a774a1: Add pinctrl device node Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 39/60] arm64: dts: renesas: r8a774a1: Add GPIO device nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 40/60] arm64: dts: renesas: r8a774a1: Add SDHI nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 41/60] arm64: dts: renesas: r8a774a1: Add I2C and IIC-DVFS support Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 42/60] arm64: dts: renesas: r8a774a1: Add RZ/G2M thermal support Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 43/60] arm64: dts: renesas: r8a774a1: Add IPMMU device nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 44/60] arm64: dts: renesas: r8a774a1: Add all MSIOF nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 45/60] arm64: dts: renesas: r8a774a1: Add Cortex-A53 CPU cores Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 46/60] arm64: dts: renesas: r8a774a1: Add PWM device nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 47/60] arm64: dts: renesas: r8a774a1: Add audio support Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 48/60] arm64: dts: renesas: r8a774a1: Add FCPF and FCPV instances Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 49/60] arm64: dts: renesas: r8a774a1: Add USB2.0 phy and host(EHCI/OHCI) device nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 50/60] arm64: dts: renesas: r8a774a1: Add USB-DMAC and HSUSB " Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 51/60] arm64: dts: renesas: r8a774a1: Add USB3.0 " Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 52/60] arm64: dts: renesas: Fix whitespace around assignments Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 53/60] arm64: dts: renesas: Remove unneeded status from thermal nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 54/60] arm64: dts: renesas: r8a774a1: Add CAN nodes Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 55/60] arm64: dts: renesas: r8a774a1: Replace power magic numbers Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 56/60] arm64: dts: renesas: r8a774a1: Replace clock " Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 57/60] arm64: dts: renesas: r8a774a1: Enable DMA for SCIF2 Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 58/60] arm64: dts: renesas: r8a774a1: Fix hsusb reg size Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 59/60] arm64: dts: Remove inconsistent use of 'arm, armv8' compatible string Fabrizio Castro
2019-08-28 11:03 ` [cip-dev] [PATCH 4.19.y 60/60] arm64: dts: renesas: r8a774a1: Add clkp2 clock to CAN nodes Fabrizio Castro
2019-08-28 13:29 ` [cip-dev] [PATCH 4.19.y 00/60] Add basic RZ/G2M SoC support Fabrizio Castro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1566990211-24785-31-git-send-email-fabrizio.castro@bp.renesas.com \
    --to=fabrizio.castro@bp.renesas.com \
    --cc=cip-dev@lists.cip-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.