All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
@ 2017-07-06  6:33 Zhiqiang Hou
  2017-07-06  6:33 ` [PATCH 2/3] PCI: designware: enable write permission before updating class code Zhiqiang Hou
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Zhiqiang Hou @ 2017-07-06  6:33 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto; +Cc: 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>
---
 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 b4d2a89..bbdf35b 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] 13+ messages in thread

* [PATCH 2/3] PCI: designware: enable write permission before updating class code
  2017-07-06  6:33 [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
@ 2017-07-06  6:33 ` Zhiqiang Hou
  2017-07-06  6:33 ` [PATCH 3/3] PCI: layerscape: refactor the host_init function Zhiqiang Hou
  2017-07-06  9:44 ` [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Joao Pinto
  2 siblings, 0 replies; 13+ messages in thread
From: Zhiqiang Hou @ 2017-07-06  6:33 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto; +Cc: Hou Zhiqiang

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

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
 drivers/pci/dwc/pcie-designware-host.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c
index d29c020..6e10cda 100644
--- a/drivers/pci/dwc/pcie-designware-host.c
+++ b/drivers/pci/dwc/pcie-designware-host.c
@@ -634,8 +634,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] 13+ messages in thread

* [PATCH 3/3] PCI: layerscape: refactor the host_init function
  2017-07-06  6:33 [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
  2017-07-06  6:33 ` [PATCH 2/3] PCI: designware: enable write permission before updating class code Zhiqiang Hou
@ 2017-07-06  6:33 ` Zhiqiang Hou
  2017-08-02 21:11   ` Bjorn Helgaas
  2017-07-06  9:44 ` [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Joao Pinto
  2 siblings, 1 reply; 13+ messages in thread
From: Zhiqiang Hou @ 2017-07-06  6:33 UTC (permalink / raw)
  To: linux-pci, bhelgaas, jingoohan1, Joao.Pinto; +Cc: Hou Zhiqiang, Minghuan Lian

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

Main changes:
- Make the ls1021a's host_init reuse layerscape platform's common
  host_init function.
- Will not use the outbound windows configured by bootloader, but
  introduce DWC common setup function dw_pcie_setup_rc and disable
  the bootloader configured outbound windows. And remove the duplicate
  class field fix code.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Signed-off-by: Minghuan Lian <Minghuan.Lian@nxp.com>
---
 drivers/pci/dwc/pci-layerscape.c | 85 ++++++++++++++++++++++------------------
 1 file changed, 46 insertions(+), 39 deletions(-)

diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
index fd86128..9bed3cd 100644
--- a/drivers/pci/dwc/pci-layerscape.c
+++ b/drivers/pci/dwc/pci-layerscape.c
@@ -33,7 +33,8 @@
 
 /* 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
 
 struct ls_pcie_drvdata {
 	u32 lut_offset;
@@ -69,15 +70,9 @@ static void ls_pcie_clear_multifunction(struct ls_pcie *pcie)
 {
 	struct dw_pcie *pci = pcie->pci;
 
+	dw_pcie_dbi_ro_wr_en(pci);
 	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);
+	dw_pcie_dbi_ro_wr_dis(pci);
 }
 
 /* Drop MSG TLP except for Vendor MSG */
@@ -91,6 +86,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;
@@ -108,33 +111,6 @@ static int ls1021_pcie_link_up(struct dw_pcie *pci)
 	return 1;
 }
 
-static void 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];
-
-	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
-						     "fsl,pcie-scfg");
-	if (IS_ERR(pcie->scfg)) {
-		dev_err(dev, "No syscfg phandle specified\n");
-		pcie->scfg = NULL;
-		return;
-	}
-
-	if (of_property_read_u32_array(dev->of_node,
-				       "fsl,pcie-scfg", index, 2)) {
-		pcie->scfg = NULL;
-		return;
-	}
-	pcie->index = index[1];
-
-	dw_pcie_setup_rc(pp);
-
-	ls_pcie_drop_msg_tlp(pcie);
-}
-
 static int ls_pcie_link_up(struct dw_pcie *pci)
 {
 	struct ls_pcie *pcie = to_ls_pcie(pci);
@@ -155,11 +131,42 @@ static void 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);
 
