linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode
@ 2018-06-27 12:29 Vignesh R
  2018-06-27 12:29 ` [PATCH v2 1/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Vignesh R @ 2018-06-27 12:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci,
	Vignesh R

Make workaround for errata i870 applicable in Host mode as
well(previously it was enabled only for EP mode) as per errata
documentation: http://www.ti.com/lit/er/sprz450/sprz450.pdf

Tested on DRA72 EVM

Changes since v1:
Drop IRQ handling rework (will be sent out separately)

v1: https://lkml.org/lkml/2017/12/1/59

Vignesh R (4):
  dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host
    mode
  pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode
  ARM: dts: dra7: Fix up unaligned access setting for PCIe EP

 Documentation/devicetree/bindings/pci/ti-pci.txt |  5 +++++
 arch/arm/boot/dts/dra7.dtsi                      |  4 +++-
 drivers/pci/controller/dwc/pci-dra7xx.c          | 12 ++++++------
 3 files changed, 14 insertions(+), 7 deletions(-)

-- 
2.18.0


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

* [PATCH v2 1/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode
  2018-06-27 12:29 [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode Vignesh R
@ 2018-06-27 12:29 ` Vignesh R
  2018-06-27 12:29 ` [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Vignesh R @ 2018-06-27 12:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci,
	Vignesh R

Update device tree binding documentation of TI's dra7xx PCI controller
for enabling unaligned mem access as applicable not just in EP mode but
in host mode as well.

Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/pci/ti-pci.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/pci/ti-pci.txt b/Documentation/devicetree/bindings/pci/ti-pci.txt
index 7f7af3044016..452fe48c4fdd 100644
--- a/Documentation/devicetree/bindings/pci/ti-pci.txt
+++ b/Documentation/devicetree/bindings/pci/ti-pci.txt
@@ -26,6 +26,11 @@ HOST MODE
    ranges,
    interrupt-map-mask,
    interrupt-map : as specified in ../designware-pcie.txt
+ - ti,syscon-unaligned-access: phandle to the syscon DT node. The 1st argument
+			       should contain the register offset within syscon
+			       and the 2nd argument should contain the bit field
+			       for setting the bit to enable unaligned
+			       access.
 
 DEVICE MODE
 ===========
-- 
2.18.0


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

* [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-06-27 12:29 [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode Vignesh R
  2018-06-27 12:29 ` [PATCH v2 1/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R
@ 2018-06-27 12:29 ` Vignesh R
  2018-07-17  9:54   ` Kishon Vijay Abraham I
  2018-07-18 11:02   ` Lorenzo Pieralisi
  2018-06-27 12:29 ` [PATCH v2 3/4] ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode Vignesh R
  2018-06-27 12:29 ` [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP Vignesh R
  3 siblings, 2 replies; 12+ messages in thread
From: Vignesh R @ 2018-06-27 12:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci,
	Vignesh R

Errata i870 is applicable in both EP and RC mode. Therefore rename
function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata
workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a
common place. So, that errata workaround is applied for both modes of
operation.

Reported-by: Chris Welch <Chris.Welch@viavisolutions.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 drivers/pci/controller/dwc/pci-dra7xx.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
index 345aab56ce8b..95d9076e3fde 100644
--- a/drivers/pci/controller/dwc/pci-dra7xx.c
+++ b/drivers/pci/controller/dwc/pci-dra7xx.c
@@ -542,7 +542,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
 };
 
 /*
- * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
+ * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
  * @dra7xx: the dra7xx device where the workaround should be applied
  *
  * Access to the PCIe slave port that are not 32-bit aligned will result
@@ -552,7 +552,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
  *
  * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1.
  */
-static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev)
+static int dra7xx_pcie_unaligned_memaccess(struct device *dev)
 {
 	int ret;
 	struct device_node *np = dev->of_node;
@@ -695,6 +695,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
 	if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2)
 		dra7xx->link_gen = 2;
 
+	ret = dra7xx_pcie_unaligned_memaccess(dev);
+	if (ret)
+		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");
+
 	switch (mode) {
 	case DW_PCIE_RC_TYPE:
 		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
@@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
 		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
 				   DEVICE_TYPE_EP);
 
-		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
-		if (ret)
-			goto err_gpio;
-
 		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
 		if (ret < 0)
 			goto err_gpio;
-- 
2.18.0


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

* [PATCH v2 3/4] ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode
  2018-06-27 12:29 [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode Vignesh R
  2018-06-27 12:29 ` [PATCH v2 1/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R
  2018-06-27 12:29 ` [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
@ 2018-06-27 12:29 ` Vignesh R
  2018-06-27 12:29 ` [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP Vignesh R
  3 siblings, 0 replies; 12+ messages in thread
From: Vignesh R @ 2018-06-27 12:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci,
	Vignesh R

Add ti,syscon-unaligned-access property to PCIe RC nodes to set
appropriate bits in CTRL_CORE_SMA_SW_7 register to enable workaround for
errata i870.

Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 arch/arm/boot/dts/dra7.dtsi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 93fc2d79d337..7bfe7f28e3bd 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -336,6 +336,7 @@
 						<0 0 0 2 &pcie1_intc 2>,
 						<0 0 0 3 &pcie1_intc 3>,
 						<0 0 0 4 &pcie1_intc 4>;
+				ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
 				status = "disabled";
 				pcie1_intc: interrupt-controller {
 					interrupt-controller;
@@ -387,6 +388,7 @@
 						<0 0 0 2 &pcie2_intc 2>,
 						<0 0 0 3 &pcie2_intc 3>,
 						<0 0 0 4 &pcie2_intc 4>;
+				ti,syscon-unaligned-access = <&scm_conf1 0x14 2>;
 				pcie2_intc: interrupt-controller {
 					interrupt-controller;
 					#address-cells = <0>;
-- 
2.18.0


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

* [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP
  2018-06-27 12:29 [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode Vignesh R
                   ` (2 preceding siblings ...)
  2018-06-27 12:29 ` [PATCH v2 3/4] ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode Vignesh R
@ 2018-06-27 12:29 ` Vignesh R
  2018-07-17  9:55   ` Kishon Vijay Abraham I
  3 siblings, 1 reply; 12+ messages in thread
From: Vignesh R @ 2018-06-27 12:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci,
	Vignesh R

Bit positions of PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE and
PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE in CTRL_CORE_SMA_SW_7 are
incorrectly documented in the TRM. In fact, the bit positions are
swapped. Update the DT bindings for PCIe EP to reflect the same.

Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 arch/arm/boot/dts/dra7.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 7bfe7f28e3bd..27ad193e1a87 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -355,7 +355,7 @@
 				ti,hwmods = "pcie1";
 				phys = <&pcie1_phy>;
 				phy-names = "pcie-phy0";
-				ti,syscon-unaligned-access = <&scm_conf1 0x14 2>;
+				ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
 				status = "disabled";
 			};
 		};
-- 
2.18.0


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

* Re: [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-06-27 12:29 ` [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
@ 2018-07-17  9:54   ` Kishon Vijay Abraham I
  2018-07-18 11:02   ` Lorenzo Pieralisi
  1 sibling, 0 replies; 12+ messages in thread
From: Kishon Vijay Abraham I @ 2018-07-17  9:54 UTC (permalink / raw)
  To: Vignesh R, Tony Lindgren, Rob Herring, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci



On Wednesday 27 June 2018 05:59 PM, Vignesh R wrote:
> Errata i870 is applicable in both EP and RC mode. Therefore rename
> function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata
> workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a
> common place. So, that errata workaround is applied for both modes of
> operation.
> 
> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com>
> Signed-off-by: Vignesh R <vigneshr@ti.com>

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
>  drivers/pci/controller/dwc/pci-dra7xx.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
> index 345aab56ce8b..95d9076e3fde 100644
> --- a/drivers/pci/controller/dwc/pci-dra7xx.c
> +++ b/drivers/pci/controller/dwc/pci-dra7xx.c
> @@ -542,7 +542,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>  };
>  
>  /*
> - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
> + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
>   * @dra7xx: the dra7xx device where the workaround should be applied
>   *
>   * Access to the PCIe slave port that are not 32-bit aligned will result
> @@ -552,7 +552,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>   *
>   * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1.
>   */
> -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev)
> +static int dra7xx_pcie_unaligned_memaccess(struct device *dev)
>  {
>  	int ret;
>  	struct device_node *np = dev->of_node;
> @@ -695,6 +695,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>  	if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2)
>  		dra7xx->link_gen = 2;
>  
> +	ret = dra7xx_pcie_unaligned_memaccess(dev);
> +	if (ret)
> +		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");
> +
>  	switch (mode) {
>  	case DW_PCIE_RC_TYPE:
>  		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
> @@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>  		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
>  				   DEVICE_TYPE_EP);
>  
> -		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
> -		if (ret)
> -			goto err_gpio;
> -
>  		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
>  		if (ret < 0)
>  			goto err_gpio;
> 

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

* Re: [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP
  2018-06-27 12:29 ` [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP Vignesh R
@ 2018-07-17  9:55   ` Kishon Vijay Abraham I
  2018-07-19 10:54     ` Vignesh R
  0 siblings, 1 reply; 12+ messages in thread
From: Kishon Vijay Abraham I @ 2018-07-17  9:55 UTC (permalink / raw)
  To: Vignesh R, Tony Lindgren, Rob Herring, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci



On Wednesday 27 June 2018 05:59 PM, Vignesh R wrote:
> Bit positions of PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE and
> PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE in CTRL_CORE_SMA_SW_7 are
> incorrectly documented in the TRM. In fact, the bit positions are
> swapped. Update the DT bindings for PCIe EP to reflect the same.
> 
> Signed-off-by: Vignesh R <vigneshr@ti.com>

Shouldn't this be sent to stable fixes?

Thanks
Kishon
> ---
>  arch/arm/boot/dts/dra7.dtsi | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
> index 7bfe7f28e3bd..27ad193e1a87 100644
> --- a/arch/arm/boot/dts/dra7.dtsi
> +++ b/arch/arm/boot/dts/dra7.dtsi
> @@ -355,7 +355,7 @@
>  				ti,hwmods = "pcie1";
>  				phys = <&pcie1_phy>;
>  				phy-names = "pcie-phy0";
> -				ti,syscon-unaligned-access = <&scm_conf1 0x14 2>;
> +				ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
>  				status = "disabled";
>  			};
>  		};
> 

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

* Re: [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-06-27 12:29 ` [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
  2018-07-17  9:54   ` Kishon Vijay Abraham I
@ 2018-07-18 11:02   ` Lorenzo Pieralisi
  2018-07-19 10:34     ` Vignesh R
  1 sibling, 1 reply; 12+ messages in thread
From: Lorenzo Pieralisi @ 2018-07-18 11:02 UTC (permalink / raw)
  To: Vignesh R
  Cc: Tony Lindgren, Rob Herring, Kishon Vijay Abraham I,
	Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci

On Wed, Jun 27, 2018 at 05:59:17PM +0530, Vignesh R wrote:
> Errata i870 is applicable in both EP and RC mode. Therefore rename
> function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata
> workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a
> common place. So, that errata workaround is applied for both modes of
> operation.
> 
> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>  drivers/pci/controller/dwc/pci-dra7xx.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
> index 345aab56ce8b..95d9076e3fde 100644
> --- a/drivers/pci/controller/dwc/pci-dra7xx.c
> +++ b/drivers/pci/controller/dwc/pci-dra7xx.c
> @@ -542,7 +542,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>  };
>  
>  /*
> - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
> + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
>   * @dra7xx: the dra7xx device where the workaround should be applied
>   *
>   * Access to the PCIe slave port that are not 32-bit aligned will result
> @@ -552,7 +552,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>   *
>   * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1.
>   */
> -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev)
> +static int dra7xx_pcie_unaligned_memaccess(struct device *dev)
>  {
>  	int ret;
>  	struct device_node *np = dev->of_node;
> @@ -695,6 +695,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>  	if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2)
>  		dra7xx->link_gen = 2;
>  
> +	ret = dra7xx_pcie_unaligned_memaccess(dev);
> +	if (ret)
> +		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");

Hi Vignesh,

Nit: s/appplied/applied

Two questions:

- Current code applies the unaligned_memaccess() workaround for all
  compatible variants. This is fine for current controllers (since
  they are all affected), the code path above will have to be
  reworked if there is any other compatible IP re-using the driver
  that does not require the workaround.
- How do you want this series to go upstream ? If it goes via arm-soc,
  which I think it should, here is my ACK on this patch:

Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

Please let me know if I can drop this series from the PCI patchwork.

Thanks,
Lorenzo

> +
>  	switch (mode) {
>  	case DW_PCIE_RC_TYPE:
>  		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
> @@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>  		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
>  				   DEVICE_TYPE_EP);
>  
> -		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
> -		if (ret)
> -			goto err_gpio;
> -
>  		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
>  		if (ret < 0)
>  			goto err_gpio;
> -- 
> 2.18.0
> 

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

* Re: [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-07-18 11:02   ` Lorenzo Pieralisi
@ 2018-07-19 10:34     ` Vignesh R
  2018-07-19 11:15       ` Lorenzo Pieralisi
  0 siblings, 1 reply; 12+ messages in thread
From: Vignesh R @ 2018-07-19 10:34 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Tony Lindgren, Rob Herring, KISHON VIJAY ABRAHAM, Bjorn Helgaas,
	linux-omap, devicetree, linux-kernel, linux-pci

Hi Lorenzo,

On Wednesday 18 July 2018 04:32 PM, Lorenzo Pieralisi wrote:
> On Wed, Jun 27, 2018 at 05:59:17PM +0530, Vignesh R wrote:
>> Errata i870 is applicable in both EP and RC mode. Therefore rename
>> function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata
>> workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a
>> common place. So, that errata workaround is applied for both modes of
>> operation.
>>
>> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com>
>> Signed-off-by: Vignesh R <vigneshr@ti.com>
>> ---
>>  drivers/pci/controller/dwc/pci-dra7xx.c | 12 ++++++------
>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
>> index 345aab56ce8b..95d9076e3fde 100644
>> --- a/drivers/pci/controller/dwc/pci-dra7xx.c
>> +++ b/drivers/pci/controller/dwc/pci-dra7xx.c
>> @@ -542,7 +542,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>>  };
>>  
>>  /*
>> - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
>> + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
>>   * @dra7xx: the dra7xx device where the workaround should be applied
>>   *
>>   * Access to the PCIe slave port that are not 32-bit aligned will result
>> @@ -552,7 +552,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
>>   *
>>   * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1.
>>   */
>> -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev)
>> +static int dra7xx_pcie_unaligned_memaccess(struct device *dev)
>>  {
>>  	int ret;
>>  	struct device_node *np = dev->of_node;
>> @@ -695,6 +695,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>>  	if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2)
>>  		dra7xx->link_gen = 2;
>>  
>> +	ret = dra7xx_pcie_unaligned_memaccess(dev);
>> +	if (ret)
>> +		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");
> 
> Hi Vignesh,
> 
> Nit: s/appplied/applied
> 

Oops, let me know if you want me to resend with this fixed.

> Two questions:
> 
> - Current code applies the unaligned_memaccess() workaround for all
>   compatible variants. This is fine for current controllers (since
>   they are all affected), the code path above will have to be
>   reworked if there is any other compatible IP re-using the driver
>   that does not require the workaround.

There are no compatible IPs that don't require this workaround. Also, I
don't see this IP being re-used in future. If you insist, I can add a
errata flag

> - How do you want this series to go upstream ? If it goes via arm-soc,
>   which I think it should, here is my ACK on this patch:
> 
Patch 1 and 2(dt bindings update and driver patch) can go in via PCI
tree. And DT changes(patch 3 and 4) can be picked up by Tony via
omap/arm-soc tree. They are mostly independent and should not cause any
problems. Does that sound good?

> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> 

Thanks!

> Please let me know if I can drop this series from the PCI patchwork.
> 
> Thanks,
> Lorenzo
> 
>> +
>>  	switch (mode) {
>>  	case DW_PCIE_RC_TYPE:
>>  		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
>> @@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>>  		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
>>  				   DEVICE_TYPE_EP);
>>  
>> -		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
>> -		if (ret)
>> -			goto err_gpio;
>> -
>>  		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
>>  		if (ret < 0)
>>  			goto err_gpio;
>> -- 
>> 2.18.0
>>

-- 
Regards
Vignesh

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

* Re: [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP
  2018-07-17  9:55   ` Kishon Vijay Abraham I
@ 2018-07-19 10:54     ` Vignesh R
  0 siblings, 0 replies; 12+ messages in thread
From: Vignesh R @ 2018-07-19 10:54 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, Tony Lindgren, Rob Herring, Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci

Hi Tony,

On Tuesday 17 July 2018 03:25 PM, Kishon Vijay Abraham I wrote:
> 
> 
> On Wednesday 27 June 2018 05:59 PM, Vignesh R wrote:
>> Bit positions of PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE and
>> PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE in CTRL_CORE_SMA_SW_7 are
>> incorrectly documented in the TRM. In fact, the bit positions are
>> swapped. Update the DT bindings for PCIe EP to reflect the same.
>>
>> Signed-off-by: Vignesh R <vigneshr@ti.com>
> 
> Shouldn't this be sent to stable fixes?

This patch fixes:

Fixes: d23f3839fe97 ("ARM: dts: DRA7: Add pcie1 dt node for EP mode")
Cc: stable@vger.kernel.org

let me know if this needs to be resent with Fixes tag.

Regards
Vignesh

> 
> Thanks
> Kishon
>> ---
>>  arch/arm/boot/dts/dra7.dtsi | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
>> index 7bfe7f28e3bd..27ad193e1a87 100644
>> --- a/arch/arm/boot/dts/dra7.dtsi
>> +++ b/arch/arm/boot/dts/dra7.dtsi
>> @@ -355,7 +355,7 @@
>>  				ti,hwmods = "pcie1";
>>  				phys = <&pcie1_phy>;
>>  				phy-names = "pcie-phy0";
>> -				ti,syscon-unaligned-access = <&scm_conf1 0x14 2>;
>> +				ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
>>  				status = "disabled";
>>  			};
>>  		};
>>

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

