All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc
@ 2017-08-16  4:56 Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

Reordered and reformed the version 2 patch set:
The first 5 patches are used to refactor the ls-pcie host init function
and make it robust. And make ls1021a pcie reuse the ls-pcie common host
init function. Disable the bootloader configured outbound windows to avoid
conflict to outbound windows configured by dw_pcie_setup_rc().

The rest 4 patches are aim to fix the designware Class code and interrupt
Pin code fixup doesn't work issue, because they are DBI read-only registers,
so must enable the write permission before updating this register. And removed
the obsolete fixups from layerscape, qcom and artpec6 pcie drivers.

Hou Zhiqiang (9):
  PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init
  PCI: layerscape: move STRFMR1 access out from the DBI write-enable
    bracket
  PCI: layerscape: add class code and multifunction fixups for ls1021a
  PCI: layerscape: refactor the host_init function
  PCI: layerscape: Disable the outbound windows configured by bootloader
  PCI: designware: add accessors for write permission of DBI read-only
    registers
  PCI: layerscape: use accessors to enable/disable DBI RO registers'
    write permission
  PCI: designware: enable write permission before updating DBI RO
    registers
  PCI: dwc: remove the obsolete fixups

 drivers/pci/dwc/pci-layerscape.c       | 90 ++++++++++++++++++----------------
 drivers/pci/dwc/pcie-artpec6.c         |  6 ---
 drivers/pci/dwc/pcie-designware-host.c |  6 +++
 drivers/pci/dwc/pcie-designware.h      | 25 ++++++++++
 drivers/pci/dwc/pcie-qcom.c            | 17 -------
 5 files changed, 80 insertions(+), 64 deletions(-)

-- 
2.1.0.27.g96db324

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCHv3 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket Zhiqiang Hou
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

This function has been added to ls1021a host init function, but lost to
add to layerscape common host init, so other platforms still use the
setups from bootloader.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - New patch separated from 4/6 patch set v2.

 drivers/pci/dwc/pci-layerscape.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 7581490..aebefb4 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -165,6 +165,8 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	ls_pcie_drop_msg_tlp(pcie);
 	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
 
+	dw_pcie_setup_rc(pp);
+
 	return 0;
 }
 
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a Zhiqiang Hou
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

The STRFMR1 is not a DBI read-only register, so move it out from the
write-enable bracket.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - New patch separated from 3/6 patch set v2.

 drivers/pci/dwc/pci-layerscape.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index aebefb4..c169400 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -162,9 +162,10 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
 	ls_pcie_fix_class(pcie);
 	ls_pcie_clear_multifunction(pcie);
-	ls_pcie_drop_msg_tlp(pcie);
 	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
 
+	ls_pcie_drop_msg_tlp(pcie);
+
 	dw_pcie_setup_rc(pp);
 
 	return 0;
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

The current code depends on these 2 fixups implemented in bootloader,
this patch is to resolve the dependence.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - New patch

 drivers/pci/dwc/pci-layerscape.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index c169400..3aa3421 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -134,6 +134,11 @@ static int ls1021_pcie_host_init(struct pcie_port *pp)
 
 	dw_pcie_setup_rc(pp);
 
+	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
+	ls_pcie_fix_class(pcie);
+	ls_pcie_clear_multifunction(pcie);
+	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
+
 	ls_pcie_drop_msg_tlp(pcie);
 
 	return 0;
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 4/9] PCI: layerscape: refactor the host_init function
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (2 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader Zhiqiang Hou
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

Make the ls1021a's host_init reuse layerscape platform's common
host_init function.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - Separate the calling of dw_pcie_setup_rc() to 1/9 of this patch set.

 drivers/pci/dwc/pci-layerscape.c | 65 ++++++++++++++++++----------------------
 1 file changed, 29 insertions(+), 36 deletions(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 3aa3421..57b86a0 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -108,42 +108,6 @@ static int ls1021_pcie_link_up(struct dw_pcie *pci)
 	return 1;
 }
 
-static int ls1021_pcie_host_init(struct pcie_port *pp)
-{
-	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
-	struct ls_pcie *pcie = to_ls_pcie(pci);
-	struct device *dev = pci->dev;
-	u32 index[2];
-	int ret;
-
-	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
-						     "fsl,pcie-scfg");
-	if (IS_ERR(pcie->scfg)) {
-		ret = PTR_ERR(pcie->scfg);
-		dev_err(dev, "No syscfg phandle specified\n");
-		pcie->scfg = NULL;
-		return ret;
-	}
-
-	if (of_property_read_u32_array(dev->of_node,
-				       "fsl,pcie-scfg", index, 2)) {
-		pcie->scfg = NULL;
-		return -EINVAL;
-	}
-	pcie->index = index[1];
-
-	dw_pcie_setup_rc(pp);
-
-	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
-	ls_pcie_fix_class(pcie);
-	ls_pcie_clear_multifunction(pcie);
-	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
-
-	ls_pcie_drop_msg_tlp(pcie);
-
-	return 0;
-}
-
 static int ls_pcie_link_up(struct dw_pcie *pci)
 {
 	struct ls_pcie *pcie = to_ls_pcie(pci);
@@ -176,6 +140,35 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	return 0;
 }
 
