Skip to content

Commit 849068f

Browse files
Vidya Sagargregkh
authored andcommitted
PCI: tegra194: Set LTR message request before PCIe link up in Endpoint mode
[ Upstream commit b256493 ] LTR message should be sent as soon as the Root Port enables LTR in the Endpoint mode. So set snoop and no-snoop LTR timing and LTR message request before the PCIe link comes up, so that the LTR message is sent upstream as soon as LTR is enabled. Without programming these values, the Endpoint would send latencies of 0 to the host, which will be inaccurate. Fixes: c57247f ("PCI: tegra: Add support for PCIe endpoint mode in Tegra194") Signed-off-by: Vidya Sagar <vidyas@nvidia.com> Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> [mani: commit log] Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Link: https://patch.msgid.link/20260324190755.1094879-9-mmaddireddy@nvidia.com Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent e463beb commit 849068f

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

drivers/pci/controller/dwc/pcie-tegra194.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -487,15 +487,6 @@ static irqreturn_t tegra_pcie_ep_irq_thread(int irq, void *arg)
487487
if (val & PCI_COMMAND_MASTER) {
488488
ktime_t timeout;
489489

490-
/* 110us for both snoop and no-snoop */
491-
val = FIELD_PREP(PCI_LTR_VALUE_MASK, 110) |
492-
FIELD_PREP(PCI_LTR_SCALE_MASK, 2) |
493-
LTR_MSG_REQ |
494-
FIELD_PREP(PCI_LTR_NOSNOOP_VALUE, 110) |
495-
FIELD_PREP(PCI_LTR_NOSNOOP_SCALE, 2) |
496-
LTR_NOSNOOP_MSG_REQ;
497-
appl_writel(pcie, val, APPL_LTR_MSG_1);
498-
499490
/* Send LTR upstream */
500491
val = appl_readl(pcie, APPL_LTR_MSG_2);
501492
val |= APPL_LTR_MSG_2_LTR_MSG_REQ_STATE;
@@ -1832,6 +1823,15 @@ static void pex_ep_event_pex_rst_deassert(struct tegra_pcie_dw *pcie)
18321823
val |= APPL_INTR_EN_L1_0_0_RDLH_LINK_UP_INT_EN;
18331824
appl_writel(pcie, val, APPL_INTR_EN_L1_0_0);
18341825

1826+
/* 110us for both snoop and no-snoop */
1827+
val = FIELD_PREP(PCI_LTR_VALUE_MASK, 110) |
1828+
FIELD_PREP(PCI_LTR_SCALE_MASK, 2) |
1829+
LTR_MSG_REQ |
1830+
FIELD_PREP(PCI_LTR_NOSNOOP_VALUE, 110) |
1831+
FIELD_PREP(PCI_LTR_NOSNOOP_SCALE, 2) |
1832+
LTR_NOSNOOP_MSG_REQ;
1833+
appl_writel(pcie, val, APPL_LTR_MSG_1);
1834+
18351835
reset_control_deassert(pcie->core_rst);
18361836

18371837
val = dw_pcie_readl_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL);

0 commit comments

Comments
 (0)