mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: barebox@lists.infradead.org
Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
Subject: [PATCH 17/21] PCI: imx6: Do not wait for speed change on i.MX7
Date: Tue,  8 Jan 2019 23:12:06 -0800	[thread overview]
Message-ID: <20190109071210.18896-18-andrew.smirnov@gmail.com> (raw)
In-Reply-To: <20190109071210.18896-1-andrew.smirnov@gmail.com>

Port of a Linux commit e6dcd87fff69a9d454104b65569074855cf95b1e

  As can be seen from [1]:

    "...the different behavior between iMX6Q PCIe and iMX7D PCIe maybe caused
    by the different controller version.

    Regarding to the DOC description, the DIRECT_SPEED_CHANGE should be
    cleared after the speed change from GEN1 to GEN2. Unfortunately, when
    GEN1 device is used, the behavior is not documented.

    So, IC design guys run the simulation and find out the following
    behaviors:

       1. DIRECT_SPEED_CHANGE will be cleared in 7D after speed change
          from GEN1 to GEN2. This matches doc’s description

       2. set MAX link speed(PCIE_CAP_TARGET_LINK_SPEED=0x01) as GEN1 and
          re-run the simulation, DIRECT_SPEED_CHANGE will not be cleared;
          remain as 1, this matches your result, but function test is
          passed, so this bit should not affect the normal PCIe function."

  imx6_pcie_wait_for_speed_change() will report false failures for Gen1 ->
  Gen1 speed transition, so avoid doing that check and just rely on
  imx6_pcie_wait_for_link() only.

  [1] https://community.nxp.com/message/867943

  Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
  Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
  Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
  Cc: yurovsky@gmail.com
  Cc: Fabio Estevam <fabio.estevam@nxp.com>
  Cc: Dong Aisheng <dongas86@gmail.com>
  Cc: linux-arm-kernel@lists.infradead.org

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
---
 drivers/pci/pci-imx6.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/pci-imx6.c b/drivers/pci/pci-imx6.c
index 517c6bef8..db7b10bc9 100644
--- a/drivers/pci/pci-imx6.c
+++ b/drivers/pci/pci-imx6.c
@@ -508,10 +508,21 @@ static int imx6_pcie_establish_link(struct imx6_pcie *imx6_pcie)
 	tmp |= PORT_LOGIC_SPEED_CHANGE;
 	dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp);
 
-	ret = imx6_pcie_wait_for_speed_change(imx6_pcie);
-	if (ret) {
-		dev_err(dev, "Failed to bring link up!\n");
-		goto err_reset_phy;
+	if (imx6_pcie->variant != IMX7D) {
+		/*
+		 * On i.MX7, DIRECT_SPEED_CHANGE behaves differently
+		 * from i.MX6 family when no link speed transition
+		 * occurs and we go Gen1 -> yep, Gen1. The difference
+		 * is that, in such case, it will not be cleared by HW
+		 * which will cause the following code to report false
+		 * failure.
+		 */
+
+		ret = imx6_pcie_wait_for_speed_change(imx6_pcie);
+		if (ret) {
+			dev_err(dev, "Failed to bring link up!\n");
+			goto err_reset_phy;
+		}
 	}
 
 	/* Make sure link training is finished as well! */
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2019-01-09  7:13 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-09  7:11 [PATCH 00/21] PCIe support for i.MX7 Andrey Smirnov
2019-01-09  7:11 ` [PATCH 01/21] regulator: Convert drivers to use struct regulator_desc Andrey Smirnov
2019-01-09  7:11 ` [PATCH 02/21] regulator: Port basic regmap regulator functions Andrey Smirnov
2019-01-09  7:11 ` [PATCH 03/21] regulator: Add support for setting regulator's voltage Andrey Smirnov
2019-01-09  7:11 ` [PATCH 04/21] base: driver: Drop redundant list_empty() check Andrey Smirnov
2019-01-09  7:11 ` [PATCH 05/21] base: Port driver_deferred_probe_check_state() from Linux Andrey Smirnov
2019-01-09  7:11 ` [PATCH 06/21] regulator: Add primitive support for deferred probe Andrey Smirnov
2019-01-09  7:11 ` [PATCH 07/21] regulator: Port ANATOP driver from Linux Andrey Smirnov
2019-01-09  7:11 ` [PATCH 08/21] drivers: base: Port power management code " Andrey Smirnov
2019-01-09  7:11 ` [PATCH 09/21] soc: imx: Add GPCv2 power gating driver Andrey Smirnov
2019-01-09  7:11 ` [PATCH 10/21] soc: imx: gpcv2: fix regulator deferred probe Andrey Smirnov
2019-01-10  7:37   ` Sascha Hauer
2019-01-10 19:20     ` Andrey Smirnov
2019-01-09  7:12 ` [PATCH 11/21] soc: imx: gpcv2: correct PGC offset Andrey Smirnov
2019-01-09  7:12 ` [PATCH 12/21] reset: Add i.MX7 SRC reset driver Andrey Smirnov
2019-01-09  7:12 ` [PATCH 13/21] reset: imx7: Fix always writing bits as 0 Andrey Smirnov
2019-01-10  7:38   ` Sascha Hauer
2019-01-09  7:12 ` [PATCH 14/21] reset: Mark local functions as static Andrey Smirnov
2019-01-09  7:12 ` [PATCH 15/21] PCI: imx6: Add code to support i.MX7D Andrey Smirnov
2019-01-09  7:12 ` [PATCH 16/21] PCI: imx6: Allow probe deferral by reset GPIO Andrey Smirnov
2019-01-10  8:05   ` Sascha Hauer
2019-01-12  4:24     ` Andrey Smirnov
2019-01-09  7:12 ` Andrey Smirnov [this message]
2019-01-09  7:12 ` [PATCH 18/21] PCI: imx6: Do not switch speed if Gen2 is disabled Andrey Smirnov
2019-01-09  7:12 ` [PATCH 19/21] PCI: imx6: Fix spelling mistake: "contol" -> "control" Andrey Smirnov
2019-01-09  7:12 ` [PATCH 20/21] PCI: imx6: Drop unnecessary root_bus_nr setting Andrey Smirnov
2019-01-09  7:12 ` [PATCH 21/21] PCI: imx6: Port imx6_pcie_ltssm_enable() Andrey Smirnov

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=20190109071210.18896-18-andrew.smirnov@gmail.com \
    --to=andrew.smirnov@gmail.com \
    --cc=barebox@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox