From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: barebox@lists.infradead.org
Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
Subject: [PATCH v2 14/18] PCI: imx6: Do not wait for speed change on i.MX7
Date: Fri, 11 Jan 2019 21:55:20 -0800 [thread overview]
Message-ID: <20190112055524.7733-15-andrew.smirnov@gmail.com> (raw)
In-Reply-To: <20190112055524.7733-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 ce68b007ab..d121a20ce1 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
next prev parent reply other threads:[~2019-01-12 5:56 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-12 5:55 [PATCH v2 00/18] PCIe support for i.MX7 Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 01/18] regulator: Convert drivers to use struct regulator_desc Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 02/18] regulator: Port basic regmap regulator functions Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 03/18] regulator: Add support for setting regulator's voltage Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 04/18] base: driver: Drop redundant list_empty() check Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 05/18] base: Port driver_deferred_probe_check_state() from Linux Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 06/18] regulator: Add primitive support for deferred probe Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 07/18] regulator: Port ANATOP driver from Linux Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 08/18] drivers: base: Port power management code " Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 09/18] soc: imx: Add GPCv2 power gating driver Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 10/18] reset: Add i.MX7 SRC reset driver Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 11/18] reset: Mark local functions as static Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 12/18] PCI: imx6: Add code to support i.MX7D Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 13/18] PCI: imx6: Allow probe deferral by reset GPIO Andrey Smirnov
2019-01-12 5:55 ` Andrey Smirnov [this message]
2019-01-12 5:55 ` [PATCH v2 15/18] PCI: imx6: Do not switch speed if Gen2 is disabled Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 16/18] PCI: imx6: Fix spelling mistake: "contol" -> "control" Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 17/18] PCI: imx6: Drop unnecessary root_bus_nr setting Andrey Smirnov
2019-01-12 5:55 ` [PATCH v2 18/18] PCI: imx6: Port imx6_pcie_ltssm_enable() Andrey Smirnov
2019-01-12 10:48 ` [PATCH v2 00/18] PCIe support for i.MX7 Sam Ravnborg
2019-01-12 19:49 ` Andrey Smirnov
2019-01-12 20:10 ` Sam Ravnborg
2019-01-15 7:22 ` Sascha Hauer
2019-01-15 20:16 ` 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=20190112055524.7733-15-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