From ecee68a928d1566e8e89e2b877dcfc66a051edac Mon Sep 17 00:00:00 2001
From: Richard Zhu <hongxing.zhu@nxp.com>
Date: Wed, 5 Jul 2017 16:22:05 +0800
Subject: [PATCH] MLK-15343-3 PCI: imx: enable the DBI_RO_WR_EN of PCIEB

The DBI_RO_WR_EN of PCIEB should be asserted,
otherwise the CLASS_DEVICE can't be configured
correctly, then PCIEB RC doesn't work at all.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 drivers/pci/dwc/pci-imx6.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/pci/dwc/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c
index 0466976070a7b3..b153d282f7053b 100644
--- a/drivers/pci/dwc/pci-imx6.c
+++ b/drivers/pci/dwc/pci-imx6.c
@@ -129,6 +129,9 @@ struct imx6_pcie {
 #define PCIE_LINK_WIDTH_SPEED_CONTROL	0x80C
 #define PORT_LOGIC_SPEED_CHANGE		(0x1 << 17)
 
+#define PCIE_MISC_CTRL			(PL_OFFSET + 0x1BC)
+#define PCIE_MISC_DBI_RO_WR_EN		BIT(0)
+
 /* PHY registers (not memory-mapped) */
 #define PCIE_PHY_RX_ASIC_OUT 0x100D
 #define PCIE_PHY_RX_ASIC_OUT_VALID	(1 << 0)
@@ -1306,6 +1309,12 @@ static int imx6_pcie_host_init(struct pcie_port *pp)
 	else
 		pp->cpu_addr_offset = 0;
 
+	if (imx6_pcie->variant == IMX8QM) {
+		if (dw_pcie_readl_dbi(pci, PCIE_MISC_CTRL) == 0)
+			dw_pcie_writel_dbi(pci, PCIE_MISC_CTRL,
+					PCIE_MISC_DBI_RO_WR_EN);
+	}
+
 	dw_pcie_setup_rc(pp);
 	ret = imx6_pcie_establish_link(imx6_pcie);
 	if (ret < 0)
-- 
GitLab