]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
PCI: tegra: Advertise PCIe Advanced Error Reporting (AER) capability
authorManikanta Maddireddy <mmaddireddy@nvidia.com>
Tue, 18 Jun 2019 18:01:46 +0000 (23:31 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Thu, 20 Jun 2019 16:20:25 +0000 (17:20 +0100)
Default root port setting hides AER capability. This patch enables the
advertisement of AER capability by root port.

Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Thierry Reding <treding@nvidia.com>
drivers/pci/controller/pci-tegra.c

index dfb13aee632231272fe92facfc4e8ae16bfb31fe..c9687b5a6794fcc0df11b0c7e76febda87a01d54 100644 (file)
 #define RP_VEND_XP     0x00000f00
 #define  RP_VEND_XP_DL_UP      (1 << 30)
 
+#define RP_VEND_CTL1   0x00000f48
+#define  RP_VEND_CTL1_ERPT     (1 << 13)
+
 #define RP_VEND_CTL2 0x00000fa8
 #define  RP_VEND_CTL2_PCA_ENABLE (1 << 7)
 
@@ -479,6 +482,16 @@ static void tegra_pcie_port_reset(struct tegra_pcie_port *port)
        afi_writel(port->pcie, value, ctrl);
 }
 
+static void tegra_pcie_enable_rp_features(struct tegra_pcie_port *port)
+{
+       u32 value;
+
+       /* Enable AER capability */
+       value = readl(port->base + RP_VEND_CTL1);
+       value |= RP_VEND_CTL1_ERPT;
+       writel(value, port->base + RP_VEND_CTL1);
+}
+
 static void tegra_pcie_port_enable(struct tegra_pcie_port *port)
 {
        unsigned long ctrl = tegra_pcie_port_get_pex_ctrl(port);
@@ -503,6 +516,8 @@ static void tegra_pcie_port_enable(struct tegra_pcie_port *port)
                value |= RP_VEND_CTL2_PCA_ENABLE;
                writel(value, port->base + RP_VEND_CTL2);
        }
+
+       tegra_pcie_enable_rp_features(port);
 }
 
 static void tegra_pcie_port_disable(struct tegra_pcie_port *port)