+static int ls1021_pcie_host_init(struct pcie_port *pp)
+{
+	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
+	struct ls_pcie *pcie = to_ls_pcie(pci);
+	struct device *dev = pci->dev;
+	u32 index[2];
+	int ret;
+
+	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
+						     "fsl,pcie-scfg");
+	if (IS_ERR(pcie->scfg)) {
+		ret = PTR_ERR(pcie->scfg);
+		dev_err(dev, "No syscfg phandle specified\n");
+		pcie->scfg = NULL;
+		return ret;
+	}
+
+	if (of_property_read_u32_array(dev->of_node,
+				       "fsl,pcie-scfg", index, 2)) {
+		pcie->scfg = NULL;
+		return -EINVAL;
+	}
+	pcie->index = index[1];
+
+	ls_pcie_host_init(pp);
+
+	return 0;
+}
+
 static int ls_pcie_msi_host_init(struct pcie_port *pp,
 				 struct msi_controller *chip)
 {
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (3 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

Disable all the outbound windows to avoid one transaction hitting
multiple outbound windows, because the function dw_pcie_setup_rc
will re-configure the outbound windows which maybe confict with
the bootloader configured.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - No change

 drivers/pci/dwc/pci-layerscape.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 57b86a0..44a603d 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -35,6 +35,8 @@
 #define PCIE_STRFMR1		0x71c /* Symbol Timer & Filter Mask Register1 */
 #define PCIE_DBI_RO_WR_EN	0x8bc /* DBI Read-Only Write Enable Register */
 
+#define PCIE_IATU_NUM		6
+
 struct ls_pcie_drvdata {
 	u32 lut_offset;
 	u32 ltssm_shift;
@@ -91,6 +93,14 @@ static void ls_pcie_drop_msg_tlp(struct ls_pcie *pcie)
 	iowrite32(val, pci->dbi_base + PCIE_STRFMR1);
 }
 
+static void ls_pcie_disable_outbound_atus(struct ls_pcie *pcie)
+{
+	int i;
+
+	for (i = 0; i < PCIE_IATU_NUM; i++)
+		dw_pcie_disable_atu(pcie->pci, DW_PCIE_REGION_OUTBOUND, i);
+}
+
 static int ls1021_pcie_link_up(struct dw_pcie *pci)
 {
 	u32 state;
@@ -128,6 +138,13 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
 	struct ls_pcie *pcie = to_ls_pcie(pci);
 
+	/*
+	 * Disable the outbound windows configured by bootloader to avoid
+	 * one transaction hitting multiple outbound windows and the function
+	 * dw_pcie_setup_rc will re-configure the outbound windows.
+	 */
+	ls_pcie_disable_outbound_atus(pcie);
+
 	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
 	ls_pcie_fix_class(pcie);
 	ls_pcie_clear_multifunction(pcie);
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (4 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16 11:33   ` Stanimir Varbanov
  2017-08-16  4:56 ` [PATCHv3 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

The read-only DBI registers can be written over the DBI when set
the "Write to RO Registers Using DBI" (DBI_RO_WR_EN) field of the
MISC_CONTROL_1_OFF register.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - No change

 drivers/pci/dwc/pcie-designware.h | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/pci/dwc/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h
index 7366c81..0c5f874 100644
--- a/drivers/pci/dwc/pcie-designware.h
+++ b/drivers/pci/dwc/pcie-designware.h
@@ -76,6 +76,9 @@
 #define PCIE_ATU_FUNC(x)		(((x) & 0x7) << 16)
 #define PCIE_ATU_UPPER_TARGET		0x91C
 
+#define PCIE_MISC_CONTROL_1_OFF		0x8BC
+#define PCIE_DBI_RO_WR_EN		(0x1 << 0)
+
 /*
  * iATU Unroll-specific register definitions
  * From 4.80 core version the address translation will be made by unroll
@@ -279,6 +282,28 @@ static inline u32 dw_pcie_readl_dbi2(struct dw_pcie *pci, u32 reg)
 	return __dw_pcie_read_dbi(pci, pci->dbi_base2, reg, 0x4);
 }
 
+static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci)
+{
+	u32 reg;
+	u32 val;
+
+	reg = PCIE_MISC_CONTROL_1_OFF;
+	val = dw_pcie_readl_dbi(pci, reg);
+	val |= PCIE_DBI_RO_WR_EN;
+	dw_pcie_writel_dbi(pci, reg, val);
+}
+
+static inline void dw_pcie_dbi_ro_wr_dis(struct dw_pcie *pci)
+{
+	u32 reg;
+	u32 val;
+
+	reg = PCIE_MISC_CONTROL_1_OFF;
+	val = dw_pcie_readl_dbi(pci, reg);
+	val &= ~PCIE_DBI_RO_WR_EN;
+	dw_pcie_writel_dbi(pci, reg, val);
+}
+
 #ifdef CONFIG_PCIE_DW_HOST
 irqreturn_t dw_handle_msi_irq(struct pcie_port *pp);
 void dw_pcie_msi_init(struct pcie_port *pp);
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (5 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 8/9] PCI: designware: enable write permission before updating DBI RO registers Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 9/9] PCI: dwc: remove the obsolete fixups Zhiqiang Hou
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

Use the accessors instead accessing the DBI read-only write enable
register directly.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - No change

 drivers/pci/dwc/pci-layerscape.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 44a603d..0c1330f 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -33,7 +33,6 @@
 
 /* PEX Internal Configuration Registers */
 #define PCIE_STRFMR1		0x71c /* Symbol Timer & Filter Mask Register1 */
-#define PCIE_DBI_RO_WR_EN	0x8bc /* DBI Read-Only Write Enable Register */
 
 #define PCIE_IATU_NUM		6
 
@@ -145,10 +144,10 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	 */
 	ls_pcie_disable_outbound_atus(pcie);
 
-	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
+	dw_pcie_dbi_ro_wr_en(pci);
 	ls_pcie_fix_class(pcie);
 	ls_pcie_clear_multifunction(pcie);
-	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
+	dw_pcie_dbi_ro_wr_dis(pci);
 
 	ls_pcie_drop_msg_tlp(pcie);
 
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 8/9] PCI: designware: enable write permission before updating DBI RO registers
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (6 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  2017-08-16  4:56 ` [PATCHv3 9/9] PCI: dwc: remove the obsolete fixups Zhiqiang Hou
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

The existing fix doesn't actually work because the Class register and
interrupt PIN register are read-only, so it must enable the write
permission before writing the correct value to these registers.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - Add the same fixup for interrupt pin code.

 drivers/pci/dwc/pcie-designware-host.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c
index 1576211..582f5cc 100644
--- a/drivers/pci/dwc/pcie-designware-host.c
+++ b/drivers/pci/dwc/pcie-designware-host.c
@@ -597,10 +597,12 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
 	dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_1, 0x00000000);
 
 	/* setup interrupt pins */
+	dw_pcie_dbi_ro_wr_en(pci);
 	val = dw_pcie_readl_dbi(pci, PCI_INTERRUPT_LINE);
 	val &= 0xffff00ff;
 	val |= 0x00000100;
 	dw_pcie_writel_dbi(pci, PCI_INTERRUPT_LINE, val);
+	dw_pcie_dbi_ro_wr_dis(pci);
 
 	/* setup bus numbers */
 	val = dw_pcie_readl_dbi(pci, PCI_PRIMARY_BUS);
@@ -637,8 +639,12 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
 
 	dw_pcie_wr_own_conf(pp, PCI_BASE_ADDRESS_0, 4, 0);
 
+	/* Enable write permission for the DBI read-only register */
+	dw_pcie_dbi_ro_wr_en(pci);
 	/* program correct class for RC */
 	dw_pcie_wr_own_conf(pp, PCI_CLASS_DEVICE, 2, PCI_CLASS_BRIDGE_PCI);
+	/* Better disable write permission right after the update */
+	dw_pcie_dbi_ro_wr_dis(pci);
 
 	dw_pcie_rd_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, &val);
 	val |= PORT_LOGIC_SPEED_CHANGE;
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCHv3 9/9] PCI: dwc: remove the obsolete fixups
  2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (7 preceding siblings ...)
  2017-08-16  4:56 ` [PATCHv3 8/9] PCI: designware: enable write permission before updating DBI RO registers Zhiqiang Hou
@ 2017-08-16  4:56 ` Zhiqiang Hou
  8 siblings, 0 replies; 16+ messages in thread
From: Zhiqiang Hou @ 2017-08-16  4:56 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, svarbanov, niklas.cassel,
	jesper.nilsson, Hou Zhiqiang

From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>

Now, the dw_pcie_setup_rc() works well, so remove the obsolete fixups:
Remove the Class field fix code from layerscape pcie driver.
Remove the implement of .rd_own_conf() from qcom pcie driver, which
is aim to correct the Class code value read from the config space.
Remove the line to enable write permission of DBI RO register from
artpec6 pcie driver.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V3:
 - Add the removing of the obsolete fixups from qcom and artpec6 pcie driver

 drivers/pci/dwc/pci-layerscape.c |  9 ---------
 drivers/pci/dwc/pcie-artpec6.c   |  6 ------
 drivers/pci/dwc/pcie-qcom.c      | 17 -----------------
 3 files changed, 32 deletions(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 0c1330f..d22ed57 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -73,14 +73,6 @@ static void ls_pcie_clear_multifunction(struct ls_pcie *pcie)
 	iowrite8(PCI_HEADER_TYPE_BRIDGE, pci->dbi_base + PCI_HEADER_TYPE);
 }
 
-/* Fix class value */
-static void ls_pcie_fix_class(struct ls_pcie *pcie)
-{
-	struct dw_pcie *pci = pcie->pci;
-
-	iowrite16(PCI_CLASS_BRIDGE_PCI, pci->dbi_base + PCI_CLASS_DEVICE);
-}
-
 /* Drop MSG TLP except for Vendor MSG */
 static void ls_pcie_drop_msg_tlp(struct ls_pcie *pcie)
 {
@@ -145,7 +137,6 @@ static int ls_pcie_host_init(struct pcie_port *pp)
 	ls_pcie_disable_outbound_atus(pcie);
 
 	dw_pcie_dbi_ro_wr_en(pci);
-	ls_pcie_fix_class(pcie);
 	ls_pcie_clear_multifunction(pcie);
 	dw_pcie_dbi_ro_wr_dis(pci);
 
diff --git a/drivers/pci/dwc/pcie-artpec6.c b/drivers/pci/dwc/pcie-artpec6.c
index 5d81f1d..d153491 100644
--- a/drivers/pci/dwc/pcie-artpec6.c
+++ b/drivers/pci/dwc/pcie-artpec6.c
@@ -141,12 +141,6 @@ static int artpec6_pcie_establish_link(struct artpec6_pcie *artpec6_pcie)
 	artpec6_pcie_writel(artpec6_pcie, PCIECFG, val);
 	usleep_range(100, 200);
 
-	/*
-	 * Enable writing to config regs. This is required as the Synopsys
-	 * driver changes the class code. That register needs DBI write enable.
-	 */
-	dw_pcie_writel_dbi(pci, MISC_CONTROL_1_OFF, DBI_RO_WR_EN);
-
 	/* setup root complex */
 	dw_pcie_setup_rc(pp);
 
diff --git a/drivers/pci/dwc/pcie-qcom.c b/drivers/pci/dwc/pcie-qcom.c
index 871e7d9..4fb3ce0d 100644
--- a/drivers/pci/dwc/pcie-qcom.c
+++ b/drivers/pci/dwc/pcie-qcom.c
@@ -948,25 +948,8 @@ static int qcom_pcie_host_init(struct pcie_port *pp)
 	return ret;
 }
 
-static int qcom_pcie_rd_own_conf(struct pcie_port *pp, int where, int size,
-				 u32 *val)
-{
-	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
-
-	/* the device class is not reported correctly from the register */
-	if (where == PCI_CLASS_REVISION && size == 4) {
-		*val = readl(pci->dbi_base + PCI_CLASS_REVISION);
-		*val &= 0xff;	/* keep revision id */
-		*val |= PCI_CLASS_BRIDGE_PCI << 16;
-		return PCIBIOS_SUCCESSFUL;
-	}
-
-	return dw_pcie_read(pci->dbi_base + where, size, val);
-}
-
 static const struct dw_pcie_host_ops qcom_pcie_dw_ops = {
 	.host_init = qcom_pcie_host_init,
-	.rd_own_conf = qcom_pcie_rd_own_conf,
 };
 
 static const struct qcom_pcie_ops ops_v0 = {
-- 
2.1.0.27.g96db324

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-16  4:56 ` [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
@ 2017-08-16 11:33   ` Stanimir Varbanov
  2017-08-17  3:03     ` Z.q. Hou
  0 siblings, 1 reply; 16+ messages in thread
From: Stanimir Varbanov @ 2017-08-16 11:33 UTC (permalink / raw)
  To: Zhiqiang Hou, linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: minghuan.lian, mingkai.hu, roy.zang, niklas.cassel, jesper.nilsson

Hi,

On 08/16/2017 07:56 AM, Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> 
> The read-only DBI registers can be written over the DBI when set
> the "Write to RO Registers Using DBI" (DBI_RO_WR_EN) field of the
> MISC_CONTROL_1_OFF register.
> 
> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> ---
> V3:
>  - No change
> 
>  drivers/pci/dwc/pcie-designware.h | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/drivers/pci/dwc/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h
> index 7366c81..0c5f874 100644
> --- a/drivers/pci/dwc/pcie-designware.h
> +++ b/drivers/pci/dwc/pcie-designware.h
> @@ -76,6 +76,9 @@
>  #define PCIE_ATU_FUNC(x)		(((x) & 0x7) << 16)
>  #define PCIE_ATU_UPPER_TARGET		0x91C
>  
> +#define PCIE_MISC_CONTROL_1_OFF		0x8BC
> +#define PCIE_DBI_RO_WR_EN		(0x1 << 0)

Does those registers exist for dwc version 4.01a?

I managed to test 6/9, 8/9 and 9/9 on qcom platform (apq8064) which has
4.01a version and it doesn't work, i.e. the PCI_CLASS_BRIDGE_PCI is not
returned when read PCI_CLASS_DEVICE offset.

> +
>  /*
>   * iATU Unroll-specific register definitions
>   * From 4.80 core version the address translation will be made by unroll
> @@ -279,6 +282,28 @@ static inline u32 dw_pcie_readl_dbi2(struct dw_pcie *pci, u32 reg)
>  	return __dw_pcie_read_dbi(pci, pci->dbi_base2, reg, 0x4);
>  }
>  
> +static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci)
> +{
> +	u32 reg;
> +	u32 val;
> +
> +	reg = PCIE_MISC_CONTROL_1_OFF;
> +	val = dw_pcie_readl_dbi(pci, reg);
> +	val |= PCIE_DBI_RO_WR_EN;
> +	dw_pcie_writel_dbi(pci, reg, val);
> +}
> +
> +static inline void dw_pcie_dbi_ro_wr_dis(struct dw_pcie *pci)
> +{
> +	u32 reg;
> +	u32 val;
> +
> +	reg = PCIE_MISC_CONTROL_1_OFF;
> +	val = dw_pcie_readl_dbi(pci, reg);
> +	val &= ~PCIE_DBI_RO_WR_EN;
> +	dw_pcie_writel_dbi(pci, reg, val);
> +}
> +
>  #ifdef CONFIG_PCIE_DW_HOST
>  irqreturn_t dw_handle_msi_irq(struct pcie_port *pp);
>  void dw_pcie_msi_init(struct pcie_port *pp);
> 

regards,
Stan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-16 11:33   ` Stanimir Varbanov
@ 2017-08-17  3:03     ` Z.q. Hou
  2017-08-17 11:25       ` Stanimir Varbanov
  2017-08-18 11:51       ` Joao Pinto
  0 siblings, 2 replies; 16+ messages in thread
From: Z.q. Hou @ 2017-08-17  3:03 UTC (permalink / raw)
  To: Stanimir Varbanov, linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: M.h. Lian, Mingkai Hu, Roy Zang, niklas.cassel, jesper.nilsson

SGkgU3RhbmltaXIsDQoNClRoYW5rcyBmb3IgeW91ciBmZWVkYmFjayENCg0KPiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTdGFuaW1pciBWYXJiYW5vdiBbbWFpbHRvOnN2YXJi
YW5vdkBtbS1zb2wuY29tXQ0KPiBTZW50OiAyMDE35bm0OOaciDE25pelIDE5OjM0DQo+IFRvOiBa
LnEuIEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+OyBsaW51eC1wY2lAdmdlci5rZXJuZWwub3Jn
Ow0KPiBiaGVsZ2Fhc0Bnb29nbGUuY29tOyBqaW5nb29oYW4xQGdtYWlsLmNvbTsgSm9hby5QaW50
b0BzeW5vcHN5cy5jb20NCj4gQ2M6IE0uaC4gTGlhbiA8bWluZ2h1YW4ubGlhbkBueHAuY29tPjsg
TWluZ2thaSBIdSA8bWluZ2thaS5odUBueHAuY29tPjsNCj4gUm95IFphbmcgPHJveS56YW5nQG54
cC5jb20+OyBuaWtsYXMuY2Fzc2VsQGF4aXMuY29tOw0KPiBqZXNwZXIubmlsc3NvbkBheGlzLmNv
bQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIdjMgNi85XSBQQ0k6IGRlc2lnbndhcmU6IGFkZCBhY2Nl
c3NvcnMgZm9yIHdyaXRlDQo+IHBlcm1pc3Npb24gb2YgREJJIHJlYWQtb25seSByZWdpc3RlcnMN
Cj4gDQo+IEhpLA0KPiANCj4gT24gMDgvMTYvMjAxNyAwNzo1NiBBTSwgWmhpcWlhbmcgSG91IHdy
b3RlOg0KPiA+IEZyb206IEhvdSBaaGlxaWFuZyA8WmhpcWlhbmcuSG91QG54cC5jb20+DQo+ID4N
Cj4gPiBUaGUgcmVhZC1vbmx5IERCSSByZWdpc3RlcnMgY2FuIGJlIHdyaXR0ZW4gb3ZlciB0aGUg
REJJIHdoZW4gc2V0IHRoZQ0KPiA+ICJXcml0ZSB0byBSTyBSZWdpc3RlcnMgVXNpbmcgREJJIiAo
REJJX1JPX1dSX0VOKSBmaWVsZCBvZiB0aGUNCj4gPiBNSVNDX0NPTlRST0xfMV9PRkYgcmVnaXN0
ZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBu
eHAuY29tPg0KPiA+IC0tLQ0KPiA+IFYzOg0KPiA+ICAtIE5vIGNoYW5nZQ0KPiA+DQo+ID4gIGRy
aXZlcnMvcGNpL2R3Yy9wY2llLWRlc2lnbndhcmUuaCB8IDI1ICsrKysrKysrKysrKysrKysrKysr
KysrKysNCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykNCj4gPg0KPiA+IGRp
ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPiBiL2RyaXZl
cnMvcGNpL2R3Yy9wY2llLWRlc2lnbndhcmUuaA0KPiA+IGluZGV4IDczNjZjODEuLjBjNWY4NzQg
MTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4g
KysrIGIvZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4gQEAgLTc2LDYgKzc2
LDkgQEANCj4gPiAgI2RlZmluZSBQQ0lFX0FUVV9GVU5DKHgpCQkoKCh4KSAmIDB4NykgPDwgMTYp
DQo+ID4gICNkZWZpbmUgUENJRV9BVFVfVVBQRVJfVEFSR0VUCQkweDkxQw0KPiA+DQo+ID4gKyNk
ZWZpbmUgUENJRV9NSVNDX0NPTlRST0xfMV9PRkYJCTB4OEJDDQo+ID4gKyNkZWZpbmUgUENJRV9E
QklfUk9fV1JfRU4JCSgweDEgPDwgMCkNCj4gDQo+IERvZXMgdGhvc2UgcmVnaXN0ZXJzIGV4aXN0
IGZvciBkd2MgdmVyc2lvbiA0LjAxYT8NCg0KSm9hbywgY2FuIHlvdSBoZWxwIHRvIGNoZWNrIHRo
aXM/DQpJIHJlZmVycmVkIHRvIERlc2lnbldhcmUgY29yZXMgUENJIEV4cHJlc3MgY29udHJvbGxl
ciBkYXRhYm9vayB2ZXJzaW9uIDQuMjFhLg0KVGhlIEZyZWVzY2FsZSBMYXllcnNjYXBlIGltcGxl
bWVudCBkb2VzIG5vdCBleHBvcnQgdGhlIHZlcnNpb24gb2YgZGVzaWdud2FyZSBQQ0llIGNvbnRy
b2xsZXIsIEkgZG9uJ3Qga25vdyB3aGljaCB2ZXJzaW9ucyBoYXZlIHRob3NlIHJlZ2lzdGVycywg
aWYgaXQgZG9lcyBub3Qgd29yayBvbiBxY29tIHBsYXRmb3JtLCBJIHdpbGwgcmVtb3ZlIHRoZSBx
Y29tIHJlbGF0ZWQgY2hhbmdlcy4NCg0KPiANCj4gSSBtYW5hZ2VkIHRvIHRlc3QgNi85LCA4Lzkg
YW5kIDkvOSBvbiBxY29tIHBsYXRmb3JtIChhcHE4MDY0KSB3aGljaCBoYXMNCj4gNC4wMWEgdmVy
c2lvbiBhbmQgaXQgZG9lc24ndCB3b3JrLCBpLmUuIHRoZSBQQ0lfQ0xBU1NfQlJJREdFX1BDSSBp
cyBub3QNCj4gcmV0dXJuZWQgd2hlbiByZWFkIFBDSV9DTEFTU19ERVZJQ0Ugb2Zmc2V0Lg0KPiAN
Cj4gPiArDQo+ID4gIC8qDQo+ID4gICAqIGlBVFUgVW5yb2xsLXNwZWNpZmljIHJlZ2lzdGVyIGRl
ZmluaXRpb25zDQo+ID4gICAqIEZyb20gNC44MCBjb3JlIHZlcnNpb24gdGhlIGFkZHJlc3MgdHJh
bnNsYXRpb24gd2lsbCBiZSBtYWRlIGJ5DQo+ID4gdW5yb2xsIEBAIC0yNzksNiArMjgyLDI4IEBA
IHN0YXRpYyBpbmxpbmUgdTMyIGR3X3BjaWVfcmVhZGxfZGJpMihzdHJ1Y3QNCj4gZHdfcGNpZSAq
cGNpLCB1MzIgcmVnKQ0KPiA+ICAJcmV0dXJuIF9fZHdfcGNpZV9yZWFkX2RiaShwY2ksIHBjaS0+
ZGJpX2Jhc2UyLCByZWcsIDB4NCk7ICB9DQo+ID4NCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGR3
X3BjaWVfZGJpX3JvX3dyX2VuKHN0cnVjdCBkd19wY2llICpwY2kpIHsNCj4gPiArCXUzMiByZWc7
DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCXJlZyA9IFBDSUVfTUlTQ19DT05UUk9MXzFf
T0ZGOw0KPiA+ICsJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCByZWcpOw0KPiA+ICsJdmFs
IHw9IFBDSUVfREJJX1JPX1dSX0VOOw0KPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgcmVn
LCB2YWwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHdfcGNpZV9k
Ymlfcm9fd3JfZGlzKHN0cnVjdCBkd19wY2llICpwY2kpIHsNCj4gPiArCXUzMiByZWc7DQo+ID4g
Kwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCXJlZyA9IFBDSUVfTUlTQ19DT05UUk9MXzFfT0ZGOw0K
PiA+ICsJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCByZWcpOw0KPiA+ICsJdmFsICY9IH5Q
Q0lFX0RCSV9ST19XUl9FTjsNCj4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIHJlZywgdmFs
KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgI2lmZGVmIENPTkZJR19QQ0lFX0RXX0hPU1QNCj4gPiAg
aXJxcmV0dXJuX3QgZHdfaGFuZGxlX21zaV9pcnEoc3RydWN0IHBjaWVfcG9ydCAqcHApOyAgdm9p
ZA0KPiA+IGR3X3BjaWVfbXNpX2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHApOw0KPiA+DQoNClRo
YW5rcywNClpoaXFpYW5nDQo=

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-17  3:03     ` Z.q. Hou
@ 2017-08-17 11:25       ` Stanimir Varbanov
  2017-08-18  5:28         ` Z.q. Hou
  2017-08-18 11:51       ` Joao Pinto
  1 sibling, 1 reply; 16+ messages in thread
From: Stanimir Varbanov @ 2017-08-17 11:25 UTC (permalink / raw)
  To: Z.q. Hou, linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: M.h. Lian, Mingkai Hu, Roy Zang, niklas.cassel, jesper.nilsson

Hi,

On 08/17/2017 06:03 AM, Z.q. Hou wrote:
> Hi Stanimir,
> 
> Thanks for your feedback!
> 
>> -----Original Message-----
>> From: Stanimir Varbanov [mailto:svarbanov@mm-sol.com]
>> Sent: 2017年8月16日 19:34
>> To: Z.q. Hou <zhiqiang.hou@nxp.com>; linux-pci@vger.kernel.org;
>> bhelgaas@google.com; jingoohan1@gmail.com; Joao.Pinto@synopsys.com
>> Cc: M.h. Lian <minghuan.lian@nxp.com>; Mingkai Hu <mingkai.hu@nxp.com>;
>> Roy Zang <roy.zang@nxp.com>; niklas.cassel@axis.com;
>> jesper.nilsson@axis.com
>> Subject: Re: [PATCHv3 6/9] PCI: designware: add accessors for write
>> permission of DBI read-only registers
>>
>> Hi,
>>
>> On 08/16/2017 07:56 AM, Zhiqiang Hou wrote:
>>> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
>>>
>>> The read-only DBI registers can be written over the DBI when set the
>>> "Write to RO Registers Using DBI" (DBI_RO_WR_EN) field of the
>>> MISC_CONTROL_1_OFF register.
>>>
>>> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
>>> ---
>>> V3:
>>>  - No change
>>>
>>>  drivers/pci/dwc/pcie-designware.h | 25 +++++++++++++++++++++++++
>>>  1 file changed, 25 insertions(+)
>>>
>>> diff --git a/drivers/pci/dwc/pcie-designware.h
>>> b/drivers/pci/dwc/pcie-designware.h
>>> index 7366c81..0c5f874 100644
>>> --- a/drivers/pci/dwc/pcie-designware.h
>>> +++ b/drivers/pci/dwc/pcie-designware.h
>>> @@ -76,6 +76,9 @@
>>>  #define PCIE_ATU_FUNC(x)		(((x) & 0x7) << 16)
>>>  #define PCIE_ATU_UPPER_TARGET		0x91C
>>>
>>> +#define PCIE_MISC_CONTROL_1_OFF		0x8BC
>>> +#define PCIE_DBI_RO_WR_EN		(0x1 << 0)
>>
>> Does those registers exist for dwc version 4.01a?
> 
> Joao, can you help to check this?
> I referred to DesignWare cores PCI Express controller databook version 4.21a.
> The Freescale Layerscape implement does not export the version of designware PCIe controller, I don't know which versions have those registers, if it does not work on qcom platform, I will remove the qcom related changes.

It won't work on two of the supported SoCs so I'd prefer to drop qcom
changes for now.

regards,
Stan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-17 11:25       ` Stanimir Varbanov
@ 2017-08-18  5:28         ` Z.q. Hou
  0 siblings, 0 replies; 16+ messages in thread
From: Z.q. Hou @ 2017-08-18  5:28 UTC (permalink / raw)
  To: Stanimir Varbanov, linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: M.h. Lian, Mingkai Hu, Roy Zang, niklas.cassel, jesper.nilsson

SGkgU3RhbmltaXIsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU3Rh
bmltaXIgVmFyYmFub3YgW21haWx0bzpzdmFyYmFub3ZAbW0tc29sLmNvbV0NCj4gU2VudDogMjAx
N+W5tDjmnIgxN+aXpSAxOToyNg0KPiBUbzogWi5xLiBIb3UgPHpoaXFpYW5nLmhvdUBueHAuY29t
PjsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gYmhlbGdhYXNAZ29vZ2xlLmNvbTsgamlu
Z29vaGFuMUBnbWFpbC5jb207IEpvYW8uUGludG9Ac3lub3BzeXMuY29tDQo+IENjOiBNLmguIExp
YW4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47IE1pbmdrYWkgSHUgPG1pbmdrYWkuaHVAbnhwLmNv
bT47DQo+IFJveSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsgbmlrbGFzLmNhc3NlbEBheGlzLmNv
bTsNCj4gamVzcGVyLm5pbHNzb25AYXhpcy5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSHYzIDYv
OV0gUENJOiBkZXNpZ253YXJlOiBhZGQgYWNjZXNzb3JzIGZvciB3cml0ZQ0KPiBwZXJtaXNzaW9u
IG9mIERCSSByZWFkLW9ubHkgcmVnaXN0ZXJzDQo+IA0KPiBIaSwNCj4gDQo+IE9uIDA4LzE3LzIw
MTcgMDY6MDMgQU0sIFoucS4gSG91IHdyb3RlOg0KPiA+IEhpIFN0YW5pbWlyLA0KPiA+DQo+ID4g
VGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn
ZS0tLS0tDQo+ID4+IEZyb206IFN0YW5pbWlyIFZhcmJhbm92IFttYWlsdG86c3ZhcmJhbm92QG1t
LXNvbC5jb21dDQo+ID4+IFNlbnQ6IDIwMTflubQ45pyIMTbml6UgMTk6MzQNCj4gPj4gVG86IFou
cS4gSG91IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT47IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7
DQo+ID4+IGJoZWxnYWFzQGdvb2dsZS5jb207IGppbmdvb2hhbjFAZ21haWwuY29tOw0KPiBKb2Fv
LlBpbnRvQHN5bm9wc3lzLmNvbQ0KPiA+PiBDYzogTS5oLiBMaWFuIDxtaW5naHVhbi5saWFuQG54
cC5jb20+OyBNaW5na2FpIEh1DQo+ID4+IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZyA8
cm95LnphbmdAbnhwLmNvbT47DQo+ID4+IG5pa2xhcy5jYXNzZWxAYXhpcy5jb207IGplc3Blci5u
aWxzc29uQGF4aXMuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0h2MyA2LzldIFBDSTogZGVz
aWdud2FyZTogYWRkIGFjY2Vzc29ycyBmb3Igd3JpdGUNCj4gPj4gcGVybWlzc2lvbiBvZiBEQkkg
cmVhZC1vbmx5IHJlZ2lzdGVycw0KPiA+Pg0KPiA+PiBIaSwNCj4gPj4NCj4gPj4gT24gMDgvMTYv
MjAxNyAwNzo1NiBBTSwgWmhpcWlhbmcgSG91IHdyb3RlOg0KPiA+Pj4gRnJvbTogSG91IFpoaXFp
YW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPj4+DQo+ID4+PiBUaGUgcmVhZC1vbmx5IERC
SSByZWdpc3RlcnMgY2FuIGJlIHdyaXR0ZW4gb3ZlciB0aGUgREJJIHdoZW4gc2V0IHRoZQ0KPiA+
Pj4gIldyaXRlIHRvIFJPIFJlZ2lzdGVycyBVc2luZyBEQkkiIChEQklfUk9fV1JfRU4pIGZpZWxk
IG9mIHRoZQ0KPiA+Pj4gTUlTQ19DT05UUk9MXzFfT0ZGIHJlZ2lzdGVyLg0KPiA+Pj4NCj4gPj4+
IFNpZ25lZC1vZmYtYnk6IEhvdSBaaGlxaWFuZyA8WmhpcWlhbmcuSG91QG54cC5jb20+DQo+ID4+
PiAtLS0NCj4gPj4+IFYzOg0KPiA+Pj4gIC0gTm8gY2hhbmdlDQo+ID4+Pg0KPiA+Pj4gIGRyaXZl
cnMvcGNpL2R3Yy9wY2llLWRlc2lnbndhcmUuaCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysr
KysNCj4gPj4+ICAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4NCj4gPj4+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPj4+IGIv
ZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4+PiBpbmRleCA3MzY2YzgxLi4w
YzVmODc0IDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2Fy
ZS5oDQo+ID4+PiArKysgYi9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPj4+
IEBAIC03Niw2ICs3Niw5IEBADQo+ID4+PiAgI2RlZmluZSBQQ0lFX0FUVV9GVU5DKHgpCQkoKCh4
KSAmIDB4NykgPDwgMTYpDQo+ID4+PiAgI2RlZmluZSBQQ0lFX0FUVV9VUFBFUl9UQVJHRVQJCTB4
OTFDDQo+ID4+Pg0KPiA+Pj4gKyNkZWZpbmUgUENJRV9NSVNDX0NPTlRST0xfMV9PRkYJCTB4OEJD
DQo+ID4+PiArI2RlZmluZSBQQ0lFX0RCSV9ST19XUl9FTgkJKDB4MSA8PCAwKQ0KPiA+Pg0KPiA+
PiBEb2VzIHRob3NlIHJlZ2lzdGVycyBleGlzdCBmb3IgZHdjIHZlcnNpb24gNC4wMWE/DQo+ID4N
Cj4gPiBKb2FvLCBjYW4geW91IGhlbHAgdG8gY2hlY2sgdGhpcz8NCj4gPiBJIHJlZmVycmVkIHRv
IERlc2lnbldhcmUgY29yZXMgUENJIEV4cHJlc3MgY29udHJvbGxlciBkYXRhYm9vayB2ZXJzaW9u
DQo+IDQuMjFhLg0KPiA+IFRoZSBGcmVlc2NhbGUgTGF5ZXJzY2FwZSBpbXBsZW1lbnQgZG9lcyBu
b3QgZXhwb3J0IHRoZSB2ZXJzaW9uIG9mDQo+IGRlc2lnbndhcmUgUENJZSBjb250cm9sbGVyLCBJ
IGRvbid0IGtub3cgd2hpY2ggdmVyc2lvbnMgaGF2ZSB0aG9zZSByZWdpc3RlcnMsDQo+IGlmIGl0
IGRvZXMgbm90IHdvcmsgb24gcWNvbSBwbGF0Zm9ybSwgSSB3aWxsIHJlbW92ZSB0aGUgcWNvbSBy
ZWxhdGVkIGNoYW5nZXMuDQo+IA0KPiBJdCB3b24ndCB3b3JrIG9uIHR3byBvZiB0aGUgc3VwcG9y
dGVkIFNvQ3Mgc28gSSdkIHByZWZlciB0byBkcm9wIHFjb20NCj4gY2hhbmdlcyBmb3Igbm93Lg0K
DQpXaWxsIGRyb3AgdGhlbSBuZXh0IHZlcnNpb24uDQoNClRoYW5rcywNClpoaXFpYW5nDQo=

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-17  3:03     ` Z.q. Hou
  2017-08-17 11:25       ` Stanimir Varbanov
@ 2017-08-18 11:51       ` Joao Pinto
  2017-08-21  3:21         ` Z.q. Hou
  1 sibling, 1 reply; 16+ messages in thread
From: Joao Pinto @ 2017-08-18 11:51 UTC (permalink / raw)
  To: Z.q. Hou, Stanimir Varbanov, linux-pci, bhelgaas, jingoohan1, Joao.Pinto
  Cc: M.h. Lian, Mingkai Hu, Roy Zang, niklas.cassel, jesper.nilsson

Hi Zhiqiang and Stanimir,

Às 4:03 AM de 8/17/2017, Z.q. Hou escreveu:
> Hi Stanimir,
> 
> Thanks for your feedback!
> 
>> -----Original Message-----
>> From: Stanimir Varbanov [mailto:svarbanov@mm-sol.com]
>> Sent: 2017年8月16日 19:34
>> To: Z.q. Hou <zhiqiang.hou@nxp.com>; linux-pci@vger.kernel.org;
>> bhelgaas@google.com; jingoohan1@gmail.com; Joao.Pinto@synopsys.com
>> Cc: M.h. Lian <minghuan.lian@nxp.com>; Mingkai Hu <mingkai.hu@nxp.com>;
>> Roy Zang <roy.zang@nxp.com>; niklas.cassel@axis.com;
>> jesper.nilsson@axis.com
>> Subject: Re: [PATCHv3 6/9] PCI: designware: add accessors for write
>> permission of DBI read-only registers
>>
>> Hi,
>>
>> On 08/16/2017 07:56 AM, Zhiqiang Hou wrote:
>>> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
>>>
>>> The read-only DBI registers can be written over the DBI when set the
>>> "Write to RO Registers Using DBI" (DBI_RO_WR_EN) field of the
>>> MISC_CONTROL_1_OFF register.
>>>
>>> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
>>> ---
>>> V3:
>>>  - No change
>>>
>>>  drivers/pci/dwc/pcie-designware.h | 25 +++++++++++++++++++++++++
>>>  1 file changed, 25 insertions(+)
>>>
>>> diff --git a/drivers/pci/dwc/pcie-designware.h
>>> b/drivers/pci/dwc/pcie-designware.h
>>> index 7366c81..0c5f874 100644
>>> --- a/drivers/pci/dwc/pcie-designware.h
>>> +++ b/drivers/pci/dwc/pcie-designware.h
>>> @@ -76,6 +76,9 @@
>>>  #define PCIE_ATU_FUNC(x)		(((x) & 0x7) << 16)
>>>  #define PCIE_ATU_UPPER_TARGET		0x91C
>>>
>>> +#define PCIE_MISC_CONTROL_1_OFF		0x8BC
>>> +#define PCIE_DBI_RO_WR_EN		(0x1 << 0)
>>
>> Does those registers exist for dwc version 4.01a?
> 
> Joao, can you help to check this?
> I referred to DesignWare cores PCI Express controller databook version 4.21a.
> The Freescale Layerscape implement does not export the version of designware PCIe controller, I don't know which versions have those registers, if it does not work on qcom platform, I will remove the qcom related changes.

I can query the R&D, but I think it won't be very useful since the qcom' SoC do
not implement the registers (if they actually exist). I think the best way is
not to use this in qcom' SoC (maybe others should make sure their SoCs contain
these registers).

Thanks,
Joao

> 
>>
>> I managed to test 6/9, 8/9 and 9/9 on qcom platform (apq8064) which has
>> 4.01a version and it doesn't work, i.e. the PCI_CLASS_BRIDGE_PCI is not
>> returned when read PCI_CLASS_DEVICE offset.
>>
>>> +
>>>  /*
>>>   * iATU Unroll-specific register definitions
>>>   * From 4.80 core version the address translation will be made by
>>> unroll @@ -279,6 +282,28 @@ static inline u32 dw_pcie_readl_dbi2(struct
>> dw_pcie *pci, u32 reg)
>>>  	return __dw_pcie_read_dbi(pci, pci->dbi_base2, reg, 0x4);  }
>>>
>>> +static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci) {
>>> +	u32 reg;
>>> +	u32 val;
>>> +
>>> +	reg = PCIE_MISC_CONTROL_1_OFF;
>>> +	val = dw_pcie_readl_dbi(pci, reg);
>>> +	val |= PCIE_DBI_RO_WR_EN;
>>> +	dw_pcie_writel_dbi(pci, reg, val);
>>> +}
>>> +
>>> +static inline void dw_pcie_dbi_ro_wr_dis(struct dw_pcie *pci) {
>>> +	u32 reg;
>>> +	u32 val;
>>> +
>>> +	reg = PCIE_MISC_CONTROL_1_OFF;
>>> +	val = dw_pcie_readl_dbi(pci, reg);
>>> +	val &= ~PCIE_DBI_RO_WR_EN;
>>> +	dw_pcie_writel_dbi(pci, reg, val);
>>> +}
>>> +
>>>  #ifdef CONFIG_PCIE_DW_HOST
>>>  irqreturn_t dw_handle_msi_irq(struct pcie_port *pp);  void
>>> dw_pcie_msi_init(struct pcie_port *pp);
>>>
> 
> Thanks,
> Zhiqiang
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE: [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-18 11:51       ` Joao Pinto
@ 2017-08-21  3:21         ` Z.q. Hou
  0 siblings, 0 replies; 16+ messages in thread
From: Z.q. Hou @ 2017-08-21  3:21 UTC (permalink / raw)
  To: Joao Pinto, Stanimir Varbanov, linux-pci, bhelgaas, jingoohan1
  Cc: M.h. Lian, Mingkai Hu, Roy Zang, niklas.cassel, jesper.nilsson

SGkgSm9hbywNCg0KVGhhbmtzIGEgbG90IGZvciB5b3VyIGZlZWRiYWNrIQ0KDQo+IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEpvYW8gUGludG8gW21haWx0bzpKb2FvLlBpbnRv
QHN5bm9wc3lzLmNvbV0NCj4gU2VudDogMjAxN+W5tDjmnIgxOOaXpSAxOTo1MQ0KPiBUbzogWi5x
LiBIb3UgPHpoaXFpYW5nLmhvdUBueHAuY29tPjsgU3RhbmltaXIgVmFyYmFub3YNCj4gPHN2YXJi
YW5vdkBtbS1zb2wuY29tPjsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gYmhlbGdhYXNA
Z29vZ2xlLmNvbTsgamluZ29vaGFuMUBnbWFpbC5jb207IEpvYW8uUGludG9Ac3lub3BzeXMuY29t
DQo+IENjOiBNLmguIExpYW4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47IE1pbmdrYWkgSHUgPG1p
bmdrYWkuaHVAbnhwLmNvbT47DQo+IFJveSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsgbmlrbGFz
LmNhc3NlbEBheGlzLmNvbTsNCj4gamVzcGVyLm5pbHNzb25AYXhpcy5jb20NCj4gU3ViamVjdDog
UmU6IFtQQVRDSHYzIDYvOV0gUENJOiBkZXNpZ253YXJlOiBhZGQgYWNjZXNzb3JzIGZvciB3cml0
ZQ0KPiBwZXJtaXNzaW9uIG9mIERCSSByZWFkLW9ubHkgcmVnaXN0ZXJzDQo+IA0KPiBIaSBaaGlx
aWFuZyBhbmQgU3RhbmltaXIsDQo+IA0KPiDDgHMgNDowMyBBTSBkZSA4LzE3LzIwMTcsIFoucS4g
SG91IGVzY3JldmV1Og0KPiA+IEhpIFN0YW5pbWlyLA0KPiA+DQo+ID4gVGhhbmtzIGZvciB5b3Vy
IGZlZWRiYWNrIQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZy
b206IFN0YW5pbWlyIFZhcmJhbm92IFttYWlsdG86c3ZhcmJhbm92QG1tLXNvbC5jb21dDQo+ID4+
IFNlbnQ6IDIwMTflubQ45pyIMTbml6UgMTk6MzQNCj4gPj4gVG86IFoucS4gSG91IDx6aGlxaWFu
Zy5ob3VAbnhwLmNvbT47IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7DQo+ID4+IGJoZWxnYWFz
QGdvb2dsZS5jb207IGppbmdvb2hhbjFAZ21haWwuY29tOw0KPiBKb2FvLlBpbnRvQHN5bm9wc3lz
LmNvbQ0KPiA+PiBDYzogTS5oLiBMaWFuIDxtaW5naHVhbi5saWFuQG54cC5jb20+OyBNaW5na2Fp
IEh1DQo+ID4+IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZyA8cm95LnphbmdAbnhwLmNv
bT47DQo+ID4+IG5pa2xhcy5jYXNzZWxAYXhpcy5jb207IGplc3Blci5uaWxzc29uQGF4aXMuY29t
DQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0h2MyA2LzldIFBDSTogZGVzaWdud2FyZTogYWRkIGFj
Y2Vzc29ycyBmb3Igd3JpdGUNCj4gPj4gcGVybWlzc2lvbiBvZiBEQkkgcmVhZC1vbmx5IHJlZ2lz
dGVycw0KPiA+Pg0KPiA+PiBIaSwNCj4gPj4NCj4gPj4gT24gMDgvMTYvMjAxNyAwNzo1NiBBTSwg
WmhpcWlhbmcgSG91IHdyb3RlOg0KPiA+Pj4gRnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5I
b3VAbnhwLmNvbT4NCj4gPj4+DQo+ID4+PiBUaGUgcmVhZC1vbmx5IERCSSByZWdpc3RlcnMgY2Fu
IGJlIHdyaXR0ZW4gb3ZlciB0aGUgREJJIHdoZW4gc2V0IHRoZQ0KPiA+Pj4gIldyaXRlIHRvIFJP
IFJlZ2lzdGVycyBVc2luZyBEQkkiIChEQklfUk9fV1JfRU4pIGZpZWxkIG9mIHRoZQ0KPiA+Pj4g
TUlTQ19DT05UUk9MXzFfT0ZGIHJlZ2lzdGVyLg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6
IEhvdSBaaGlxaWFuZyA8WmhpcWlhbmcuSG91QG54cC5jb20+DQo+ID4+PiAtLS0NCj4gPj4+IFYz
Og0KPiA+Pj4gIC0gTm8gY2hhbmdlDQo+ID4+Pg0KPiA+Pj4gIGRyaXZlcnMvcGNpL2R3Yy9wY2ll
LWRlc2lnbndhcmUuaCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICAxIGZp
bGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9k
cml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPj4+IGIvZHJpdmVycy9wY2kvZHdj
L3BjaWUtZGVzaWdud2FyZS5oDQo+ID4+PiBpbmRleCA3MzY2YzgxLi4wYzVmODc0IDEwMDY0NA0K
PiA+Pj4gLS0tIGEvZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4+PiArKysg
Yi9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPj4+IEBAIC03Niw2ICs3Niw5
IEBADQo+ID4+PiAgI2RlZmluZSBQQ0lFX0FUVV9GVU5DKHgpCQkoKCh4KSAmIDB4NykgPDwgMTYp
DQo+ID4+PiAgI2RlZmluZSBQQ0lFX0FUVV9VUFBFUl9UQVJHRVQJCTB4OTFDDQo+ID4+Pg0KPiA+
Pj4gKyNkZWZpbmUgUENJRV9NSVNDX0NPTlRST0xfMV9PRkYJCTB4OEJDDQo+ID4+PiArI2RlZmlu
ZSBQQ0lFX0RCSV9ST19XUl9FTgkJKDB4MSA8PCAwKQ0KPiA+Pg0KPiA+PiBEb2VzIHRob3NlIHJl
Z2lzdGVycyBleGlzdCBmb3IgZHdjIHZlcnNpb24gNC4wMWE/DQo+ID4NCj4gPiBKb2FvLCBjYW4g
eW91IGhlbHAgdG8gY2hlY2sgdGhpcz8NCj4gPiBJIHJlZmVycmVkIHRvIERlc2lnbldhcmUgY29y
ZXMgUENJIEV4cHJlc3MgY29udHJvbGxlciBkYXRhYm9vayB2ZXJzaW9uDQo+IDQuMjFhLg0KPiA+
IFRoZSBGcmVlc2NhbGUgTGF5ZXJzY2FwZSBpbXBsZW1lbnQgZG9lcyBub3QgZXhwb3J0IHRoZSB2
ZXJzaW9uIG9mDQo+IGRlc2lnbndhcmUgUENJZSBjb250cm9sbGVyLCBJIGRvbid0IGtub3cgd2hp
Y2ggdmVyc2lvbnMgaGF2ZSB0aG9zZSByZWdpc3RlcnMsDQo+IGlmIGl0IGRvZXMgbm90IHdvcmsg
b24gcWNvbSBwbGF0Zm9ybSwgSSB3aWxsIHJlbW92ZSB0aGUgcWNvbSByZWxhdGVkIGNoYW5nZXMu
DQo+IA0KPiBJIGNhbiBxdWVyeSB0aGUgUiZELCBidXQgSSB0aGluayBpdCB3b24ndCBiZSB2ZXJ5
IHVzZWZ1bCBzaW5jZSB0aGUgcWNvbScgU29DIGRvDQo+IG5vdCBpbXBsZW1lbnQgdGhlIHJlZ2lz
dGVycyAoaWYgdGhleSBhY3R1YWxseSBleGlzdCkuIEkgdGhpbmsgdGhlIGJlc3Qgd2F5IGlzIG5v
dCB0bw0KPiB1c2UgdGhpcyBpbiBxY29tJyBTb0MgKG1heWJlIG90aGVycyBzaG91bGQgbWFrZSBz
dXJlIHRoZWlyIFNvQ3MgY29udGFpbiB0aGVzZQ0KPiByZWdpc3RlcnMpLg0KDQpHb3QgaXQsIHdp
bGwgZHJvcCB0aGUgY2hhbmdlcyBvZiBxY29tIHBjaWUuDQoNClRoYW5rcywNClpoaXFpYW5nDQo=

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-08-21  3:21 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-16  4:56 [PATCHv3 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
2017-08-16 11:33   ` Stanimir Varbanov
2017-08-17  3:03     ` Z.q. Hou
2017-08-17 11:25       ` Stanimir Varbanov
2017-08-18  5:28         ` Z.q. Hou
2017-08-18 11:51       ` Joao Pinto
2017-08-21  3:21         ` Z.q. Hou
2017-08-16  4:56 ` [PATCHv3 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 8/9] PCI: designware: enable write permission before updating DBI RO registers Zhiqiang Hou
2017-08-16  4:56 ` [PATCHv3 9/9] PCI: dwc: remove the obsolete fixups Zhiqiang Hou

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.