-	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
-	ls_pcie_fix_class(pcie);
+	/*
+	 * 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);
+
 	ls_pcie_clear_multifunction(pcie);
 	ls_pcie_drop_msg_tlp(pcie);
-	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
+
+	dw_pcie_setup_rc(pp);
+}
+
+static void 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];
+
+	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
+						     "fsl,pcie-scfg");
+	if (IS_ERR(pcie->scfg)) {
+		dev_err(dev, "No syscfg phandle specified\n");
+		pcie->scfg = NULL;
+		return;
+	}
+
+	if (of_property_read_u32_array(dev->of_node,
+				       "fsl,pcie-scfg", index, 2)) {
+		pcie->scfg = NULL;
+		return;
+	}
+	pcie->index = index[1];
+
+	ls_pcie_host_init(pp);
 }
 
 static int ls_pcie_msi_host_init(struct pcie_port *pp,
-- 
2.1.0.27.g96db324

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

* Re: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-06  6:33 [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
  2017-07-06  6:33 ` [PATCH 2/3] PCI: designware: enable write permission before updating class code Zhiqiang Hou
  2017-07-06  6:33 ` [PATCH 3/3] PCI: layerscape: refactor the host_init function Zhiqiang Hou
@ 2017-07-06  9:44 ` Joao Pinto
  2017-07-07  3:48   ` Z.q. Hou
  2017-08-02 21:25   ` Bjorn Helgaas
  2 siblings, 2 replies; 13+ messages in thread
From: Joao Pinto @ 2017-07-06  9:44 UTC (permalink / raw)
  To: Zhiqiang Hou, linux-pci, Joao.Pinto; +Cc: bhelgaas, jingoohan1


Hi Zhiqiang,

Às 7:33 AM de 7/6/2017, Zhiqiang Hou escreveu:
> 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.

I would suggest you to add a cover-letter next time to explain the global
picture of the patch-set.

I understand your need for this patch, but I don't agree on the approach.
Sometimes the people in charge of the hardware design / configuration, forget to
specify the device class and that can be problematic for some drivers, and so
the typical workaround is to set it in the driver using a quirk for example.

You can see some examples here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/quirks.c

Thanks,
Joao


> 
> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> ---
>  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 b4d2a89..bbdf35b 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);
> 

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

* RE: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-06  9:44 ` [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Joao Pinto
@ 2017-07-07  3:48   ` Z.q. Hou
  2017-07-07  8:53     ` Joao Pinto
  2017-08-02 21:25   ` Bjorn Helgaas
  1 sibling, 1 reply; 13+ messages in thread
From: Z.q. Hou @ 2017-07-07  3:48 UTC (permalink / raw)
  To: Joao Pinto, linux-pci; +Cc: bhelgaas, jingoohan1

SGkgSm9hbywNCg0KVGhhbmtzIGEgbG90IGZvciB5b3VyIGNvbW1lbnRzIQ0KDQo+IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEpvYW8gUGludG8gW21haWx0bzpKb2FvLlBpbnRv
QHN5bm9wc3lzLmNvbV0NCj4gU2VudDogMjAxN+W5tDfmnIg25pelIDE3OjQ0DQo+IFRvOiBaLnEu
IEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+OyBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnOw0K
PiBKb2FvLlBpbnRvQHN5bm9wc3lzLmNvbQ0KPiBDYzogYmhlbGdhYXNAZ29vZ2xlLmNvbTsgamlu
Z29vaGFuMUBnbWFpbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzNdIFBDSTogZGVzaWdu
d2FyZTogYWRkIGFjY2Vzc29ycyBmb3Igd3JpdGUgcGVybWlzc2lvbg0KPiBvZiBEQkkgcmVhZC1v
bmx5IHJlZ2lzdGVycw0KPiANCj4gDQo+IEhpIFpoaXFpYW5nLA0KPiANCj4gw4BzIDc6MzMgQU0g
ZGUgNy82LzIwMTcsIFpoaXFpYW5nIEhvdSBlc2NyZXZldToNCj4gPiBGcm9tOiBIb3UgWmhpcWlh
bmcgPFpoaXFpYW5nLkhvdUBueHAuY29tPg0KPiA+DQo+ID4gVGhlIHJlYWQtb25seSBEQkkgcmVn
aXN0ZXJzIGNhbiBiZSB3cml0dGVuIG92ZXIgdGhlIERCSSB3aGVuIHNldCB0aGUNCj4gPiAiV3Jp
dGUgdG8gUk8gUmVnaXN0ZXJzIFVzaW5nIERCSSIgKERCSV9ST19XUl9FTikgZmllbGQgb2YgdGhl
DQo+ID4gTUlTQ19DT05UUk9MXzFfT0ZGIHJlZ2lzdGVyLg0KPiANCj4gSSB3b3VsZCBzdWdnZXN0
IHlvdSB0byBhZGQgYSBjb3Zlci1sZXR0ZXIgbmV4dCB0aW1lIHRvIGV4cGxhaW4gdGhlIGdsb2Jh
bA0KPiBwaWN0dXJlIG9mIHRoZSBwYXRjaC1zZXQuDQoNClRoYW5rcywgSSB3aWxsLg0KDQo+IA0K
PiBJIHVuZGVyc3RhbmQgeW91ciBuZWVkIGZvciB0aGlzIHBhdGNoLCBidXQgSSBkb24ndCBhZ3Jl
ZSBvbiB0aGUgYXBwcm9hY2guDQoNCkluIHRoZSBEV0MgY29tbW9uIGNvZGUsIHRoZXJlIGlzIGEg
ZnVuY3Rpb24gd3JpdGUgYSBEQkkgcmVhZC1vbmx5IHJlZ2lzdGVyICdEZXZpY2UgY2xhc3MgY29k
ZScsIGFuZCB0aGUgZmlyc3QgMiBwYXRjaGVzIGlzIHRvIGZpeCBpdC4NClRoZSAzcmQgcGF0Y2gg
aXMgdG8gcmVmYWN0b3IgdGhlIExheWVyc2NhcGUgUENJZSBkcml2ZXIncyBob3N0X2luaXQgZnVu
Y3Rpb24gYW5kIHJldXNlIHRoZSBuZXcgYWRkZWQgYWNjZXNzb3JzLg0KDQo+IFNvbWV0aW1lcyB0
aGUgcGVvcGxlIGluIGNoYXJnZSBvZiB0aGUgaGFyZHdhcmUgZGVzaWduIC8gY29uZmlndXJhdGlv
biwgZm9yZ2V0DQo+IHRvIHNwZWNpZnkgdGhlIGRldmljZSBjbGFzcyBhbmQgdGhhdCBjYW4gYmUg
cHJvYmxlbWF0aWMgZm9yIHNvbWUgZHJpdmVycywgYW5kDQo+IHNvIHRoZSB0eXBpY2FsIHdvcmth
cm91bmQgaXMgdG8gc2V0IGl0IGluIHRoZSBkcml2ZXIgdXNpbmcgYSBxdWlyayBmb3IgZXhhbXBs
ZS4NCj4gDQo+IFlvdSBjYW4gc2VlIHNvbWUgZXhhbXBsZXMgaGVyZToNCj4gaHR0cHM6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3Ry
ZWUvZHJpdmVycy8NCj4gcGNpL3F1aXJrcy5jDQoNCkkgZG9uJ3Qga25vdyB0aGUgUENJIHF1aXJr
cywgZG8geW91IG1lYW4gcmVtb3ZlIHRoZSBwY2kgRGV2aWNlIENsYXNzIGZpeCBjb2RlIGZyb20g
dGhlIERXQyBjb21tb24gY29kZSBhbmQgYWRkIGl0IHRvIHF1aXJrcz8gIA0KDQpUaGFua3MsDQpa
aGlxaWFuZyANCg==

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

* Re: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-07  3:48   ` Z.q. Hou
@ 2017-07-07  8:53     ` Joao Pinto
  2017-07-11  4:11       ` Z.q. Hou
  0 siblings, 1 reply; 13+ messages in thread
From: Joao Pinto @ 2017-07-07  8:53 UTC (permalink / raw)
  To: Z.q. Hou, Joao Pinto, linux-pci, bhelgaas; +Cc: jingoohan1


Hi Zhiqiang,

Às 4:48 AM de 7/7/2017, Z.q. Hou escreveu:
> Hi Joao,
> 
> 
> 
> Thanks a lot for your comments!
> 
> 
> 
>> -----Original Message-----
> 
>> From: Joao Pinto [mailto:Joao.Pinto@synopsys.com]
> 
>> Sent: 2017年7月6日 17:44
> 
>> To: Z.q. Hou <zhiqiang.hou@nxp.com>; linux-pci@vger.kernel.org;
> 
>> Joao.Pinto@synopsys.com
> 
>> Cc: bhelgaas@google.com; jingoohan1@gmail.com
> 
>> Subject: Re: [PATCH 1/3] PCI: designware: add accessors for write permission
> 
>> of DBI read-only registers
> 
>>
> 
>>
> 
>> Hi Zhiqiang,
> 
>>
> 
>> Às 7:33 AM de 7/6/2017, Zhiqiang Hou escreveu:
> 
>>> 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.
> 
>>
> 
>> I would suggest you to add a cover-letter next time to explain the global
> 
>> picture of the patch-set.
> 
> 
> 
> Thanks, I will.
> 
> 
> 
>>
> 
>> I understand your need for this patch, but I don't agree on the approach.
> 
> 
> 
> In the DWC common code, there is a function write a DBI read-only register 'Device class code', and the first 2 patches is to fix it.
> 
> The 3rd patch is to refactor the Layerscape PCIe driver's host_init function and reuse the new added accessors.
> 
> 
> 
>> Sometimes the people in charge of the hardware design / configuration, forget
> 
>> to specify the device class and that can be problematic for some drivers, and
> 
>> so the typical workaround is to set it in the driver using a quirk for example.
> 
>>
> 
>> You can see some examples here:
> 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__git.kernel.org_pub_scm_linux_kernel_git_torvalds_linux.git_tree_drivers_&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=s2fO0hii0OGNOv9qQy_HRXy-xAJUD1NNoEcc3io_kx0&m=0DrBCvOc_J7LaMXBei1qCXxxfbLxWaVErKZ6Rkm6bUc&s=sOEmExQFqrCEmpAx9LjSeKRvkW1D-W82ckX5WGCgFWw&e= 
> 
>> pci/quirks.c
> 
> 
> 
> I don't know the PCI quirks, do you mean remove the pci Device Class fix code from the DWC common code and add it to quirks?  
> 

In my opinion adding fixes to a common code is not a good approach. I would
suggest the fix to go into the quirks file.

@Bjorn: The quirks file is the best place for this type of fixes right?

Thanks,
Joao

> 
> 
> Thanks,
> 
> Zhiqiang 
> 

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

* RE: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-07  8:53     ` Joao Pinto
@ 2017-07-11  4:11       ` Z.q. Hou
  2017-07-17 19:41         ` Jingoo Han
  0 siblings, 1 reply; 13+ messages in thread
From: Z.q. Hou @ 2017-07-11  4:11 UTC (permalink / raw)
  To: Joao Pinto, linux-pci, bhelgaas; +Cc: jingoohan1

SGkgQmpvcm4sDQoNCkR1ZSB0byBhbGwgRnJlZXNjYWxlIExheWVyc2NwZSBQQ0llIGNvbnRyb2xs
ZXJzIGhhdmUgdG8gZml4IHRoZSBDbGFzcyBjb2RlLCBhbmQgdGhpcyBmaXh1cCBleGlzdGVkIGlu
IGJvdGggTGF5ZXJzY2FwZSBwY2llIGRyaXZlciBhbmQgRFdDIGNvbW1vbiBjb2RlLCBzbyBJIHdh
bnQgdG8gcmV1c2UgdGhlIGZpeHVwIGluIERXQyBjb21tb24gY29kZS4NCkNhbiB5b3UgZ2l2ZSBt
ZSBhbnkgc3VnZ2VzdGlvbj8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t
OiBKb2FvIFBpbnRvIFttYWlsdG86Sm9hby5QaW50b0BzeW5vcHN5cy5jb21dDQo+IFNlbnQ6IDIw
MTflubQ35pyIN+aXpSAxNjo1Mw0KPiBUbzogWi5xLiBIb3UgPHpoaXFpYW5nLmhvdUBueHAuY29t
PjsgSm9hbyBQaW50bw0KPiA8Sm9hby5QaW50b0BzeW5vcHN5cy5jb20+OyBsaW51eC1wY2lAdmdl
ci5rZXJuZWwub3JnOw0KPiBiaGVsZ2Fhc0Bnb29nbGUuY29tDQo+IENjOiBqaW5nb29oYW4xQGdt
YWlsLmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvM10gUENJOiBkZXNpZ253YXJlOiBhZGQg
YWNjZXNzb3JzIGZvciB3cml0ZSBwZXJtaXNzaW9uDQo+IG9mIERCSSByZWFkLW9ubHkgcmVnaXN0
ZXJzDQo+IA0KPiANCj4gSGkgWmhpcWlhbmcsDQo+IA0KPiDDgHMgNDo0OCBBTSBkZSA3LzcvMjAx
NywgWi5xLiBIb3UgZXNjcmV2ZXU6DQo+ID4gSGkgSm9hbywNCj4gPg0KPiA+DQo+ID4NCj4gPiBU
aGFua3MgYSBsb3QgZm9yIHlvdXIgY29tbWVudHMhDQo+ID4NCj4gPg0KPiA+DQo+ID4+IC0tLS0t
T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4NCj4gPj4gRnJvbTogSm9hbyBQaW50byBbbWFpbHRv
OkpvYW8uUGludG9Ac3lub3BzeXMuY29tXQ0KPiA+DQo+ID4+IFNlbnQ6IDIwMTflubQ35pyINuaX
pSAxNzo0NA0KPiA+DQo+ID4+IFRvOiBaLnEuIEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+OyBs
aW51eC1wY2lAdmdlci5rZXJuZWwub3JnOw0KPiA+DQo+ID4+IEpvYW8uUGludG9Ac3lub3BzeXMu
Y29tDQo+ID4NCj4gPj4gQ2M6IGJoZWxnYWFzQGdvb2dsZS5jb207IGppbmdvb2hhbjFAZ21haWwu
Y29tDQo+ID4NCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzNdIFBDSTogZGVzaWdud2FyZTog
YWRkIGFjY2Vzc29ycyBmb3Igd3JpdGUNCj4gPj4gcGVybWlzc2lvbg0KPiA+DQo+ID4+IG9mIERC
SSByZWFkLW9ubHkgcmVnaXN0ZXJzDQo+ID4NCj4gPj4NCj4gPg0KPiA+Pg0KPiA+DQo+ID4+IEhp
IFpoaXFpYW5nLA0KPiA+DQo+ID4+DQo+ID4NCj4gPj4gw4BzIDc6MzMgQU0gZGUgNy82LzIwMTcs
IFpoaXFpYW5nIEhvdSBlc2NyZXZldToNCj4gPg0KPiA+Pj4gRnJvbTogSG91IFpoaXFpYW5nIDxa
aGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPg0KPiA+Pj4NCj4gPg0KPiA+Pj4gVGhlIHJlYWQtb25s
eSBEQkkgcmVnaXN0ZXJzIGNhbiBiZSB3cml0dGVuIG92ZXIgdGhlIERCSSB3aGVuIHNldCB0aGUN
Cj4gPg0KPiA+Pj4gIldyaXRlIHRvIFJPIFJlZ2lzdGVycyBVc2luZyBEQkkiIChEQklfUk9fV1Jf
RU4pIGZpZWxkIG9mIHRoZQ0KPiA+DQo+ID4+PiBNSVNDX0NPTlRST0xfMV9PRkYgcmVnaXN0ZXIu
DQo+ID4NCj4gPj4NCj4gPg0KPiA+PiBJIHdvdWxkIHN1Z2dlc3QgeW91IHRvIGFkZCBhIGNvdmVy
LWxldHRlciBuZXh0IHRpbWUgdG8gZXhwbGFpbiB0aGUNCj4gPj4gZ2xvYmFsDQo+ID4NCj4gPj4g
cGljdHVyZSBvZiB0aGUgcGF0Y2gtc2V0Lg0KPiA+DQo+ID4NCj4gPg0KPiA+IFRoYW5rcywgSSB3
aWxsLg0KPiA+DQo+ID4NCj4gPg0KPiA+Pg0KPiA+DQo+ID4+IEkgdW5kZXJzdGFuZCB5b3VyIG5l
ZWQgZm9yIHRoaXMgcGF0Y2gsIGJ1dCBJIGRvbid0IGFncmVlIG9uIHRoZSBhcHByb2FjaC4NCj4g
Pg0KPiA+DQo+ID4NCj4gPiBJbiB0aGUgRFdDIGNvbW1vbiBjb2RlLCB0aGVyZSBpcyBhIGZ1bmN0
aW9uIHdyaXRlIGEgREJJIHJlYWQtb25seSByZWdpc3Rlcg0KPiAnRGV2aWNlIGNsYXNzIGNvZGUn
LCBhbmQgdGhlIGZpcnN0IDIgcGF0Y2hlcyBpcyB0byBmaXggaXQuDQo+ID4NCj4gPiBUaGUgM3Jk
IHBhdGNoIGlzIHRvIHJlZmFjdG9yIHRoZSBMYXllcnNjYXBlIFBDSWUgZHJpdmVyJ3MgaG9zdF9p
bml0IGZ1bmN0aW9uDQo+IGFuZCByZXVzZSB0aGUgbmV3IGFkZGVkIGFjY2Vzc29ycy4NCj4gPg0K
PiA+DQo+ID4NCj4gPj4gU29tZXRpbWVzIHRoZSBwZW9wbGUgaW4gY2hhcmdlIG9mIHRoZSBoYXJk
d2FyZSBkZXNpZ24gLw0KPiA+PiBjb25maWd1cmF0aW9uLCBmb3JnZXQNCj4gPg0KPiA+PiB0byBz
cGVjaWZ5IHRoZSBkZXZpY2UgY2xhc3MgYW5kIHRoYXQgY2FuIGJlIHByb2JsZW1hdGljIGZvciBz
b21lDQo+ID4+IGRyaXZlcnMsIGFuZA0KPiA+DQo+ID4+IHNvIHRoZSB0eXBpY2FsIHdvcmthcm91
bmQgaXMgdG8gc2V0IGl0IGluIHRoZSBkcml2ZXIgdXNpbmcgYSBxdWlyayBmb3IgZXhhbXBsZS4N
Cj4gPg0KPiA+Pg0KPiA+DQo+ID4+IFlvdSBjYW4gc2VlIHNvbWUgZXhhbXBsZXMgaGVyZToNCj4g
Pg0KPiA+PiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMt
M0FfX2dpdC5rZXJuZWwub3JnX3ANCj4gPj4gdWJfc2NtX2xpbnV4X2tlcm5lbF9naXRfdG9ydmFs
ZHNfbGludXguZ2l0X3RyZWVfZHJpdmVyc18mZD1Ed0lHYVEmYz1EDQo+ID4+DQo+IFBMNl9YXzZK
a1hGeDdBWFdxQjB0ZyZyPXMyZk8waGlpME9HTk92OXFReV9IUlh5LXhBSlVEMU5Ob0VjYzNpbw0K
PiBfa3gwJm0NCj4gPj4NCj4gPTBEckJDdk9jX0o3TGFNWEJlaTFxQ1h4eGZiTHhXYVZFcktaNlJr
bTZiVWMmcz1zT0VtRXhRRnFyQ0VtcEENCj4geDlMalNlSw0KPiA+PiBSdmtXMUQtVzgyY2tYNVdH
Q2dGV3cmZT0NCj4gPg0KPiA+PiBwY2kvcXVpcmtzLmMNCj4gPg0KPiA+DQo+ID4NCj4gPiBJIGRv
bid0IGtub3cgdGhlIFBDSSBxdWlya3MsIGRvIHlvdSBtZWFuIHJlbW92ZSB0aGUgcGNpIERldmlj
ZSBDbGFzcyBmaXgNCj4gY29kZSBmcm9tIHRoZSBEV0MgY29tbW9uIGNvZGUgYW5kIGFkZCBpdCB0
byBxdWlya3M/DQo+ID4NCj4gDQo+IEluIG15IG9waW5pb24gYWRkaW5nIGZpeGVzIHRvIGEgY29t
bW9uIGNvZGUgaXMgbm90IGEgZ29vZCBhcHByb2FjaC4gSSB3b3VsZA0KPiBzdWdnZXN0IHRoZSBm
aXggdG8gZ28gaW50byB0aGUgcXVpcmtzIGZpbGUuDQo+IA0KPiBAQmpvcm46IFRoZSBxdWlya3Mg
ZmlsZSBpcyB0aGUgYmVzdCBwbGFjZSBmb3IgdGhpcyB0eXBlIG9mIGZpeGVzIHJpZ2h0Pw0KDQpU
aGFua3MsDQpaaGlxaWFuZw0KDQoNCg==

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

* Re: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-11  4:11       ` Z.q. Hou
@ 2017-07-17 19:41         ` Jingoo Han
  2017-07-18  3:00           ` Z.q. Hou
  0 siblings, 1 reply; 13+ messages in thread
From: Jingoo Han @ 2017-07-17 19:41 UTC (permalink / raw)
  To: 'Z.q. Hou', 'Joao Pinto', linux-pci, bhelgaas

On Tuesday, July 11, 2017 12:11 AM, Z.q. Hou wrote:
>=20
> Hi Bjorn,
>=20
> Due to all Freescale Layerscpe PCIe controllers have to fix the Class =
code,
> and this fixup existed in both Layerscape pcie driver and DWC common =
code,
> so I want to reuse the fixup in DWC common code.
> Can you give me any suggestion?

Please don't add your comment on top of the email.


>=20
> > -----Original Message-----
> > From: Joao Pinto [mailto:Joao.Pinto@synopsys.com]
> > Sent: 2017=E5=B9=B47=E6=9C=887=E6=97=A5 16:53
> > To: Z.q. Hou <zhiqiang.hou@nxp.com>; Joao Pinto
> > <Joao.Pinto@synopsys.com>; linux-pci@vger.kernel.org;
> > bhelgaas@google.com
> > Cc: jingoohan1@gmail.com
> > Subject: Re: [PATCH 1/3] PCI: designware: add accessors for write
> permission
> > of DBI read-only registers
> >
> >
> > Hi Zhiqiang,
> >
> > =C3=80s 4:48 AM de 7/7/2017, Z.q. Hou escreveu:
> > > Hi Joao,
> > >
> > >
> > >
> > > Thanks a lot for your comments!
> > >
> > >
> > >
> > >> -----Original Message-----
> > >
> > >> From: Joao Pinto [mailto:Joao.Pinto@synopsys.com]
> > >
> > >> Sent: 2017=E5=B9=B47=E6=9C=886=E6=97=A5 17:44
> > >
> > >> To: Z.q. Hou <zhiqiang.hou@nxp.com>; linux-pci@vger.kernel.org;
> > >
> > >> Joao.Pinto@synopsys.com
> > >
> > >> Cc: bhelgaas@google.com; jingoohan1@gmail.com
> > >
> > >> Subject: Re: [PATCH 1/3] PCI: designware: add accessors for write
> > >> permission
> > >
> > >> of DBI read-only registers
> > >
> > >>
> > >
> > >>
> > >
> > >> Hi Zhiqiang,
> > >
> > >>
> > >
> > >> =C3=80s 7:33 AM de 7/6/2017, Zhiqiang Hou escreveu:
> > >
> > >>> 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.
> > >
> > >>
> > >
> > >> I would suggest you to add a cover-letter next time to explain =
the
> > >> global
> > >
> > >> picture of the patch-set.
> > >
> > >
> > >
> > > Thanks, I will.
> > >
> > >
> > >
> > >>
> > >
> > >> I understand your need for this patch, but I don't agree on the
> approach.
> > >
> > >
> > >
> > > In the DWC common code, there is a function write a DBI read-only
> register
> > 'Device class code', and the first 2 patches is to fix it.
> > >
> > > The 3rd patch is to refactor the Layerscape PCIe driver's =
host_init
> function
> > and reuse the new added accessors.
> > >
> > >
> > >
> > >> Sometimes the people in charge of the hardware design /
> > >> configuration, forget
> > >
> > >> to specify the device class and that can be problematic for some
> > >> drivers, and
> > >
> > >> so the typical workaround is to set it in the driver using a =
quirk
> for example.
> > >
> > >>
> > >
> > >> You can see some examples here:
> > >
> > >> =
https://urldefense.proofpoint.com/v2/url?u=3Dhttps-3A__git.kernel.org_p
> > >> =
ub_scm_linux_kernel_git_torvalds_linux.git_tree_drivers_&d=3DDwIGaQ&c=3DD=

> > >>
> > PL6_X_6JkXFx7AXWqB0tg&r=3Ds2fO0hii0OGNOv9qQy_HRXy-xAJUD1NNoEcc3io
> > _kx0&m
> > >>
> > =3D0DrBCvOc_J7LaMXBei1qCXxxfbLxWaVErKZ6Rkm6bUc&s=3DsOEmExQFqrCEmpA
> > x9LjSeK
> > >> RvkW1D-W82ckX5WGCgFWw&e=3D
> > >
> > >> pci/quirks.c
> > >
> > >
> > >
> > > I don't know the PCI quirks, do you mean remove the pci Device =
Class
> fix
> > code from the DWC common code and add it to quirks?
> > >
> >
> > In my opinion adding fixes to a common code is not a good approach. =
I
> would
> > suggest the fix to go into the quirks file.

Your answer should be added to here.
Then, it will help other people follow this email thread.

Best regards,
Jingoo Han

> >
> > @Bjorn: The quirks file is the best place for this type of fixes =
right?
>=20
> Thanks,
> Zhiqiang
>=20

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

* RE: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-17 19:41         ` Jingoo Han
@ 2017-07-18  3:00           ` Z.q. Hou
  0 siblings, 0 replies; 13+ messages in thread
From: Z.q. Hou @ 2017-07-18  3:00 UTC (permalink / raw)
  To: Jingoo Han, 'Joao Pinto', linux-pci, bhelgaas

SGkgSmluZ29vIEhhbiwNCg0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzIQ0KDQo+IC0tLS0tT3Jp
Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEppbmdvbyBIYW4gW21haWx0bzpqaW5nb29oYW4x
QGdtYWlsLmNvbV0NCj4gU2VudDogMjAxN+W5tDfmnIgxOOaXpSAzOjQxDQo+IFRvOiBaLnEuIEhv
dSA8emhpcWlhbmcuaG91QG54cC5jb20+OyAnSm9hbyBQaW50bycNCj4gPEpvYW8uUGludG9Ac3lu
b3BzeXMuY29tPjsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gYmhlbGdhYXNAZ29vZ2xl
LmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvM10gUENJOiBkZXNpZ253YXJlOiBhZGQgYWNj
ZXNzb3JzIGZvciB3cml0ZSBwZXJtaXNzaW9uDQo+IG9mIERCSSByZWFkLW9ubHkgcmVnaXN0ZXJz
DQo+IA0KPiBPbiBUdWVzZGF5LCBKdWx5IDExLCAyMDE3IDEyOjExIEFNLCBaLnEuIEhvdSB3cm90
ZToNCj4gPg0KPiA+IEhpIEJqb3JuLA0KPiA+DQo+ID4gRHVlIHRvIGFsbCBGcmVlc2NhbGUgTGF5
ZXJzY3BlIFBDSWUgY29udHJvbGxlcnMgaGF2ZSB0byBmaXggdGhlIENsYXNzDQo+ID4gY29kZSwg
YW5kIHRoaXMgZml4dXAgZXhpc3RlZCBpbiBib3RoIExheWVyc2NhcGUgcGNpZSBkcml2ZXIgYW5k
IERXQw0KPiA+IGNvbW1vbiBjb2RlLCBzbyBJIHdhbnQgdG8gcmV1c2UgdGhlIGZpeHVwIGluIERX
QyBjb21tb24gY29kZS4NCj4gPiBDYW4geW91IGdpdmUgbWUgYW55IHN1Z2dlc3Rpb24/DQo+IA0K
PiBQbGVhc2UgZG9uJ3QgYWRkIHlvdXIgY29tbWVudCBvbiB0b3Agb2YgdGhlIGVtYWlsLg0KDQpP
aywgZ290IGl0Lg0KDQo+IA0KPiANCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t
LS0NCj4gPiA+IEZyb206IEpvYW8gUGludG8gW21haWx0bzpKb2FvLlBpbnRvQHN5bm9wc3lzLmNv
bV0NCj4gPiA+IFNlbnQ6IDIwMTflubQ35pyIN+aXpSAxNjo1Mw0KPiA+ID4gVG86IFoucS4gSG91
IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT47IEpvYW8gUGludG8NCj4gPiA+IDxKb2FvLlBpbnRvQHN5
bm9wc3lzLmNvbT47IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7DQo+ID4gPiBiaGVsZ2Fhc0Bn
b29nbGUuY29tDQo+ID4gPiBDYzogamluZ29vaGFuMUBnbWFpbC5jb20NCj4gPiA+IFN1YmplY3Q6
IFJlOiBbUEFUQ0ggMS8zXSBQQ0k6IGRlc2lnbndhcmU6IGFkZCBhY2Nlc3NvcnMgZm9yIHdyaXRl
DQo+ID4gcGVybWlzc2lvbg0KPiA+ID4gb2YgREJJIHJlYWQtb25seSByZWdpc3RlcnMNCj4gPiA+
DQo+ID4gPg0KPiA+ID4gSGkgWmhpcWlhbmcsDQo+ID4gPg0KPiA+ID4gw4BzIDQ6NDggQU0gZGUg
Ny83LzIwMTcsIFoucS4gSG91IGVzY3JldmV1Og0KPiA+ID4gPiBIaSBKb2FvLA0KPiA+ID4gPg0K
PiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3MgYSBsb3QgZm9yIHlvdXIgY29tbWVudHMh
DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh
Z2UtLS0tLQ0KPiA+ID4gPg0KPiA+ID4gPj4gRnJvbTogSm9hbyBQaW50byBbbWFpbHRvOkpvYW8u
UGludG9Ac3lub3BzeXMuY29tXQ0KPiA+ID4gPg0KPiA+ID4gPj4gU2VudDogMjAxN+W5tDfmnIg2
5pelIDE3OjQ0DQo+ID4gPiA+DQo+ID4gPiA+PiBUbzogWi5xLiBIb3UgPHpoaXFpYW5nLmhvdUBu
eHAuY29tPjsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gPiA+ID4NCj4gPiA+ID4+IEpv
YW8uUGludG9Ac3lub3BzeXMuY29tDQo+ID4gPiA+DQo+ID4gPiA+PiBDYzogYmhlbGdhYXNAZ29v
Z2xlLmNvbTsgamluZ29vaGFuMUBnbWFpbC5jb20NCj4gPiA+ID4NCj4gPiA+ID4+IFN1YmplY3Q6
IFJlOiBbUEFUQ0ggMS8zXSBQQ0k6IGRlc2lnbndhcmU6IGFkZCBhY2Nlc3NvcnMgZm9yIHdyaXRl
DQo+ID4gPiA+PiBwZXJtaXNzaW9uDQo+ID4gPiA+DQo+ID4gPiA+PiBvZiBEQkkgcmVhZC1vbmx5
IHJlZ2lzdGVycw0KPiA+ID4gPg0KPiA+ID4gPj4NCj4gPiA+ID4NCj4gPiA+ID4+DQo+ID4gPiA+
DQo+ID4gPiA+PiBIaSBaaGlxaWFuZywNCj4gPiA+ID4NCj4gPiA+ID4+DQo+ID4gPiA+DQo+ID4g
PiA+PiDDgHMgNzozMyBBTSBkZSA3LzYvMjAxNywgWmhpcWlhbmcgSG91IGVzY3JldmV1Og0KPiA+
ID4gPg0KPiA+ID4gPj4+IEZyb206IEhvdSBaaGlxaWFuZyA8WmhpcWlhbmcuSG91QG54cC5jb20+
DQo+ID4gPiA+DQo+ID4gPiA+Pj4NCj4gPiA+ID4NCj4gPiA+ID4+PiBUaGUgcmVhZC1vbmx5IERC
SSByZWdpc3RlcnMgY2FuIGJlIHdyaXR0ZW4gb3ZlciB0aGUgREJJIHdoZW4gc2V0DQo+ID4gPiA+
Pj4gdGhlDQo+ID4gPiA+DQo+ID4gPiA+Pj4gIldyaXRlIHRvIFJPIFJlZ2lzdGVycyBVc2luZyBE
QkkiIChEQklfUk9fV1JfRU4pIGZpZWxkIG9mIHRoZQ0KPiA+ID4gPg0KPiA+ID4gPj4+IE1JU0Nf
Q09OVFJPTF8xX09GRiByZWdpc3Rlci4NCj4gPiA+ID4NCj4gPiA+ID4+DQo+ID4gPiA+DQo+ID4g
PiA+PiBJIHdvdWxkIHN1Z2dlc3QgeW91IHRvIGFkZCBhIGNvdmVyLWxldHRlciBuZXh0IHRpbWUg
dG8gZXhwbGFpbg0KPiA+ID4gPj4gdGhlIGdsb2JhbA0KPiA+ID4gPg0KPiA+ID4gPj4gcGljdHVy
ZSBvZiB0aGUgcGF0Y2gtc2V0Lg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBU
aGFua3MsIEkgd2lsbC4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4+DQo+ID4g
PiA+DQo+ID4gPiA+PiBJIHVuZGVyc3RhbmQgeW91ciBuZWVkIGZvciB0aGlzIHBhdGNoLCBidXQg
SSBkb24ndCBhZ3JlZSBvbiB0aGUNCj4gPiBhcHByb2FjaC4NCj4gPiA+ID4NCj4gPiA+ID4NCj4g
PiA+ID4NCj4gPiA+ID4gSW4gdGhlIERXQyBjb21tb24gY29kZSwgdGhlcmUgaXMgYSBmdW5jdGlv
biB3cml0ZSBhIERCSSByZWFkLW9ubHkNCj4gPiByZWdpc3Rlcg0KPiA+ID4gJ0RldmljZSBjbGFz
cyBjb2RlJywgYW5kIHRoZSBmaXJzdCAyIHBhdGNoZXMgaXMgdG8gZml4IGl0Lg0KPiA+ID4gPg0K
PiA+ID4gPiBUaGUgM3JkIHBhdGNoIGlzIHRvIHJlZmFjdG9yIHRoZSBMYXllcnNjYXBlIFBDSWUg
ZHJpdmVyJ3MNCj4gPiA+ID4gaG9zdF9pbml0DQo+ID4gZnVuY3Rpb24NCj4gPiA+IGFuZCByZXVz
ZSB0aGUgbmV3IGFkZGVkIGFjY2Vzc29ycy4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4g
PiA+ID4+IFNvbWV0aW1lcyB0aGUgcGVvcGxlIGluIGNoYXJnZSBvZiB0aGUgaGFyZHdhcmUgZGVz
aWduIC8NCj4gPiA+ID4+IGNvbmZpZ3VyYXRpb24sIGZvcmdldA0KPiA+ID4gPg0KPiA+ID4gPj4g
dG8gc3BlY2lmeSB0aGUgZGV2aWNlIGNsYXNzIGFuZCB0aGF0IGNhbiBiZSBwcm9ibGVtYXRpYyBm
b3Igc29tZQ0KPiA+ID4gPj4gZHJpdmVycywgYW5kDQo+ID4gPiA+DQo+ID4gPiA+PiBzbyB0aGUg
dHlwaWNhbCB3b3JrYXJvdW5kIGlzIHRvIHNldCBpdCBpbiB0aGUgZHJpdmVyIHVzaW5nIGENCj4g
PiA+ID4+IHF1aXJrDQo+ID4gZm9yIGV4YW1wbGUuDQo+ID4gPiA+DQo+ID4gPiA+Pg0KPiA+ID4g
Pg0KPiA+ID4gPj4gWW91IGNhbiBzZWUgc29tZSBleGFtcGxlcyBoZXJlOg0KPiA+ID4gPg0KPiA+
ID4gPj4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHBzLTNB
X19naXQua2VybmVsLm8NCj4gPiA+ID4+IHJnX3ANCj4gPiA+ID4+IHViX3NjbV9saW51eF9rZXJu
ZWxfZ2l0X3RvcnZhbGRzX2xpbnV4LmdpdF90cmVlX2RyaXZlcnNfJmQ9RHdJR2FRDQo+ID4gPiA+
PiAmYz1EDQo+ID4gPiA+Pg0KPiA+ID4NCj4gUEw2X1hfNkprWEZ4N0FYV3FCMHRnJnI9czJmTzBo
aWkwT0dOT3Y5cVF5X0hSWHkteEFKVUQxTk5vRWNjM2lvDQo+ID4gPiBfa3gwJm0NCj4gPiA+ID4+
DQo+ID4gPg0KPiA9MERyQkN2T2NfSjdMYU1YQmVpMXFDWHh4ZmJMeFdhVkVyS1o2UmttNmJVYyZz
PXNPRW1FeFFGcXJDRW1wQQ0KPiA+ID4geDlMalNlSw0KPiA+ID4gPj4gUnZrVzFELVc4MmNrWDVX
R0NnRld3JmU9DQo+ID4gPiA+DQo+ID4gPiA+PiBwY2kvcXVpcmtzLmMNCj4gPiA+ID4NCj4gPiA+
ID4NCj4gPiA+ID4NCj4gPiA+ID4gSSBkb24ndCBrbm93IHRoZSBQQ0kgcXVpcmtzLCBkbyB5b3Ug
bWVhbiByZW1vdmUgdGhlIHBjaSBEZXZpY2UNCj4gPiA+ID4gQ2xhc3MNCj4gPiBmaXgNCj4gPiA+
IGNvZGUgZnJvbSB0aGUgRFdDIGNvbW1vbiBjb2RlIGFuZCBhZGQgaXQgdG8gcXVpcmtzPw0KPiA+
ID4gPg0KPiA+ID4NCj4gPiA+IEluIG15IG9waW5pb24gYWRkaW5nIGZpeGVzIHRvIGEgY29tbW9u
IGNvZGUgaXMgbm90IGEgZ29vZCBhcHByb2FjaC4NCj4gPiA+IEkNCj4gPiB3b3VsZA0KPiA+ID4g
c3VnZ2VzdCB0aGUgZml4IHRvIGdvIGludG8gdGhlIHF1aXJrcyBmaWxlLg0KPiANCj4gWW91ciBh
bnN3ZXIgc2hvdWxkIGJlIGFkZGVkIHRvIGhlcmUuDQo+IFRoZW4sIGl0IHdpbGwgaGVscCBvdGhl
ciBwZW9wbGUgZm9sbG93IHRoaXMgZW1haWwgdGhyZWFkLg0KPiANCg0KWWVzLCBhbmQgZG8geW91
IGtub3cgd2h5IHdyaXRlIHRvIHRoZSBEQkkgcmVhZC1vbmx5IHJlZ2lzdGVyKGNsYXNzIGNvZGUp
IHdpdGhvdXQgZW5hYmxlIHRoZSB3cml0ZSBwZXJtaXNzaW9uIG9mIERCSSByZWFkLW9ubHkgcmVn
aXN0ZXJzPw0KQ2FuIHlvdSBnaXZlIHNvbWUgc3VnZ2VzdGlvbnM/DQoNClRoYW5rcywNClpoaXFp
YW5nDQo=

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

* Re: [PATCH 3/3] PCI: layerscape: refactor the host_init function
  2017-07-06  6:33 ` [PATCH 3/3] PCI: layerscape: refactor the host_init function Zhiqiang Hou
@ 2017-08-02 21:11   ` Bjorn Helgaas
  2017-08-03  3:17     ` Z.q. Hou
  0 siblings, 1 reply; 13+ messages in thread
From: Bjorn Helgaas @ 2017-08-02 21:11 UTC (permalink / raw)
  To: Zhiqiang Hou; +Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, Minghuan Lian

On Thu, Jul 06, 2017 at 02:33:49PM +0800, Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> 
> Main changes:
> - Make the ls1021a's host_init reuse layerscape platform's common
>   host_init function.
> - Will not use the outbound windows configured by bootloader, but
>   introduce DWC common setup function dw_pcie_setup_rc and disable
>   the bootloader configured outbound windows. And remove the duplicate
>   class field fix code.

This seems to have two or even three distinct changes mixed together.
Please split them into separate patches.  In particular, you mention a
class code fix -- that should be its own separate patch.

> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> Signed-off-by: Minghuan Lian <Minghuan.Lian@nxp.com>
> ---
>  drivers/pci/dwc/pci-layerscape.c | 85 ++++++++++++++++++++++------------------
>  1 file changed, 46 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
> index fd86128..9bed3cd 100644
> --- a/drivers/pci/dwc/pci-layerscape.c
> +++ b/drivers/pci/dwc/pci-layerscape.c
> @@ -33,7 +33,8 @@
>  
>  /* 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
>  
>  struct ls_pcie_drvdata {
>  	u32 lut_offset;
> @@ -69,15 +70,9 @@ static void ls_pcie_clear_multifunction(struct ls_pcie *pcie)
>  {
>  	struct dw_pcie *pci = pcie->pci;
>  
> +	dw_pcie_dbi_ro_wr_en(pci);
>  	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);
> +	dw_pcie_dbi_ro_wr_dis(pci);
>  }
>  
>  /* Drop MSG TLP except for Vendor MSG */
> @@ -91,6 +86,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;
> @@ -108,33 +111,6 @@ static int ls1021_pcie_link_up(struct dw_pcie *pci)
>  	return 1;
>  }
>  
> -static void 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];
> -
> -	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
> -						     "fsl,pcie-scfg");
> -	if (IS_ERR(pcie->scfg)) {
> -		dev_err(dev, "No syscfg phandle specified\n");
> -		pcie->scfg = NULL;
> -		return;
> -	}
> -
> -	if (of_property_read_u32_array(dev->of_node,
> -				       "fsl,pcie-scfg", index, 2)) {
> -		pcie->scfg = NULL;
> -		return;
> -	}
> -	pcie->index = index[1];
> -
> -	dw_pcie_setup_rc(pp);
> -
> -	ls_pcie_drop_msg_tlp(pcie);
> -}
> -
>  static int ls_pcie_link_up(struct dw_pcie *pci)
>  {
>  	struct ls_pcie *pcie = to_ls_pcie(pci);
> @@ -155,11 +131,42 @@ static void 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);
>  
> -	iowrite32(1, pci->dbi_base + PCIE_DBI_RO_WR_EN);
> -	ls_pcie_fix_class(pcie);
> +	/*
> +	 * 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);
> +
>  	ls_pcie_clear_multifunction(pcie);
>  	ls_pcie_drop_msg_tlp(pcie);
> -	iowrite32(0, pci->dbi_base + PCIE_DBI_RO_WR_EN);
> +
> +	dw_pcie_setup_rc(pp);
> +}
> +
> +static void 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];
> +
> +	pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node,
> +						     "fsl,pcie-scfg");
> +	if (IS_ERR(pcie->scfg)) {
> +		dev_err(dev, "No syscfg phandle specified\n");
> +		pcie->scfg = NULL;
> +		return;
> +	}
> +
> +	if (of_property_read_u32_array(dev->of_node,
> +				       "fsl,pcie-scfg", index, 2)) {
> +		pcie->scfg = NULL;
> +		return;
> +	}
> +	pcie->index = index[1];
> +
> +	ls_pcie_host_init(pp);
>  }
>  
>  static int ls_pcie_msi_host_init(struct pcie_port *pp,
> -- 
> 2.1.0.27.g96db324
> 

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

* Re: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-07-06  9:44 ` [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Joao Pinto
  2017-07-07  3:48   ` Z.q. Hou
@ 2017-08-02 21:25   ` Bjorn Helgaas
  2017-08-03  3:25     ` Z.q. Hou
  1 sibling, 1 reply; 13+ messages in thread
From: Bjorn Helgaas @ 2017-08-02 21:25 UTC (permalink / raw)
  To: Joao Pinto; +Cc: Zhiqiang Hou, linux-pci, bhelgaas, jingoohan1

On Thu, Jul 06, 2017 at 10:44:04AM +0100, Joao Pinto wrote:
> 
> Hi Zhiqiang,
> 
> Às 7:33 AM de 7/6/2017, Zhiqiang Hou escreveu:
> > 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.
> 
> I would suggest you to add a cover-letter next time to explain the global
> picture of the patch-set.
> 
> I understand your need for this patch, but I don't agree on the approach.
> Sometimes the people in charge of the hardware design / configuration, forget to
> specify the device class and that can be problematic for some drivers, and so
> the typical workaround is to set it in the driver using a quirk for example.
> 
> You can see some examples here:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/quirks.c

I assume you're suggesting something similar to quirk_tw686x_class() and
fixup_ti816x_class(), quirk_amd_nl_class(), quirk_eisa_bridge(),
fixup_rev1_53c810(), etc.

The current dw_pcie_setup_rc() contains this:

  /* program correct class for RC */
  dw_pcie_wr_own_conf(pp, PCI_CLASS_DEVICE, 2, PCI_CLASS_BRIDGE_PCI);

