Hi George,
We figured out a solution for this. If you still have PCIE problems, you can apply the following patch:
diff -ruN a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c
--- a/drivers/pci/host/pci-imx6.c 2016-01-25 22:42:52.237055875 -0600
+++ b/drivers/pci/host/pci-imx6.c 2016-02-10 20:32:56.552845334 -0600
@@ -342,7 +342,11 @@
struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
if (gpio_is_valid(imx6_pcie->power_on_gpio))
+ {
+ mdelay(50); //Wait 50 ms
gpio_set_value(imx6_pcie->power_on_gpio, 1);
+ mdelay(50); //Wait 50 ms
+ }
request_bus_freq(BUS_FREQ_HIGH);
ret = clk_prepare_enable(imx6_pcie->pcie_phy);
@@ -538,7 +541,7 @@
static int imx6_pcie_wait_for_link(struct pcie_port *pp)
{
- int count = 2000;
+ int count = 10000;
while (!dw_pcie_link_up(pp)) {
udelay(100);
@@ -605,7 +608,7 @@
tmp |= PORT_LOGIC_SPEED_CHANGE;
writel(tmp, pp->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL);
- count = 200;
+ count = 1000;
while (count--) {
tmp = readl(pp->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL);
/* Test if the speed change finished. */
Hope it is useful for you.
Best Regards,
Valentina