All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc
@ 2017-08-23  6:08 Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
                   ` (9 more replies)
  0 siblings, 10 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>

Drop the change for qcom pcie driver's fixup from 9/9, it seems qcom
pcie controller did not implement the register MISC_CONTROL_1_OFF.

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 ++++++++++
 4 files changed, 80 insertions(+), 47 deletions(-)

-- 
2.14.1

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

* [PATCHv4 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket Zhiqiang Hou
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
---
V4:
 - no change

 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 7581490f007c..aebefb42377a 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.14.1

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

* [PATCHv4 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a Zhiqiang Hou
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
---
V4:
 - no change

 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 aebefb42377a..c16940044ed6 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.14.1

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

* [PATCHv4 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 1/9] PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 2/9] PCI: layerscape: move STRFMR1 access out from the DBI write-enable bracket Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
---
V4:
 - no change

 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 c16940044ed6..3aa34214643c 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.14.1

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

* [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (2 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 3/9] PCI: layerscape: add class code and multifunction fixups for ls1021a Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-24 17:12   ` Bjorn Helgaas
  2017-08-23  6:08 ` [PATCHv4 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader Zhiqiang Hou
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
---
V4:
 - no change

 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 3aa34214643c..57b86a0cd2c8 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.14.1

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

* [PATCHv4 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (3 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
---
V4:
 - 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 57b86a0cd2c8..44a603db217a 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.14.1

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

* [PATCHv4 6/9] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (4 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 5/9] PCI: layerscape: Disable the outbound windows configured by bootloader Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
Acked-By: Joao Pinto <jpinto@synopsys.com>
---
V4:
 - 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 7366c8167404..0c5f874345f6 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.14.1

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

* [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (5 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 6/9] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-24 17:14   ` Bjorn Helgaas
  2017-08-23  6:08 ` [PATCHv4 8/9] PCI: designware: enable write permission before updating DBI RO registers Zhiqiang Hou
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
Acked-By: Joao Pinto <jpinto@synopsys.com>
---
V4:
 - 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 44a603db217a..0c1330fce01d 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.14.1

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

* [PATCHv4 8/9] PCI: designware: enable write permission before updating DBI RO registers
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (6 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-23  6:08 ` [PATCHv4 9/9] PCI: dwc: remove the obsolete fixups Zhiqiang Hou
  2017-08-24 17:17 ` [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Bjorn Helgaas
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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>
Acked-By: Joao Pinto <jpinto@synopsys.com>
---
V4:
 - no change

 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 157621175147..582f5cc3cd96 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.14.1

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

* [PATCHv4 9/9] PCI: dwc: remove the obsolete fixups
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (7 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 8/9] PCI: designware: enable write permission before updating DBI RO registers Zhiqiang Hou
@ 2017-08-23  6:08 ` Zhiqiang Hou
  2017-08-24 17:17 ` [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Bjorn Helgaas
  9 siblings, 0 replies; 18+ messages in thread
From: Zhiqiang Hou @ 2017-08-23  6:08 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 line to enable write permission of DBI RO register from
artpec6 pcie driver.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
V4:
 - Drop the change for qcom pcie driver's fixup

 drivers/pci/dwc/pci-layerscape.c | 9 ---------
 drivers/pci/dwc/pcie-artpec6.c   | 6 ------
 2 files changed, 15 deletions(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index 0c1330fce01d..d22ed57dcc6f 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 5d81f1d884e3..d153491f600f 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);
 
-- 
2.14.1

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

* Re: [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
  2017-08-23  6:08 ` [PATCHv4 4/9] PCI: layerscape: refactor the host_init function Zhiqiang Hou
@ 2017-08-24 17:12   ` Bjorn Helgaas
  2017-08-25  3:16     ` Z.q. Hou
  0 siblings, 1 reply; 18+ messages in thread
From: Bjorn Helgaas @ 2017-08-24 17:12 UTC (permalink / raw)
  To: Zhiqiang Hou
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, minghuan.lian,
	mingkai.hu, roy.zang, svarbanov, niklas.cassel, jesper.nilsson

On Wed, Aug 23, 2017 at 02:08:51PM +0800, Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> 
> Make the ls1021a's host_init reuse layerscape platform's common
> host_init function.

This patch does two things:

  1) Moves ls1021_pcie_host_init() to a different place in the file
  2) Calls ls_pcie_host_init() instead of repeating that code in
     ls1021_pcie_host_init()

Those should be separate patches so they're easier to review.

Or if you don't really need to move ls1021_pcie_host_init() to a different
place, that would be even easier.

> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> ---
> V4:
>  - no change
> 
>  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 3aa34214643c..57b86a0cd2c8 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.14.1
> 

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