* Re: [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-07-19 10:34     ` Vignesh R
@ 2018-07-19 11:15       ` Lorenzo Pieralisi
  2018-07-19 15:59         ` Vignesh R
  0 siblings, 1 reply; 12+ messages in thread
From: Lorenzo Pieralisi @ 2018-07-19 11:15 UTC (permalink / raw)
  To: Vignesh R
  Cc: Tony Lindgren, Rob Herring, KISHON VIJAY ABRAHAM, Bjorn Helgaas,
	linux-omap, devicetree, linux-kernel, linux-pci

On Thu, Jul 19, 2018 at 04:04:34PM +0530, Vignesh R wrote:
> Hi Lorenzo,
> 
> On Wednesday 18 July 2018 04:32 PM, Lorenzo Pieralisi wrote:
> > On Wed, Jun 27, 2018 at 05:59:17PM +0530, Vignesh R wrote:
> >> Errata i870 is applicable in both EP and RC mode. Therefore rename
> >> function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata
> >> workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a
> >> common place. So, that errata workaround is applied for both modes of
> >> operation.
> >>
> >> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com>
> >> Signed-off-by: Vignesh R <vigneshr@ti.com>
> >> ---
> >>  drivers/pci/controller/dwc/pci-dra7xx.c | 12 ++++++------
> >>  1 file changed, 6 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
> >> index 345aab56ce8b..95d9076e3fde 100644
> >> --- a/drivers/pci/controller/dwc/pci-dra7xx.c
> >> +++ b/drivers/pci/controller/dwc/pci-dra7xx.c
> >> @@ -542,7 +542,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
> >>  };
> >>  
> >>  /*
> >> - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
> >> + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870
> >>   * @dra7xx: the dra7xx device where the workaround should be applied
> >>   *
> >>   * Access to the PCIe slave port that are not 32-bit aligned will result
> >> @@ -552,7 +552,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
> >>   *
> >>   * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1.
> >>   */
> >> -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev)
> >> +static int dra7xx_pcie_unaligned_memaccess(struct device *dev)
> >>  {
> >>  	int ret;
> >>  	struct device_node *np = dev->of_node;
> >> @@ -695,6 +695,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
> >>  	if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2)
> >>  		dra7xx->link_gen = 2;
> >>  
> >> +	ret = dra7xx_pcie_unaligned_memaccess(dev);
> >> +	if (ret)
> >> +		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");
> > 
> > Hi Vignesh,
> > 
> > Nit: s/appplied/applied
> > 
> 
> Oops, let me know if you want me to resend with this fixed.

I can fix it, no problem but see below.

> > Two questions:
> > 
> > - Current code applies the unaligned_memaccess() workaround for all
> >   compatible variants. This is fine for current controllers (since
> >   they are all affected), the code path above will have to be
> >   reworked if there is any other compatible IP re-using the driver
> >   that does not require the workaround.
> 
> There are no compatible IPs that don't require this workaround. Also, I
> don't see this IP being re-used in future. If you insist, I can add a
> errata flag

I do not insist, I just pointed this out ;-)

> > - How do you want this series to go upstream ? If it goes via arm-soc,
> >   which I think it should, here is my ACK on this patch:
> > 
> Patch 1 and 2(dt bindings update and driver patch) can go in via PCI
> tree. And DT changes(patch 3 and 4) can be picked up by Tony via
> omap/arm-soc tree. They are mostly independent and should not cause any
> problems. Does that sound good?

It should be fine but technically as soon as patch (2) is applied we
would have a regression if patches (3) and (4) are applied separately.

You could re-order the series and send everything via arm-soc.

It is not such a big deal, your choice, please let me know.

Thanks,
Lorenzo

> > Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > 
> 
> Thanks!
> 
> > Please let me know if I can drop this series from the PCI patchwork.
> > 
> > Thanks,
> > Lorenzo
> > 
> >> +
> >>  	switch (mode) {
> >>  	case DW_PCIE_RC_TYPE:
> >>  		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
> >> @@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
> >>  		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
> >>  				   DEVICE_TYPE_EP);
> >>  
> >> -		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
> >> -		if (ret)
> >> -			goto err_gpio;
> >> -
> >>  		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
> >>  		if (ret < 0)
> >>  			goto err_gpio;
> >> -- 
> >> 2.18.0
> >>
> 
> -- 
> Regards
> Vignesh

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

* Re: [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
  2018-07-19 11:15       ` Lorenzo Pieralisi
@ 2018-07-19 15:59         ` Vignesh R
  0 siblings, 0 replies; 12+ messages in thread
From: Vignesh R @ 2018-07-19 15:59 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Lorenzo Pieralisi, Rob Herring, KISHON VIJAY ABRAHAM,
	Bjorn Helgaas, linux-omap, devicetree, linux-kernel, linux-pci



On Thursday 19 July 2018 04:45 PM, Lorenzo Pieralisi wrote:
> On Thu, Jul 19, 2018 at 04:04:34PM +0530, Vignesh R wrote:
>> Hi Lorenzo,
>>
[...]
>>>> +	ret = dra7xx_pcie_unaligned_memaccess(dev);
>>>> +	if (ret)
>>>> +		dev_err(dev, "WA for Errata i870 not appplied. Update DT\n");
>>>
>>> Hi Vignesh,
>>>
>>> Nit: s/appplied/applied
>>>
>>
>> Oops, let me know if you want me to resend with this fixed.
> 
> I can fix it, no problem but see below.
> 
>>> Two questions:
>>>
>>> - Current code applies the unaligned_memaccess() workaround for all
>>>   compatible variants. This is fine for current controllers (since
>>>   they are all affected), the code path above will have to be
>>>   reworked if there is any other compatible IP re-using the driver
>>>   that does not require the workaround.
>>
>> There are no compatible IPs that don't require this workaround. Also, I
>> don't see this IP being re-used in future. If you insist, I can add a
>> errata flag
> 
> I do not insist, I just pointed this out ;-)
> 
>>> - How do you want this series to go upstream ? If it goes via arm-soc,
>>>   which I think it should, here is my ACK on this patch:
>>>
>> Patch 1 and 2(dt bindings update and driver patch) can go in via PCI
>> tree. And DT changes(patch 3 and 4) can be picked up by Tony via
>> omap/arm-soc tree. They are mostly independent and should not cause any
>> problems. Does that sound good?
> 
> It should be fine but technically as soon as patch (2) is applied we
> would have a regression if patches (3) and (4) are applied separately.
> 

Right, although not a regression, I see your point. It would be good to
merge patch 3 and 4 before patch 2.

Tony,
Let me know if you are okay with taking this series via omap tree. I can
resend re-ordering patch 2 to come at the end of the series.

Regards
Vignesh

> 
>>> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>>>
>>
>> Thanks!
>>
>>> Please let me know if I can drop this series from the PCI patchwork.
>>>
>>> Thanks,
>>> Lorenzo
>>>
>>>> +
>>>>  	switch (mode) {
>>>>  	case DW_PCIE_RC_TYPE:
>>>>  		if (!IS_ENABLED(CONFIG_PCI_DRA7XX_HOST)) {
>>>> @@ -717,10 +721,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
>>>>  		dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
>>>>  				   DEVICE_TYPE_EP);
>>>>  
>>>> -		ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
>>>> -		if (ret)
>>>> -			goto err_gpio;
>>>> -
>>>>  		ret = dra7xx_add_pcie_ep(dra7xx, pdev);
>>>>  		if (ret < 0)
>>>>  			goto err_gpio;
>>>> -- 
>>>> 2.18.0
>>>>
>>
>> -- 
>> Regards
>> Vignesh

-- 
Regards
Vignesh

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

end of thread, other threads:[~2018-07-19 15:58 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-27 12:29 [PATCH v2 0/4] pci-dra7xx: Enable errata i870 workaround for RC mode Vignesh R
2018-06-27 12:29 ` [PATCH v2 1/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R
2018-06-27 12:29 ` [PATCH v2 2/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
2018-07-17  9:54   ` Kishon Vijay Abraham I
2018-07-18 11:02   ` Lorenzo Pieralisi
2018-07-19 10:34     ` Vignesh R
2018-07-19 11:15       ` Lorenzo Pieralisi
2018-07-19 15:59         ` Vignesh R
2018-06-27 12:29 ` [PATCH v2 3/4] ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode Vignesh R
2018-06-27 12:29 ` [PATCH v2 4/4] ARM: dts: dra7: Fix up unaligned access setting for PCIe EP Vignesh R
2018-07-17  9:55   ` Kishon Vijay Abraham I
2018-07-19 10:54     ` Vignesh R

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).