pci: msm: Dump PCIe registers to debug linkdown

Support to dump PARF,PHY,DBI/dm_core registers
for PCIe linkdown.

Change-Id: I1c591e676cda47fd9ded5ffe15a388672a75cb21
Signed-off-by: Vivek Pernamitta <vpernami@codeaurora.org>
This commit is contained in:
Vivek Pernamitta 2020-07-01 22:20:30 +05:30
parent 0873aa6e66
commit 3c4fddd87f

View file

@ -1280,6 +1280,29 @@ static void pcie_parf_dump(struct msm_pcie_dev_t *dev)
}
}
static void pcie_dm_core_dump(struct msm_pcie_dev_t *dev)
{
int i, size;
PCIE_DUMP(dev, "PCIe: RC%d DBI/dm_core register dump\n", dev->rc_idx);
size = resource_size(dev->res[MSM_PCIE_RES_DM_CORE].resource);
for (i = 0; i < size; i += 32) {
PCIE_DUMP(dev,
"RC%d: 0x%04x %08x %08x %08x %08x %08x %08x %08x %08x\n",
dev->rc_idx, i,
readl_relaxed(dev->dm_core + i),
readl_relaxed(dev->dm_core + (i + 4)),
readl_relaxed(dev->dm_core + (i + 8)),
readl_relaxed(dev->dm_core + (i + 12)),
readl_relaxed(dev->dm_core + (i + 16)),
readl_relaxed(dev->dm_core + (i + 20)),
readl_relaxed(dev->dm_core + (i + 24)),
readl_relaxed(dev->dm_core + (i + 28)));
}
}
static void msm_pcie_show_status(struct msm_pcie_dev_t *dev)
{
PCIE_DBG_FS(dev, "PCIe: RC%d is %s enumerated\n",
@ -5034,6 +5057,16 @@ static irqreturn_t handle_linkdown_irq(int irq, void *data)
dev->link_status = MSM_PCIE_LINK_DOWN;
dev->shadow_en = false;
/* PCIe registers dump on link down */
if ((dev->rc_idx == 0) || (dev->rc_idx == 2)) {
PCIE_DUMP(dev,
"PCIe:Linkdown IRQ for RC%d Dumping PCIe registers\n",
dev->rc_idx);
pcie_phy_dump(dev);
pcie_parf_dump(dev);
pcie_dm_core_dump(dev);
}
if (dev->linkdown_panic)
panic("User has chosen to panic on linkdown\n");