* Re: [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission
  2017-08-23  6:08 ` [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission Zhiqiang Hou
@ 2017-08-24 17:14   ` Bjorn Helgaas
  2017-08-25  3:20     ` Z.q. Hou
  0 siblings, 1 reply; 18+ messages in thread
From: Bjorn Helgaas @ 2017-08-24 17:14 UTC (permalink / raw)
  To: Zhiqiang Hou
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, minghuan.lian,
	mingkai.hu, roy.zang, svarbanov, niklas.cassel, jesper.nilsson

On Wed, Aug 23, 2017 at 02:08:54PM +0800, Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> 
> Use the accessors instead accessing the DBI read-only write enable
> register directly.

This patch and the previous one (that added dw_pcie_dbi_ro_wr_en())
should be squashed together.  That way it's obvious that the new code
here is equivalent to the old code

> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> Acked-By: Joao Pinto <jpinto@synopsys.com>
> ---
> V4:
>  - 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 44a603db217a..0c1330fce01d 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.14.1
> 

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

* Re: [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc
  2017-08-23  6:08 [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Zhiqiang Hou
                   ` (8 preceding siblings ...)
  2017-08-23  6:08 ` [PATCHv4 9/9] PCI: dwc: remove the obsolete fixups Zhiqiang Hou
@ 2017-08-24 17:17 ` Bjorn Helgaas
  2017-08-24 18:17   ` Roy Zang
  9 siblings, 1 reply; 18+ messages in thread
From: Bjorn Helgaas @ 2017-08-24 17:17 UTC (permalink / raw)
  To: Zhiqiang Hou
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, minghuan.lian,
	mingkai.hu, roy.zang, svarbanov, niklas.cassel, jesper.nilsson

On Wed, Aug 23, 2017 at 02:08:47PM +0800, Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> 
> Drop the change for qcom pcie driver's fixup from 9/9, it seems qcom
> pcie controller did not implement the register MISC_CONTROL_1_OFF.
> 
> 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 ++++++++++
>  4 files changed, 80 insertions(+), 47 deletions(-)

I had a couple minor comments on these, but mostly looks very nice.

I'll be looking for an ack from Minghuan, Mingkai, or Roy for all the
layerscape changes.  And from Niklas or Jesper for the artpec6 ones.

Thanks, Joao, for already looking at all the designware stuff!

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

* Re: [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc
  2017-08-24 17:17 ` [PATCHv4 0/9] PCI: dwc: refactor ls-pcie ->host_init() and fix bug for dw_pcie_setup_rc Bjorn Helgaas
@ 2017-08-24 18:17   ` Roy Zang
  0 siblings, 0 replies; 18+ messages in thread
From: Roy Zang @ 2017-08-24 18:17 UTC (permalink / raw)
  To: Bjorn Helgaas, Z.q. Hou
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian,
	Mingkai Hu, svarbanov, niklas.cassel, jesper.nilsson

On 08/24/2017 12:17 PM, Bjorn Helgaas wrote:=0A=
> On Wed, Aug 23, 2017 at 02:08:47PM +0800, Zhiqiang Hou wrote:=0A=
>> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>=0A=
>>=0A=
>> Drop the change for qcom pcie driver's fixup from 9/9, it seems qcom=0A=
>> pcie controller did not implement the register MISC_CONTROL_1_OFF.=0A=
>>=0A=
>> Hou Zhiqiang (9):=0A=
>>   PCI: layerscape: Add dw_pcie_setup_rc to ls-pcie common host init=0A=
>>   PCI: layerscape: move STRFMR1 access out from the DBI write-enable=0A=
>>     bracket=0A=
>>   PCI: layerscape: add class code and multifunction fixups for ls1021a=
=0A=
>>   PCI: layerscape: refactor the host_init function=0A=
>>   PCI: layerscape: Disable the outbound windows configured by bootloader=
=0A=
>>   PCI: designware: add accessors for write permission of DBI read-only=
=0A=
>>     registers=0A=
>>   PCI: layerscape: use accessors to enable/disable DBI RO registers'=0A=
>>     write permission=0A=
>>   PCI: designware: enable write permission before updating DBI RO=0A=
>>     registers=0A=
>>   PCI: dwc: remove the obsolete fixups=0A=
>>=0A=
>>  drivers/pci/dwc/pci-layerscape.c       | 90 ++++++++++++++++++---------=
-------=0A=
>>  drivers/pci/dwc/pcie-artpec6.c         |  6 ---=0A=
>>  drivers/pci/dwc/pcie-designware-host.c |  6 +++=0A=
>>  drivers/pci/dwc/pcie-designware.h      | 25 ++++++++++=0A=
>>  4 files changed, 80 insertions(+), 47 deletions(-)=0A=
> I had a couple minor comments on these, but mostly looks very nice.=0A=
>=0A=
> I'll be looking for an ack from Minghuan, Mingkai, or Roy for all the=0A=
> layerscape changes.  And from Niklas or Jesper for the artpec6 ones.=0A=
>=0A=
> Thanks, Joao, for already looking at all the designware stuff!=0A=
>=0A=
Bjorn,=0A=
=0A=
thanks.=0A=
=0A=
 Acked-by: Roy Zang <tie-fei.zang@freescale.com>=0A=
=0A=
Roy=0A=
=0A=
=0A=
=0A=

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

* RE: [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
  2017-08-24 17:12   ` Bjorn Helgaas
@ 2017-08-25  3:16     ` Z.q. Hou
  2017-08-25  4:22       ` Bjorn Helgaas
  0 siblings, 1 reply; 18+ messages in thread
From: Z.q. Hou @ 2017-08-25  3:16 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian,
	Mingkai Hu, Roy Zang, svarbanov, niklas.cassel, jesper.nilsson

SGkgQmpvcm4sDQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86aGVsZ2Fh
c0BrZXJuZWwub3JnXQ0KPiBTZW50OiAyMDE3xOo41MIyNcjVIDE6MTINCj4gVG86IFoucS4gSG91
IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT4NCj4gQ2M6IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7
IGJoZWxnYWFzQGdvb2dsZS5jb207DQo+IGppbmdvb2hhbjFAZ21haWwuY29tOyBKb2FvLlBpbnRv
QHN5bm9wc3lzLmNvbTsgTS5oLiBMaWFuDQo+IDxtaW5naHVhbi5saWFuQG54cC5jb20+OyBNaW5n
a2FpIEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZw0KPiA8cm95LnphbmdAbnhwLmNv
bT47IHN2YXJiYW5vdkBtbS1zb2wuY29tOyBuaWtsYXMuY2Fzc2VsQGF4aXMuY29tOw0KPiBqZXNw
ZXIubmlsc3NvbkBheGlzLmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIdjQgNC85XSBQQ0k6IGxh
eWVyc2NhcGU6IHJlZmFjdG9yIHRoZSBob3N0X2luaXQgZnVuY3Rpb24NCj4gDQo+IE9uIFdlZCwg
QXVnIDIzLCAyMDE3IGF0IDAyOjA4OjUxUE0gKzA4MDAsIFpoaXFpYW5nIEhvdSB3cm90ZToNCj4g
PiBGcm9tOiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBueHAuY29tPg0KPiA+DQo+ID4gTWFr
ZSB0aGUgbHMxMDIxYSdzIGhvc3RfaW5pdCByZXVzZSBsYXllcnNjYXBlIHBsYXRmb3JtJ3MgY29t
bW9uDQo+ID4gaG9zdF9pbml0IGZ1bmN0aW9uLg0KPiANCj4gVGhpcyBwYXRjaCBkb2VzIHR3byB0
aGluZ3M6DQo+IA0KPiAgIDEpIE1vdmVzIGxzMTAyMV9wY2llX2hvc3RfaW5pdCgpIHRvIGEgZGlm
ZmVyZW50IHBsYWNlIGluIHRoZSBmaWxlDQo+ICAgMikgQ2FsbHMgbHNfcGNpZV9ob3N0X2luaXQo
KSBpbnN0ZWFkIG9mIHJlcGVhdGluZyB0aGF0IGNvZGUgaW4NCj4gICAgICBsczEwMjFfcGNpZV9o
b3N0X2luaXQoKQ0KPiANCj4gVGhvc2Ugc2hvdWxkIGJlIHNlcGFyYXRlIHBhdGNoZXMgc28gdGhl
eSdyZSBlYXNpZXIgdG8gcmV2aWV3Lg0KPiANCj4gT3IgaWYgeW91IGRvbid0IHJlYWxseSBuZWVk
IHRvIG1vdmUgbHMxMDIxX3BjaWVfaG9zdF9pbml0KCkgdG8gYSBkaWZmZXJlbnQgcGxhY2UsDQo+
IHRoYXQgd291bGQgYmUgZXZlbiBlYXNpZXIuDQoNCk1vdmVkIGxzMTAyMV9wY2llX2hvc3RfaW5p
dCgpIHRvIHRoaXMgcGxhY2UgYmVoYW5kIHRoZSBmdW5jIGxzX3BjaWVfaG9zdF9pbml0IGlzIHRv
IGNhbGwgbHNfcGNpZV9ob3N0X2luaXQgd2l0aG91dCBhZGRpbmcgYSBkZWNsYXJhdGlvbiBvZiBp
dC4gSXMgaXQgbmVjZXNzYXJ5IHRvIHNlcGFyYXRlIGl0Pw0KDQoNCj4gPiBTaWduZWQtb2ZmLWJ5
OiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBueHAuY29tPg0KPiA+IC0tLQ0KPiA+IFY0Og0K
PiA+ICAtIG5vIGNoYW5nZQ0KPiA+DQo+ID4gIGRyaXZlcnMvcGNpL2R3Yy9wY2ktbGF5ZXJzY2Fw
ZS5jIHwgNjUNCj4gPiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+
ID4gIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkNCj4g
Pg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kd2MvcGNpLWxheWVyc2NhcGUuYw0KPiA+
IGIvZHJpdmVycy9wY2kvZHdjL3BjaS1sYXllcnNjYXBlLmMNCj4gPiBpbmRleCAzYWEzNDIxNDY0
M2MuLjU3Yjg2YTBjZDJjOCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9kd2MvcGNpLWxh
eWVyc2NhcGUuYw0KPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2R3Yy9wY2ktbGF5ZXJzY2FwZS5jDQo+
ID4gQEAgLTEwOCw0MiArMTA4LDYgQEAgc3RhdGljIGludCBsczEwMjFfcGNpZV9saW5rX3VwKHN0
cnVjdCBkd19wY2llICpwY2kpDQo+ID4gIAlyZXR1cm4gMTsNCj4gPiAgfQ0KPiA+DQo+ID4gLXN0
YXRpYyBpbnQgbHMxMDIxX3BjaWVfaG9zdF9pbml0KHN0cnVjdCBwY2llX3BvcnQgKnBwKSAtew0K
PiA+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwcCk7DQo+ID4g
LQlzdHJ1Y3QgbHNfcGNpZSAqcGNpZSA9IHRvX2xzX3BjaWUocGNpKTsNCj4gPiAtCXN0cnVjdCBk
ZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiA+IC0JdTMyIGluZGV4WzJdOw0KPiA+IC0JaW50IHJl
dDsNCj4gPiAtDQo+ID4gLQlwY2llLT5zY2ZnID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhh
bmRsZShkZXYtPm9mX25vZGUsDQo+ID4gLQkJCQkJCSAgICAgImZzbCxwY2llLXNjZmciKTsNCj4g
PiAtCWlmIChJU19FUlIocGNpZS0+c2NmZykpIHsNCj4gPiAtCQlyZXQgPSBQVFJfRVJSKHBjaWUt
PnNjZmcpOw0KPiA+IC0JCWRldl9lcnIoZGV2LCAiTm8gc3lzY2ZnIHBoYW5kbGUgc3BlY2lmaWVk
XG4iKTsNCj4gPiAtCQlwY2llLT5zY2ZnID0gTlVMTDsNCj4gPiAtCQlyZXR1cm4gcmV0Ow0KPiA+
IC0JfQ0KPiA+IC0NCj4gPiAtCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShkZXYtPm9m
X25vZGUsDQo+ID4gLQkJCQkgICAgICAgImZzbCxwY2llLXNjZmciLCBpbmRleCwgMikpIHsNCj4g
PiAtCQlwY2llLT5zY2ZnID0gTlVMTDsNCj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAtCX0N
Cj4gPiAtCXBjaWUtPmluZGV4ID0gaW5kZXhbMV07DQo+ID4gLQ0KPiA+IC0JZHdfcGNpZV9zZXR1
cF9yYyhwcCk7DQo+ID4gLQ0KPiA+IC0JaW93cml0ZTMyKDEsIHBjaS0+ZGJpX2Jhc2UgKyBQQ0lF
X0RCSV9ST19XUl9FTik7DQo+ID4gLQlsc19wY2llX2ZpeF9jbGFzcyhwY2llKTsNCj4gPiAtCWxz
X3BjaWVfY2xlYXJfbXVsdGlmdW5jdGlvbihwY2llKTsNCj4gPiAtCWlvd3JpdGUzMigwLCBwY2kt
PmRiaV9iYXNlICsgUENJRV9EQklfUk9fV1JfRU4pOw0KPiA+IC0NCj4gPiAtCWxzX3BjaWVfZHJv
cF9tc2dfdGxwKHBjaWUpOw0KPiA+IC0NCj4gPiAtCXJldHVybiAwOw0KPiA+IC19DQo+ID4gLQ0K
PiA+ICBzdGF0aWMgaW50IGxzX3BjaWVfbGlua191cChzdHJ1Y3QgZHdfcGNpZSAqcGNpKSAgew0K
PiA+ICAJc3RydWN0IGxzX3BjaWUgKnBjaWUgPSB0b19sc19wY2llKHBjaSk7IEBAIC0xNzYsNiAr
MTQwLDM1IEBAIHN0YXRpYw0KPiA+IGludCBsc19wY2llX2hvc3RfaW5pdChzdHJ1Y3QgcGNpZV9w
b3J0ICpwcCkNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGludCBs
czEwMjFfcGNpZV9ob3N0X2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHApIHsNCj4gPiArCXN0cnVj
dCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocHApOw0KPiA+ICsJc3RydWN0IGxz
X3BjaWUgKnBjaWUgPSB0b19sc19wY2llKHBjaSk7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg
PSBwY2ktPmRldjsNCj4gPiArCXUzMiBpbmRleFsyXTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0K
PiA+ICsJcGNpZS0+c2NmZyA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUoZGV2LT5v
Zl9ub2RlLA0KPiA+ICsJCQkJCQkgICAgICJmc2wscGNpZS1zY2ZnIik7DQo+ID4gKwlpZiAoSVNf
RVJSKHBjaWUtPnNjZmcpKSB7DQo+ID4gKwkJcmV0ID0gUFRSX0VSUihwY2llLT5zY2ZnKTsNCj4g
PiArCQlkZXZfZXJyKGRldiwgIk5vIHN5c2NmZyBwaGFuZGxlIHNwZWNpZmllZFxuIik7DQo+ID4g
KwkJcGNpZS0+c2NmZyA9IE5VTEw7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiAr
DQo+ID4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZGV2LT5vZl9ub2RlLA0KPiA+
ICsJCQkJICAgICAgICJmc2wscGNpZS1zY2ZnIiwgaW5kZXgsIDIpKSB7DQo+ID4gKwkJcGNpZS0+
c2NmZyA9IE5VTEw7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKwlwY2ll
LT5pbmRleCA9IGluZGV4WzFdOw0KPiA+ICsNCj4gPiArCWxzX3BjaWVfaG9zdF9pbml0KHBwKTsN
Cj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGludCBs
c19wY2llX21zaV9ob3N0X2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHAsDQo+ID4gIAkJCQkgc3Ry
dWN0IG1zaV9jb250cm9sbGVyICpjaGlwKQ0KPiA+ICB7DQo+ID4gLS0NCj4gPiAyLjE0LjENCj4g
Pg0KDQpUaGFua3MsDQpaaGlxaWFuZw0KDQo=

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

* RE: [PATCHv4 7/9] PCI: layerscape: use accessors to enable/disable DBI RO registers' write permission
  2017-08-24 17:14   ` Bjorn Helgaas
@ 2017-08-25  3:20     ` Z.q. Hou
  0 siblings, 0 replies; 18+ messages in thread
From: Z.q. Hou @ 2017-08-25  3:20 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian,
	Mingkai Hu, Roy Zang, svarbanov, niklas.cassel, jesper.nilsson

SGkgQmpvcm4sDQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86aGVsZ2Fh
c0BrZXJuZWwub3JnXQ0KPiBTZW50OiAyMDE3xOo41MIyNcjVIDE6MTUNCj4gVG86IFoucS4gSG91
IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT4NCj4gQ2M6IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7
IGJoZWxnYWFzQGdvb2dsZS5jb207DQo+IGppbmdvb2hhbjFAZ21haWwuY29tOyBKb2FvLlBpbnRv
QHN5bm9wc3lzLmNvbTsgTS5oLiBMaWFuDQo+IDxtaW5naHVhbi5saWFuQG54cC5jb20+OyBNaW5n
a2FpIEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZw0KPiA8cm95LnphbmdAbnhwLmNv
bT47IHN2YXJiYW5vdkBtbS1zb2wuY29tOyBuaWtsYXMuY2Fzc2VsQGF4aXMuY29tOw0KPiBqZXNw
ZXIubmlsc3NvbkBheGlzLmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIdjQgNy85XSBQQ0k6IGxh
eWVyc2NhcGU6IHVzZSBhY2Nlc3NvcnMgdG8gZW5hYmxlL2Rpc2FibGUNCj4gREJJIFJPIHJlZ2lz
dGVycycgd3JpdGUgcGVybWlzc2lvbg0KPiANCj4gT24gV2VkLCBBdWcgMjMsIDIwMTcgYXQgMDI6
MDg6NTRQTSArMDgwMCwgWmhpcWlhbmcgSG91IHdyb3RlOg0KPiA+IEZyb206IEhvdSBaaGlxaWFu
ZyA8WmhpcWlhbmcuSG91QG54cC5jb20+DQo+ID4NCj4gPiBVc2UgdGhlIGFjY2Vzc29ycyBpbnN0
ZWFkIGFjY2Vzc2luZyB0aGUgREJJIHJlYWQtb25seSB3cml0ZSBlbmFibGUNCj4gPiByZWdpc3Rl
ciBkaXJlY3RseS4NCj4gDQo+IFRoaXMgcGF0Y2ggYW5kIHRoZSBwcmV2aW91cyBvbmUgKHRoYXQg
YWRkZWQgZHdfcGNpZV9kYmlfcm9fd3JfZW4oKSkgc2hvdWxkDQo+IGJlIHNxdWFzaGVkIHRvZ2V0
aGVyLiAgVGhhdCB3YXkgaXQncyBvYnZpb3VzIHRoYXQgdGhlIG5ldyBjb2RlIGhlcmUgaXMNCj4g
ZXF1aXZhbGVudCB0byB0aGUgb2xkIGNvZGUNCg0KVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24s
IHdpbGwgbWVyZ2UgdGhlbSB0b2dldGhlci4NCg0KDQo+ID4gU2lnbmVkLW9mZi1ieTogSG91IFpo
aXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPiBBY2tlZC1CeTogSm9hbyBQaW50byA8
anBpbnRvQHN5bm9wc3lzLmNvbT4NCj4gPiAtLS0NCj4gPiBWNDoNCj4gPiAgLSBubyBjaGFuZ2UN
Cj4gPg0KPiA+ICBkcml2ZXJzL3BjaS9kd2MvcGNpLWxheWVyc2NhcGUuYyB8IDUgKystLS0NCj4g
PiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCj4gPg0K
PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kd2MvcGNpLWxheWVyc2NhcGUuYw0KPiA+IGIv
ZHJpdmVycy9wY2kvZHdjL3BjaS1sYXllcnNjYXBlLmMNCj4gPiBpbmRleCA0NGE2MDNkYjIxN2Eu
LjBjMTMzMGZjZTAxZCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9kd2MvcGNpLWxheWVy
c2NhcGUuYw0KPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2R3Yy9wY2ktbGF5ZXJzY2FwZS5jDQo+ID4g
QEAgLTMzLDcgKzMzLDYgQEANCj4gPg0KPiA+ICAvKiBQRVggSW50ZXJuYWwgQ29uZmlndXJhdGlv
biBSZWdpc3RlcnMgKi8NCj4gPiAgI2RlZmluZSBQQ0lFX1NUUkZNUjEJCTB4NzFjIC8qIFN5bWJv
bCBUaW1lciAmIEZpbHRlciBNYXNrDQo+IFJlZ2lzdGVyMSAqLw0KPiA+IC0jZGVmaW5lIFBDSUVf
REJJX1JPX1dSX0VOCTB4OGJjIC8qIERCSSBSZWFkLU9ubHkgV3JpdGUgRW5hYmxlDQo+IFJlZ2lz
dGVyICovDQo+ID4NCj4gPiAgI2RlZmluZSBQQ0lFX0lBVFVfTlVNCQk2DQo+ID4NCj4gPiBAQCAt
MTQ1LDEwICsxNDQsMTAgQEAgc3RhdGljIGludCBsc19wY2llX2hvc3RfaW5pdChzdHJ1Y3QgcGNp
ZV9wb3J0ICpwcCkNCj4gPiAgCSAqLw0KPiA+ICAJbHNfcGNpZV9kaXNhYmxlX291dGJvdW5kX2F0
dXMocGNpZSk7DQo+ID4NCj4gPiAtCWlvd3JpdGUzMigxLCBwY2ktPmRiaV9iYXNlICsgUENJRV9E
QklfUk9fV1JfRU4pOw0KPiA+ICsJZHdfcGNpZV9kYmlfcm9fd3JfZW4ocGNpKTsNCj4gPiAgCWxz
X3BjaWVfZml4X2NsYXNzKHBjaWUpOw0KPiA+ICAJbHNfcGNpZV9jbGVhcl9tdWx0aWZ1bmN0aW9u
KHBjaWUpOw0KPiA+IC0JaW93cml0ZTMyKDAsIHBjaS0+ZGJpX2Jhc2UgKyBQQ0lFX0RCSV9ST19X
Ul9FTik7DQo+ID4gKwlkd19wY2llX2RiaV9yb193cl9kaXMocGNpKTsNCj4gPg0KPiA+ICAJbHNf
cGNpZV9kcm9wX21zZ190bHAocGNpZSk7DQo+ID4NCj4gPiAtLQ0KPiA+IDIuMTQuMQ0KPiA+DQoN
ClRoYW5rcywNClpoaXFpYW5nDQo=

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

* Re: [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
  2017-08-25  3:16     ` Z.q. Hou
@ 2017-08-25  4:22       ` Bjorn Helgaas
  2017-08-25  6:51         ` Z.q. Hou
  0 siblings, 1 reply; 18+ messages in thread
From: Bjorn Helgaas @ 2017-08-25  4:22 UTC (permalink / raw)
  To: Z.q. Hou
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian,
	Mingkai Hu, Roy Zang, svarbanov, niklas.cassel, jesper.nilsson

On Fri, Aug 25, 2017 at 03:16:36AM +0000, Z.q. Hou wrote:
> Hi Bjorn,
> 
> Thanks a lot for your comments!
> 
> > -----Original Message-----
> > From: Bjorn Helgaas [mailto:helgaas@kernel.org]
> > Sent: 2017年8月25日 1:12
> > To: Z.q. Hou <zhiqiang.hou@nxp.com>
> > Cc: linux-pci@vger.kernel.org; bhelgaas@google.com;
> > jingoohan1@gmail.com; Joao.Pinto@synopsys.com; M.h. Lian
> > <minghuan.lian@nxp.com>; Mingkai Hu <mingkai.hu@nxp.com>; Roy Zang
> > <roy.zang@nxp.com>; svarbanov@mm-sol.com; niklas.cassel@axis.com;
> > jesper.nilsson@axis.com
> > Subject: Re: [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
> > 
> > On Wed, Aug 23, 2017 at 02:08:51PM +0800, Zhiqiang Hou wrote:
> > > From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> > >
> > > Make the ls1021a's host_init reuse layerscape platform's common
> > > host_init function.
> > 
> > This patch does two things:
> > 
> >   1) Moves ls1021_pcie_host_init() to a different place in the file
> >   2) Calls ls_pcie_host_init() instead of repeating that code in
> >      ls1021_pcie_host_init()
> > 
> > Those should be separate patches so they're easier to review.
> > 
> > Or if you don't really need to move ls1021_pcie_host_init() to a different place,
> > that would be even easier.
> 
> Moved ls1021_pcie_host_init() to this place behand the func ls_pcie_host_init is to call ls_pcie_host_init without adding a declaration of it. Is it necessary to separate it?

Yes, please.  I want to see one patch that *only* moves the function
(and mentions why you're moving it) and another that *only* calls
ls_pcie_host_init() instead of repeating that code in
ls1021_pcie_host_init().  That way, both patches are trivial to
review.  The combined one is not trivial to review.

> > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> > > ---
> > > V4:
> > >  - no change
> > >
> > >  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 3aa34214643c..57b86a0cd2c8 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.14.1
> > >
> 
> Thanks,
> Zhiqiang
> 

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

* RE: [PATCHv4 4/9] PCI: layerscape: refactor the host_init function
  2017-08-25  4:22       ` Bjorn Helgaas
@ 2017-08-25  6:51         ` Z.q. Hou
  0 siblings, 0 replies; 18+ messages in thread
From: Z.q. Hou @ 2017-08-25  6:51 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian,
	Mingkai Hu, Roy Zang, svarbanov, niklas.cassel, jesper.nilsson

SGkgQmpvcm4sDQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86aGVsZ2Fh
c0BrZXJuZWwub3JnXQ0KPiBTZW50OiAyMDE35bm0OOaciDI15pelIDEyOjIzDQo+IFRvOiBaLnEu
IEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+DQo+IENjOiBsaW51eC1wY2lAdmdlci5rZXJuZWwu
b3JnOyBiaGVsZ2Fhc0Bnb29nbGUuY29tOw0KPiBqaW5nb29oYW4xQGdtYWlsLmNvbTsgSm9hby5Q
aW50b0BzeW5vcHN5cy5jb207IE0uaC4gTGlhbg0KPiA8bWluZ2h1YW4ubGlhbkBueHAuY29tPjsg
TWluZ2thaSBIdSA8bWluZ2thaS5odUBueHAuY29tPjsgUm95IFphbmcNCj4gPHJveS56YW5nQG54
cC5jb20+OyBzdmFyYmFub3ZAbW0tc29sLmNvbTsgbmlrbGFzLmNhc3NlbEBheGlzLmNvbTsNCj4g
amVzcGVyLm5pbHNzb25AYXhpcy5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSHY0IDQvOV0gUENJ
OiBsYXllcnNjYXBlOiByZWZhY3RvciB0aGUgaG9zdF9pbml0IGZ1bmN0aW9uDQo+IA0KPiBPbiBG
cmksIEF1ZyAyNSwgMjAxNyBhdCAwMzoxNjozNkFNICswMDAwLCBaLnEuIEhvdSB3cm90ZToNCj4g
PiBIaSBCam9ybiwNCj4gPg0KPiA+IFRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCj4g
Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEJqb3JuIEhl
bGdhYXMgW21haWx0bzpoZWxnYWFzQGtlcm5lbC5vcmddDQo+ID4gPiBTZW50OiAyMDE35bm0OOac
iDI15pelIDE6MTINCj4gPiA+IFRvOiBaLnEuIEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+DQo+
ID4gPiBDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgYmhlbGdhYXNAZ29vZ2xlLmNvbTsN
Cj4gPiA+IGppbmdvb2hhbjFAZ21haWwuY29tOyBKb2FvLlBpbnRvQHN5bm9wc3lzLmNvbTsgTS5o
LiBMaWFuDQo+ID4gPiA8bWluZ2h1YW4ubGlhbkBueHAuY29tPjsgTWluZ2thaSBIdSA8bWluZ2th
aS5odUBueHAuY29tPjsgUm95IFphbmcNCj4gPiA+IDxyb3kuemFuZ0BueHAuY29tPjsgc3ZhcmJh
bm92QG1tLXNvbC5jb207IG5pa2xhcy5jYXNzZWxAYXhpcy5jb207DQo+ID4gPiBqZXNwZXIubmls
c3NvbkBheGlzLmNvbQ0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSHY0IDQvOV0gUENJOiBsYXll
cnNjYXBlOiByZWZhY3RvciB0aGUgaG9zdF9pbml0DQo+ID4gPiBmdW5jdGlvbg0KPiA+ID4NCj4g
PiA+IE9uIFdlZCwgQXVnIDIzLCAyMDE3IGF0IDAyOjA4OjUxUE0gKzA4MDAsIFpoaXFpYW5nIEhv
dSB3cm90ZToNCj4gPiA+ID4gRnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNv
bT4NCj4gPiA+ID4NCj4gPiA+ID4gTWFrZSB0aGUgbHMxMDIxYSdzIGhvc3RfaW5pdCByZXVzZSBs
YXllcnNjYXBlIHBsYXRmb3JtJ3MgY29tbW9uDQo+ID4gPiA+IGhvc3RfaW5pdCBmdW5jdGlvbi4N
Cj4gPiA+DQo+ID4gPiBUaGlzIHBhdGNoIGRvZXMgdHdvIHRoaW5nczoNCj4gPiA+DQo+ID4gPiAg
IDEpIE1vdmVzIGxzMTAyMV9wY2llX2hvc3RfaW5pdCgpIHRvIGEgZGlmZmVyZW50IHBsYWNlIGlu
IHRoZSBmaWxlDQo+ID4gPiAgIDIpIENhbGxzIGxzX3BjaWVfaG9zdF9pbml0KCkgaW5zdGVhZCBv
ZiByZXBlYXRpbmcgdGhhdCBjb2RlIGluDQo+ID4gPiAgICAgIGxzMTAyMV9wY2llX2hvc3RfaW5p
dCgpDQo+ID4gPg0KPiA+ID4gVGhvc2Ugc2hvdWxkIGJlIHNlcGFyYXRlIHBhdGNoZXMgc28gdGhl
eSdyZSBlYXNpZXIgdG8gcmV2aWV3Lg0KPiA+ID4NCj4gPiA+IE9yIGlmIHlvdSBkb24ndCByZWFs
bHkgbmVlZCB0byBtb3ZlIGxzMTAyMV9wY2llX2hvc3RfaW5pdCgpIHRvIGENCj4gPiA+IGRpZmZl
cmVudCBwbGFjZSwgdGhhdCB3b3VsZCBiZSBldmVuIGVhc2llci4NCj4gPg0KPiA+IE1vdmVkIGxz
MTAyMV9wY2llX2hvc3RfaW5pdCgpIHRvIHRoaXMgcGxhY2UgYmVoYW5kIHRoZSBmdW5jDQo+IGxz
X3BjaWVfaG9zdF9pbml0IGlzIHRvIGNhbGwgbHNfcGNpZV9ob3N0X2luaXQgd2l0aG91dCBhZGRp
bmcgYSBkZWNsYXJhdGlvbiBvZiBpdC4NCj4gSXMgaXQgbmVjZXNzYXJ5IHRvIHNlcGFyYXRlIGl0
Pw0KPiANCj4gWWVzLCBwbGVhc2UuICBJIHdhbnQgdG8gc2VlIG9uZSBwYXRjaCB0aGF0ICpvbmx5
KiBtb3ZlcyB0aGUgZnVuY3Rpb24gKGFuZA0KPiBtZW50aW9ucyB3aHkgeW91J3JlIG1vdmluZyBp
dCkgYW5kIGFub3RoZXIgdGhhdCAqb25seSogY2FsbHMNCj4gbHNfcGNpZV9ob3N0X2luaXQoKSBp
bnN0ZWFkIG9mIHJlcGVhdGluZyB0aGF0IGNvZGUgaW4gbHMxMDIxX3BjaWVfaG9zdF9pbml0KCku
DQo+IFRoYXQgd2F5LCBib3RoIHBhdGNoZXMgYXJlIHRyaXZpYWwgdG8gcmV2aWV3LiAgVGhlIGNv
bWJpbmVkIG9uZSBpcyBub3QgdHJpdmlhbA0KPiB0byByZXZpZXcuDQoNCkdvdCBpdCwgd2lsbCBz
ZXBhcmF0ZSBpdCBpbiBuZXh0IHZlcnNpb24uDQoNClRoYW5rcywNClpoaXFpYW5nDQo=

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

end of thread, other threads:[~2017-08-25  6:51 UTC | newest]

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

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.