That suggests that DesignWare-based devices have the wrong class code,
and we're trying to fix it.

Patch 2/3 of this series suggests that the existing fix doesn't
actually work because the register is read-only.

If it's necessary and possible to update the class code register in
dw_pcie_setup_rc(), I think that's a reasonable spot to do it.

The quirks in drivers/pci/quirks.c are necessary because per spec, the
PCI Class Code is read-only, so in general we can't update it.

In the DesignWare case, the driver has additional device-specific
knowledge that allows it to update Class Code value, and I think it
makes sense to do it there.

> > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> > ---
> >  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 b4d2a89..bbdf35b 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);
> > 
> 

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

* RE: [PATCH 3/3] PCI: layerscape: refactor the host_init function
  2017-08-02 21:11   ` Bjorn Helgaas
@ 2017-08-03  3:17     ` Z.q. Hou
  0 siblings, 0 replies; 13+ messages in thread
From: Z.q. Hou @ 2017-08-03  3:17 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: linux-pci, bhelgaas, jingoohan1, Joao.Pinto, M.h. Lian

SGkgQmpvcm4sDQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86aGVsZ2Fh
c0BrZXJuZWwub3JnXQ0KPiBTZW50OiAyMDE3xOo41MIzyNUgNToxMg0KPiBUbzogWi5xLiBIb3Ug
PHpoaXFpYW5nLmhvdUBueHAuY29tPg0KPiBDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsg
YmhlbGdhYXNAZ29vZ2xlLmNvbTsNCj4gamluZ29vaGFuMUBnbWFpbC5jb207IEpvYW8uUGludG9A
c3lub3BzeXMuY29tOyBNLmguIExpYW4NCj4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT4NCj4gU3Vi
amVjdDogUmU6IFtQQVRDSCAzLzNdIFBDSTogbGF5ZXJzY2FwZTogcmVmYWN0b3IgdGhlIGhvc3Rf
aW5pdCBmdW5jdGlvbg0KPiANCj4gT24gVGh1LCBKdWwgMDYsIDIwMTcgYXQgMDI6MzM6NDlQTSAr
MDgwMCwgWmhpcWlhbmcgSG91IHdyb3RlOg0KPiA+IEZyb206IEhvdSBaaGlxaWFuZyA8WmhpcWlh
bmcuSG91QG54cC5jb20+DQo+ID4NCj4gPiBNYWluIGNoYW5nZXM6DQo+ID4gLSBNYWtlIHRoZSBs
czEwMjFhJ3MgaG9zdF9pbml0IHJldXNlIGxheWVyc2NhcGUgcGxhdGZvcm0ncyBjb21tb24NCj4g
PiAgIGhvc3RfaW5pdCBmdW5jdGlvbi4NCj4gPiAtIFdpbGwgbm90IHVzZSB0aGUgb3V0Ym91bmQg
d2luZG93cyBjb25maWd1cmVkIGJ5IGJvb3Rsb2FkZXIsIGJ1dA0KPiA+ICAgaW50cm9kdWNlIERX
QyBjb21tb24gc2V0dXAgZnVuY3Rpb24gZHdfcGNpZV9zZXR1cF9yYyBhbmQgZGlzYWJsZQ0KPiA+
ICAgdGhlIGJvb3Rsb2FkZXIgY29uZmlndXJlZCBvdXRib3VuZCB3aW5kb3dzLiBBbmQgcmVtb3Zl
IHRoZSBkdXBsaWNhdGUNCj4gPiAgIGNsYXNzIGZpZWxkIGZpeCBjb2RlLg0KPiANCj4gVGhpcyBz
ZWVtcyB0byBoYXZlIHR3byBvciBldmVuIHRocmVlIGRpc3RpbmN0IGNoYW5nZXMgbWl4ZWQgdG9n
ZXRoZXIuDQo+IFBsZWFzZSBzcGxpdCB0aGVtIGludG8gc2VwYXJhdGUgcGF0Y2hlcy4gIEluIHBh
cnRpY3VsYXIsIHlvdSBtZW50aW9uIGEgY2xhc3MNCj4gY29kZSBmaXggLS0gdGhhdCBzaG91bGQg
YmUgaXRzIG93biBzZXBhcmF0ZSBwYXRjaC4NCg0KWWVzLCB3aWxsIHNwbGl0IHRoaXMgcGF0Y2gu
DQoNCj4gPiBTaWduZWQtb2ZmLWJ5OiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBueHAuY29t
Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1pbmdodWFuIExpYW4gPE1pbmdodWFuLkxpYW5AbnhwLmNv
bT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9wY2kvZHdjL3BjaS1sYXllcnNjYXBlLmMgfCA4NQ0K
PiA+ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxl
IGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2R3Yy9wY2ktbGF5ZXJzY2FwZS5jDQo+ID4gYi9kcml2ZXJz
L3BjaS9kd2MvcGNpLWxheWVyc2NhcGUuYw0KPiA+IGluZGV4IGZkODYxMjguLjliZWQzY2QgMTAw
NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9wY2kvZHdjL3BjaS1sYXllcnNjYXBlLmMNCj4gPiArKysg
Yi9kcml2ZXJzL3BjaS9kd2MvcGNpLWxheWVyc2NhcGUuYw0KPiA+IEBAIC0zMyw3ICszMyw4IEBA
DQo+ID4NCj4gPiAgLyogUEVYIEludGVybmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzICovDQo+
ID4gICNkZWZpbmUgUENJRV9TVFJGTVIxCQkweDcxYyAvKiBTeW1ib2wgVGltZXIgJiBGaWx0ZXIg
TWFzaw0KPiBSZWdpc3RlcjEgKi8NCj4gPiAtI2RlZmluZSBQQ0lFX0RCSV9ST19XUl9FTgkweDhi
YyAvKiBEQkkgUmVhZC1Pbmx5IFdyaXRlIEVuYWJsZQ0KPiBSZWdpc3RlciAqLw0KPiA+ICsNCj4g
PiArI2RlZmluZSBQQ0lFX0lBVFVfTlVNCQk2DQo+ID4NCj4gPiAgc3RydWN0IGxzX3BjaWVfZHJ2
ZGF0YSB7DQo+ID4gIAl1MzIgbHV0X29mZnNldDsNCj4gPiBAQCAtNjksMTUgKzcwLDkgQEAgc3Rh
dGljIHZvaWQgbHNfcGNpZV9jbGVhcl9tdWx0aWZ1bmN0aW9uKHN0cnVjdA0KPiA+IGxzX3BjaWUg
KnBjaWUpICB7DQo+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiA+DQo+
ID4gKwlkd19wY2llX2RiaV9yb193cl9lbihwY2kpOw0KPiA+ICAJaW93cml0ZTgoUENJX0hFQURF
Ul9UWVBFX0JSSURHRSwgcGNpLT5kYmlfYmFzZSArDQo+IFBDSV9IRUFERVJfVFlQRSk7DQo+ID4g
LX0NCj4gPiAtDQo+ID4gLS8qIEZpeCBjbGFzcyB2YWx1ZSAqLw0KPiA+IC1zdGF0aWMgdm9pZCBs
c19wY2llX2ZpeF9jbGFzcyhzdHJ1Y3QgbHNfcGNpZSAqcGNpZSkgLXsNCj4gPiAtCXN0cnVjdCBk
d19wY2llICpwY2kgPSBwY2llLT5wY2k7DQo+ID4gLQ0KPiA+IC0JaW93cml0ZTE2KFBDSV9DTEFT
U19CUklER0VfUENJLCBwY2ktPmRiaV9iYXNlICsgUENJX0NMQVNTX0RFVklDRSk7DQo+ID4gKwlk
d19wY2llX2RiaV9yb193cl9kaXMocGNpKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIC8qIERyb3AgTVNH
IFRMUCBleGNlcHQgZm9yIFZlbmRvciBNU0cgKi8gQEAgLTkxLDYgKzg2LDE0IEBAIHN0YXRpYw0K
PiA+IHZvaWQgbHNfcGNpZV9kcm9wX21zZ190bHAoc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ID4g
IAlpb3dyaXRlMzIodmFsLCBwY2ktPmRiaV9iYXNlICsgUENJRV9TVFJGTVIxKTsgIH0NCj4gPg0K
PiA+ICtzdGF0aWMgdm9pZCBsc19wY2llX2Rpc2FibGVfb3V0Ym91bmRfYXR1cyhzdHJ1Y3QgbHNf
cGNpZSAqcGNpZSkgew0KPiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8
IFBDSUVfSUFUVV9OVU07IGkrKykNCj4gPiArCQlkd19wY2llX2Rpc2FibGVfYXR1KHBjaWUtPnBj
aSwgRFdfUENJRV9SRUdJT05fT1VUQk9VTkQsIGkpOyB9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50
IGxzMTAyMV9wY2llX2xpbmtfdXAoc3RydWN0IGR3X3BjaWUgKnBjaSkgIHsNCj4gPiAgCXUzMiBz
dGF0ZTsNCj4gPiBAQCAtMTA4LDMzICsxMTEsNiBAQCBzdGF0aWMgaW50IGxzMTAyMV9wY2llX2xp
bmtfdXAoc3RydWN0IGR3X3BjaWUgKnBjaSkNCj4gPiAgCXJldHVybiAxOw0KPiA+ICB9DQo+ID4N
Cj4gPiAtc3RhdGljIHZvaWQgbHMxMDIxX3BjaWVfaG9zdF9pbml0KHN0cnVjdCBwY2llX3BvcnQg
KnBwKSAtew0KPiA+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChw
cCk7DQo+ID4gLQlzdHJ1Y3QgbHNfcGNpZSAqcGNpZSA9IHRvX2xzX3BjaWUocGNpKTsNCj4gPiAt
CXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiA+IC0JdTMyIGluZGV4WzJdOw0KPiA+
IC0NCj4gPiAtCXBjaWUtPnNjZmcgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKGRl
di0+b2Zfbm9kZSwNCj4gPiAtCQkJCQkJICAgICAiZnNsLHBjaWUtc2NmZyIpOw0KPiA+IC0JaWYg
KElTX0VSUihwY2llLT5zY2ZnKSkgew0KPiA+IC0JCWRldl9lcnIoZGV2LCAiTm8gc3lzY2ZnIHBo
YW5kbGUgc3BlY2lmaWVkXG4iKTsNCj4gPiAtCQlwY2llLT5zY2ZnID0gTlVMTDsNCj4gPiAtCQly
ZXR1cm47DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0JaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyX2Fy
cmF5KGRldi0+b2Zfbm9kZSwNCj4gPiAtCQkJCSAgICAgICAiZnNsLHBjaWUtc2NmZyIsIGluZGV4
LCAyKSkgew0KPiA+IC0JCXBjaWUtPnNjZmcgPSBOVUxMOw0KPiA+IC0JCXJldHVybjsNCj4gPiAt
CX0NCj4gPiAtCXBjaWUtPmluZGV4ID0gaW5kZXhbMV07DQo+ID4gLQ0KPiA+IC0JZHdfcGNpZV9z
ZXR1cF9yYyhwcCk7DQo+ID4gLQ0KPiA+IC0JbHNfcGNpZV9kcm9wX21zZ190bHAocGNpZSk7DQo+
ID4gLX0NCj4gPiAtDQo+ID4gIHN0YXRpYyBpbnQgbHNfcGNpZV9saW5rX3VwKHN0cnVjdCBkd19w
Y2llICpwY2kpICB7DQo+ID4gIAlzdHJ1Y3QgbHNfcGNpZSAqcGNpZSA9IHRvX2xzX3BjaWUocGNp
KTsgQEAgLTE1NSwxMSArMTMxLDQyIEBAIHN0YXRpYw0KPiA+IHZvaWQgbHNfcGNpZV9ob3N0X2lu
aXQoc3RydWN0IHBjaWVfcG9ydCAqcHApDQo+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f
ZHdfcGNpZV9mcm9tX3BwKHBwKTsNCj4gPiAgCXN0cnVjdCBsc19wY2llICpwY2llID0gdG9fbHNf
cGNpZShwY2kpOw0KPiA+DQo+ID4gLQlpb3dyaXRlMzIoMSwgcGNpLT5kYmlfYmFzZSArIFBDSUVf
REJJX1JPX1dSX0VOKTsNCj4gPiAtCWxzX3BjaWVfZml4X2NsYXNzKHBjaWUpOw0KPiA+ICsJLyoN
Cj4gPiArCSAqIERpc2FibGUgdGhlIG91dGJvdW5kIHdpbmRvd3MgY29uZmlndXJlZCBieSBib290
bG9hZGVyIHRvIGF2b2lkDQo+ID4gKwkgKiBvbmUgdHJhbnNhY3Rpb24gaGl0dGluZyBtdWx0aXBs
ZSBvdXRib3VuZCB3aW5kb3dzIGFuZCB0aGUgZnVuY3Rpb24NCj4gPiArCSAqIGR3X3BjaWVfc2V0
dXBfcmMgd2lsbCByZS1jb25maWd1cmUgdGhlIG91dGJvdW5kIHdpbmRvd3MuDQo+ID4gKwkgKi8N
Cj4gPiArCWxzX3BjaWVfZGlzYWJsZV9vdXRib3VuZF9hdHVzKHBjaWUpOw0KPiA+ICsNCj4gPiAg
CWxzX3BjaWVfY2xlYXJfbXVsdGlmdW5jdGlvbihwY2llKTsNCj4gPiAgCWxzX3BjaWVfZHJvcF9t
c2dfdGxwKHBjaWUpOw0KPiA+IC0JaW93cml0ZTMyKDAsIHBjaS0+ZGJpX2Jhc2UgKyBQQ0lFX0RC
SV9ST19XUl9FTik7DQo+ID4gKw0KPiA+ICsJZHdfcGNpZV9zZXR1cF9yYyhwcCk7DQo+ID4gK30N
Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGxzMTAyMV9wY2llX2hvc3RfaW5pdChzdHJ1Y3QgcGNp
ZV9wb3J0ICpwcCkgew0KPiA+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJv
bV9wcChwcCk7DQo+ID4gKwlzdHJ1Y3QgbHNfcGNpZSAqcGNpZSA9IHRvX2xzX3BjaWUocGNpKTsN
Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiA+ICsJdTMyIGluZGV4WzJd
Ow0KPiA+ICsNCj4gPiArCXBjaWUtPnNjZmcgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFu
ZGxlKGRldi0+b2Zfbm9kZSwNCj4gPiArCQkJCQkJICAgICAiZnNsLHBjaWUtc2NmZyIpOw0KPiA+
ICsJaWYgKElTX0VSUihwY2llLT5zY2ZnKSkgew0KPiA+ICsJCWRldl9lcnIoZGV2LCAiTm8gc3lz
Y2ZnIHBoYW5kbGUgc3BlY2lmaWVkXG4iKTsNCj4gPiArCQlwY2llLT5zY2ZnID0gTlVMTDsNCj4g
PiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRf
dTMyX2FycmF5KGRldi0+b2Zfbm9kZSwNCj4gPiArCQkJCSAgICAgICAiZnNsLHBjaWUtc2NmZyIs
IGluZGV4LCAyKSkgew0KPiA+ICsJCXBjaWUtPnNjZmcgPSBOVUxMOw0KPiA+ICsJCXJldHVybjsN
Cj4gPiArCX0NCj4gPiArCXBjaWUtPmluZGV4ID0gaW5kZXhbMV07DQo+ID4gKw0KPiA+ICsJbHNf
cGNpZV9ob3N0X2luaXQocHApOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGludCBsc19wY2ll
X21zaV9ob3N0X2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHAsDQo+ID4gLS0NCj4gPiAyLjEuMC4y
Ny5nOTZkYjMyNA0KPiA+DQoNClRoYW5rcywNClpoaXFpYW5nDQo=

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

