|
@@ -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
|
|
* @dra7xx: the dra7xx device where the workaround should be applied
|
|
*
|
|
*
|
|
* Access to the PCIe slave port that are not 32-bit aligned will result
|
|
* 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.
|
|
* 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;
|
|
int ret;
|
|
struct device_node *np = dev->of_node;
|
|
struct device_node *np = dev->of_node;
|
|
@@ -704,6 +704,11 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
|
|
|
|
|
|
dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
|
|
dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
|
|
DEVICE_TYPE_RC);
|
|
DEVICE_TYPE_RC);
|
|
|
|
+
|
|
|
|
+ ret = dra7xx_pcie_unaligned_memaccess(dev);
|
|
|
|
+ if (ret)
|
|
|
|
+ dev_err(dev, "WA for Errata i870 not applied\n");
|
|
|
|
+
|
|
ret = dra7xx_add_pcie_port(dra7xx, pdev);
|
|
ret = dra7xx_add_pcie_port(dra7xx, pdev);
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
goto err_gpio;
|
|
goto err_gpio;
|
|
@@ -717,7 +722,7 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
|
|
dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
|
|
dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE,
|
|
DEVICE_TYPE_EP);
|
|
DEVICE_TYPE_EP);
|
|
|
|
|
|
- ret = dra7xx_pcie_ep_unaligned_memaccess(dev);
|
|
|
|
|
|
+ ret = dra7xx_pcie_unaligned_memaccess(dev);
|
|
if (ret)
|
|
if (ret)
|
|
goto err_gpio;
|
|
goto err_gpio;
|
|
|
|
|