* RE: [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers
  2017-08-02 21:25   ` Bjorn Helgaas
@ 2017-08-03  3:25     ` Z.q. Hou
  0 siblings, 0 replies; 13+ messages in thread
From: Z.q. Hou @ 2017-08-03  3:25 UTC (permalink / raw)
  To: Bjorn Helgaas, Joao Pinto; +Cc: linux-pci, bhelgaas, jingoohan1

SGkgQmpvcm4sDQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBjb21tZW50cyENCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86aGVsZ2Fh
c0BrZXJuZWwub3JnXQ0KPiBTZW50OiAyMDE35bm0OOaciDPml6UgNToyNQ0KPiBUbzogSm9hbyBQ
aW50byA8Sm9hby5QaW50b0BzeW5vcHN5cy5jb20+DQo+IENjOiBaLnEuIEhvdSA8emhpcWlhbmcu
aG91QG54cC5jb20+OyBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnOw0KPiBiaGVsZ2Fhc0Bnb29n
bGUuY29tOyBqaW5nb29oYW4xQGdtYWlsLmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvM10g
UENJOiBkZXNpZ253YXJlOiBhZGQgYWNjZXNzb3JzIGZvciB3cml0ZSBwZXJtaXNzaW9uDQo+IG9m
IERCSSByZWFkLW9ubHkgcmVnaXN0ZXJzDQo+IA0KPiBPbiBUaHUsIEp1bCAwNiwgMjAxNyBhdCAx
MDo0NDowNEFNICswMTAwLCBKb2FvIFBpbnRvIHdyb3RlOg0KPiA+DQo+ID4gSGkgWmhpcWlhbmcs
DQo+ID4NCj4gPiDDgHMgNzozMyBBTSBkZSA3LzYvMjAxNywgWmhpcWlhbmcgSG91IGVzY3JldmV1
Og0KPiA+ID4gRnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPiA+
DQo+ID4gPiBUaGUgcmVhZC1vbmx5IERCSSByZWdpc3RlcnMgY2FuIGJlIHdyaXR0ZW4gb3ZlciB0
aGUgREJJIHdoZW4gc2V0IHRoZQ0KPiA+ID4gIldyaXRlIHRvIFJPIFJlZ2lzdGVycyBVc2luZyBE
QkkiIChEQklfUk9fV1JfRU4pIGZpZWxkIG9mIHRoZQ0KPiA+ID4gTUlTQ19DT05UUk9MXzFfT0ZG
IHJlZ2lzdGVyLg0KPiA+DQo+ID4gSSB3b3VsZCBzdWdnZXN0IHlvdSB0byBhZGQgYSBjb3Zlci1s
ZXR0ZXIgbmV4dCB0aW1lIHRvIGV4cGxhaW4gdGhlDQo+ID4gZ2xvYmFsIHBpY3R1cmUgb2YgdGhl
IHBhdGNoLXNldC4NCj4gPg0KPiA+IEkgdW5kZXJzdGFuZCB5b3VyIG5lZWQgZm9yIHRoaXMgcGF0
Y2gsIGJ1dCBJIGRvbid0IGFncmVlIG9uIHRoZSBhcHByb2FjaC4NCj4gPiBTb21ldGltZXMgdGhl
IHBlb3BsZSBpbiBjaGFyZ2Ugb2YgdGhlIGhhcmR3YXJlIGRlc2lnbiAvIGNvbmZpZ3VyYXRpb24s
DQo+ID4gZm9yZ2V0IHRvIHNwZWNpZnkgdGhlIGRldmljZSBjbGFzcyBhbmQgdGhhdCBjYW4gYmUg
cHJvYmxlbWF0aWMgZm9yDQo+ID4gc29tZSBkcml2ZXJzLCBhbmQgc28gdGhlIHR5cGljYWwgd29y
a2Fyb3VuZCBpcyB0byBzZXQgaXQgaW4gdGhlIGRyaXZlciB1c2luZyBhDQo+IHF1aXJrIGZvciBl
eGFtcGxlLg0KPiA+DQo+ID4gWW91IGNhbiBzZWUgc29tZSBleGFtcGxlcyBoZXJlOg0KPiA+IGh0
dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xp
bnV4LmdpdC90cmUNCj4gPiBlL2RyaXZlcnMvcGNpL3F1aXJrcy5jDQo+IA0KPiBJIGFzc3VtZSB5
b3UncmUgc3VnZ2VzdGluZyBzb21ldGhpbmcgc2ltaWxhciB0byBxdWlya190dzY4NnhfY2xhc3Mo
KSBhbmQNCj4gZml4dXBfdGk4MTZ4X2NsYXNzKCksIHF1aXJrX2FtZF9ubF9jbGFzcygpLCBxdWly
a19laXNhX2JyaWRnZSgpLA0KPiBmaXh1cF9yZXYxXzUzYzgxMCgpLCBldGMuDQo+IA0KPiBUaGUg
Y3VycmVudCBkd19wY2llX3NldHVwX3JjKCkgY29udGFpbnMgdGhpczoNCj4gDQo+ICAgLyogcHJv
Z3JhbSBjb3JyZWN0IGNsYXNzIGZvciBSQyAqLw0KPiAgIGR3X3BjaWVfd3Jfb3duX2NvbmYocHAs
IFBDSV9DTEFTU19ERVZJQ0UsIDIsIFBDSV9DTEFTU19CUklER0VfUENJKTsNCj4gDQo+IFRoYXQg
c3VnZ2VzdHMgdGhhdCBEZXNpZ25XYXJlLWJhc2VkIGRldmljZXMgaGF2ZSB0aGUgd3JvbmcgY2xh
c3MgY29kZSwgYW5kDQo+IHdlJ3JlIHRyeWluZyB0byBmaXggaXQuDQo+IA0KPiBQYXRjaCAyLzMg
b2YgdGhpcyBzZXJpZXMgc3VnZ2VzdHMgdGhhdCB0aGUgZXhpc3RpbmcgZml4IGRvZXNuJ3QgYWN0
dWFsbHkgd29yaw0KPiBiZWNhdXNlIHRoZSByZWdpc3RlciBpcyByZWFkLW9ubHkuDQo+IA0KPiBJ
ZiBpdCdzIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUgdG8gdXBkYXRlIHRoZSBjbGFzcyBjb2RlIHJl
Z2lzdGVyIGluDQo+IGR3X3BjaWVfc2V0dXBfcmMoKSwgSSB0aGluayB0aGF0J3MgYSByZWFzb25h
YmxlIHNwb3QgdG8gZG8gaXQuDQo+IA0KPiBUaGUgcXVpcmtzIGluIGRyaXZlcnMvcGNpL3F1aXJr
cy5jIGFyZSBuZWNlc3NhcnkgYmVjYXVzZSBwZXIgc3BlYywgdGhlIFBDSSBDbGFzcw0KPiBDb2Rl
IGlzIHJlYWQtb25seSwgc28gaW4gZ2VuZXJhbCB3ZSBjYW4ndCB1cGRhdGUgaXQuDQo+IA0KPiBJ
biB0aGUgRGVzaWduV2FyZSBjYXNlLCB0aGUgZHJpdmVyIGhhcyBhZGRpdGlvbmFsIGRldmljZS1z
cGVjaWZpYyBrbm93bGVkZ2UNCj4gdGhhdCBhbGxvd3MgaXQgdG8gdXBkYXRlIENsYXNzIENvZGUg
dmFsdWUsIGFuZCBJIHRoaW5rIGl0IG1ha2VzIHNlbnNlIHRvIGRvIGl0DQo+IHRoZXJlLiANCg0K
WWVzLCB3aWxsIGtlZXAgdGhlIENsYXNzIENvZGUgZml4dXAgZnVuY3Rpb24gaW4gdGhlIERlc2ln
bldhcmUgZHJpdmVyLg0KDQo+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogSG91IFpoaXFpYW5nIDxa
aGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIGRyaXZlcnMvcGNpL2R3Yy9w
Y2llLWRlc2lnbndhcmUuaCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ICAx
IGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQg
YS9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPiA+IGIvZHJpdmVycy9wY2kv
ZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4gPiBpbmRleCBiNGQyYTg5Li5iYmRmMzViIDEwMDY0
NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4gPiAr
KysgYi9kcml2ZXJzL3BjaS9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPiA+IEBAIC03Niw2ICs3
Niw5IEBADQo+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9GVU5DKHgpCQkoKCh4KSAmIDB4NykgPDwg
MTYpDQo+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9VUFBFUl9UQVJHRVQJCTB4OTFDDQo+ID4gPg0K
PiA+ID4gKyNkZWZpbmUgUENJRV9NSVNDX0NPTlRST0xfMV9PRkYJCTB4OEJDDQo+ID4gPiArI2Rl
ZmluZSBQQ0lFX0RCSV9ST19XUl9FTgkJKDB4MSA8PCAwKQ0KPiA+ID4gKw0KPiA+ID4gIC8qDQo+
ID4gPiAgICogaUFUVSBVbnJvbGwtc3BlY2lmaWMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMNCj4gPiA+
ICAgKiBGcm9tIDQuODAgY29yZSB2ZXJzaW9uIHRoZSBhZGRyZXNzIHRyYW5zbGF0aW9uIHdpbGwg
YmUgbWFkZSBieQ0KPiA+ID4gdW5yb2xsIEBAIC0yNzksNiArMjgyLDI4IEBAIHN0YXRpYyBpbmxp
bmUgdTMyIGR3X3BjaWVfcmVhZGxfZGJpMihzdHJ1Y3QNCj4gZHdfcGNpZSAqcGNpLCB1MzIgcmVn
KQ0KPiA+ID4gIAlyZXR1cm4gX19kd19wY2llX3JlYWRfZGJpKHBjaSwgcGNpLT5kYmlfYmFzZTIs
IHJlZywgMHg0KTsgIH0NCj4gPiA+DQo+ID4gPiArc3RhdGljIGlubGluZSB2b2lkIGR3X3BjaWVf
ZGJpX3JvX3dyX2VuKHN0cnVjdCBkd19wY2llICpwY2kpIHsNCj4gPiA+ICsJdTMyIHJlZzsNCj4g
PiA+ICsJdTMyIHZhbDsNCj4gPiA+ICsNCj4gPiA+ICsJcmVnID0gUENJRV9NSVNDX0NPTlRST0xf
MV9PRkY7DQo+ID4gPiArCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgcmVnKTsNCj4gPiA+
ICsJdmFsIHw9IFBDSUVfREJJX1JPX1dSX0VOOw0KPiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmko
cGNpLCByZWcsIHZhbCk7IH0NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHdf
cGNpZV9kYmlfcm9fd3JfZGlzKHN0cnVjdCBkd19wY2llICpwY2kpIHsNCj4gPiA+ICsJdTMyIHJl
ZzsNCj4gPiA+ICsJdTMyIHZhbDsNCj4gPiA+ICsNCj4gPiA+ICsJcmVnID0gUENJRV9NSVNDX0NP
TlRST0xfMV9PRkY7DQo+ID4gPiArCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgcmVnKTsN
Cj4gPiA+ICsJdmFsICY9IH5QQ0lFX0RCSV9ST19XUl9FTjsNCj4gPiA+ICsJZHdfcGNpZV93cml0
ZWxfZGJpKHBjaSwgcmVnLCB2YWwpOyB9DQo+ID4gPiArDQo+ID4gPiAgI2lmZGVmIENPTkZJR19Q
Q0lFX0RXX0hPU1QNCj4gPiA+ICBpcnFyZXR1cm5fdCBkd19oYW5kbGVfbXNpX2lycShzdHJ1Y3Qg
cGNpZV9wb3J0ICpwcCk7ICB2b2lkDQo+ID4gPiBkd19wY2llX21zaV9pbml0KHN0cnVjdCBwY2ll
X3BvcnQgKnBwKTsNCj4gPiA+DQo+ID4NCg0KVGhhbmtzLA0KWmhpcWlhbmcNCg==

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

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

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-06  6:33 [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Zhiqiang Hou
2017-07-06  6:33 ` [PATCH 2/3] PCI: designware: enable write permission before updating class code Zhiqiang Hou
2017-07-06  6:33 ` [PATCH 3/3] PCI: layerscape: refactor the host_init function Zhiqiang Hou
2017-08-02 21:11   ` Bjorn Helgaas
2017-08-03  3:17     ` Z.q. Hou
2017-07-06  9:44 ` [PATCH 1/3] PCI: designware: add accessors for write permission of DBI read-only registers Joao Pinto
2017-07-07  3:48   ` Z.q. Hou
2017-07-07  8:53     ` Joao Pinto
2017-07-11  4:11       ` Z.q. Hou
2017-07-17 19:41         ` Jingoo Han
2017-07-18  3:00           ` Z.q. Hou
2017-08-02 21:25   ` Bjorn Helgaas
2017-08-03  3:25     ` Z.q. 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.