From: Manikanta Maddireddy <mmaddireddy@nvidia.com>
To: <bhelgaas@google.com>, <lpieralisi@kernel.org>,
<kwilczynski@kernel.org>, <mani@kernel.org>, <robh@kernel.org>,
<krzk+dt@kernel.org>, <conor+dt@kernel.org>,
<thierry.reding@gmail.com>, <jonathanh@nvidia.com>,
<jingoohan1@gmail.com>, <vidyas@nvidia.com>, <cassel@kernel.org>,
<18255117159@163.com>
Cc: <linux-pci@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-tegra@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
"Manikanta Maddireddy" <mmaddireddy@nvidia.com>
Subject: [PATCH V4 15/22] PCI: tegra194: Don't force the device into the D0 state before L2
Date: Mon, 26 Jan 2026 13:15:12 +0530 [thread overview]
Message-ID: <20260126074519.3426742-16-mmaddireddy@nvidia.com> (raw)
In-Reply-To: <20260126074519.3426742-1-mmaddireddy@nvidia.com>
From: Vidya Sagar <vidyas@nvidia.com>
As per PCIe CEM spec rev 4.0 ver 1.0 sec 2.3, the PCIe endpoint device
should be in D3 state to assert wake# pin. This takes precedence over PCI
Express Base r4.0 v1.0 September 27-2017, 5.2 Link State Power Management
which states that the device can be put into D0 state before taking the
link to L2 state. So, to enable the wake functionality for endpoints, do
not force the devices to D0 state before taking the link to L2 state.
There is no functional issue with the endpoints where the link doesn't go
into L2 state (the reason why the earlier change was made in the first
place) as the root port proceeds with the usual flow post PME timeout.
Fixes: 56e15a238d92 ("PCI: tegra: Add Tegra194 PCIe support")
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
---
V4:
* None
V3:
* This is a new patch in this series
drivers/pci/controller/dwc/pcie-tegra194.c | 41 ----------------------
1 file changed, 41 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c
index 6fcfff93d4bc..1a269397150a 100644
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
@@ -1283,44 +1283,6 @@ static int tegra_pcie_bpmp_set_pll_state(struct tegra_pcie_dw *pcie,
return 0;
}
-static void tegra_pcie_downstream_dev_to_D0(struct tegra_pcie_dw *pcie)
-{
- struct dw_pcie_rp *pp = &pcie->pci.pp;
- struct pci_bus *child, *root_port_bus = NULL;
- struct pci_dev *pdev;
-
- /*
- * link doesn't go into L2 state with some of the endpoints with Tegra
- * if they are not in D0 state. So, need to make sure that immediate
- * downstream devices are in D0 state before sending PME_TurnOff to put
- * link into L2 state.
- * This is as per PCI Express Base r4.0 v1.0 September 27-2017,
- * 5.2 Link State Power Management (Page #428).
- */
-
- list_for_each_entry(child, &pp->bridge->bus->children, node) {
- if (child->parent == pp->bridge->bus) {
- root_port_bus = child;
- break;
- }
- }
-
- if (!root_port_bus) {
- dev_err(pcie->dev, "Failed to find downstream bus of Root Port\n");
- return;
- }
-
- /* Bring downstream devices to D0 if they are not already in */
- list_for_each_entry(pdev, &root_port_bus->devices, bus_list) {
- if (PCI_SLOT(pdev->devfn) == 0) {
- if (pci_set_power_state(pdev, PCI_D0))
- dev_err(pcie->dev,
- "Failed to transition %s to D0 state\n",
- dev_name(&pdev->dev));
- }
- }
-}
-
static int tegra_pcie_get_slot_regulators(struct tegra_pcie_dw *pcie)
{
pcie->slot_ctl_3v3 = devm_regulator_get_optional(pcie->dev, "vpcie3v3");
@@ -1650,7 +1612,6 @@ static void tegra_pcie_dw_pme_turnoff(struct tegra_pcie_dw *pcie)
static void tegra_pcie_deinit_controller(struct tegra_pcie_dw *pcie)
{
- tegra_pcie_downstream_dev_to_D0(pcie);
dw_pcie_host_deinit(&pcie->pci.pp);
tegra_pcie_dw_pme_turnoff(pcie);
tegra_pcie_unconfig_controller(pcie);
@@ -2402,7 +2363,6 @@ static int tegra_pcie_dw_suspend_noirq(struct device *dev)
if (!pcie->link_state)
return 0;
- tegra_pcie_downstream_dev_to_D0(pcie);
tegra_pcie_dw_pme_turnoff(pcie);
tegra_pcie_unconfig_controller(pcie);
@@ -2479,7 +2439,6 @@ static void tegra_pcie_dw_shutdown(struct platform_device *pdev)
return;
debugfs_remove_recursive(pcie->debugfs);
- tegra_pcie_downstream_dev_to_D0(pcie);
disable_irq(pcie->pci.pp.irq);
if (IS_ENABLED(CONFIG_PCI_MSI))
--
2.34.1
next prev parent reply other threads:[~2026-01-26 7:47 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-26 7:44 [PATCH V4 00/22] Enhancements to pcie-tegra194 driver Manikanta Maddireddy
2026-01-26 7:44 ` [PATCH V4 01/22] PCI: tegra194: Use devm_gpiod_get_optional() to parse "nvidia,refclk-select" Manikanta Maddireddy
2026-01-26 7:44 ` [PATCH V4 02/22] PCI: tegra194: Drive CLKREQ signal low explicitly Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 03/22] PCI: tegra194: Fix polling delay for L2 state Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 04/22] PCI: tegra194: Apply pinctrl settings for both PCIe RP and EP Manikanta Maddireddy
2026-01-30 17:21 ` Jon Hunter
2026-02-02 5:22 ` Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 05/22] PCI: tegra194: Refactor LTSSM state polling on surprise down Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 06/22] PCI: tegra194: Disable direct speed change for EP Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 07/22] PCI: tegra194: Calibrate P2U for endpoint mode Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 08/22] PCI: tegra194: Free resources during controller deinitialization Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 09/22] PCI: tegra194: Remove IRQF_ONESHOT flag during Endpoint interrupt registration Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 10/22] PCI: tegra194: Enable DMA interrupt Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 11/22] PCI: tegra194: Enable hardware hot reset mode in Endpoint Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 12/22] PCI: tegra194: Allow system suspend when the Endpoint link is not up Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 13/22] PCI: tegra194: Disable L1.2 capability of Tegra234 EP Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 14/22] PCI: tegra194: Set LTR message request before PCIe link up Manikanta Maddireddy
2026-01-26 7:45 ` Manikanta Maddireddy [this message]
2026-02-02 13:27 ` [PATCH V4 15/22] PCI: tegra194: Don't force the device into the D0 state before L2 Jon Hunter
2026-01-26 7:45 ` [PATCH V4 16/22] PCI: tegra194: Free up EP resources during remove() Manikanta Maddireddy
2026-02-02 13:28 ` Jon Hunter
2026-01-26 7:45 ` [PATCH V4 17/22] dt-bindings: PCI: tegra194: Add monitor clock support Manikanta Maddireddy
2026-01-29 16:40 ` Rob Herring
2026-02-02 4:34 ` Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 18/22] PCI: tegra194: Add core " Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 19/22] PCI: tegra194: Add ASPM L1 entrance latency config Manikanta Maddireddy
2026-02-02 13:28 ` Jon Hunter
2026-01-26 7:45 ` [PATCH V4 20/22] PCI: tegra194: Use HW version number Manikanta Maddireddy
2026-02-02 13:30 ` Jon Hunter
2026-01-26 7:45 ` [PATCH V4 21/22] PCI: tegra194: Fix CBB timeout caused by DBI access before core power-on Manikanta Maddireddy
2026-01-26 7:45 ` [PATCH V4 22/22] PCI: tegra194: Disable PERST IRQ only in Endpoint mode Manikanta Maddireddy
2026-02-02 13:35 ` [PATCH V4 00/22] Enhancements to pcie-tegra194 driver Jon Hunter
2026-02-05 7:55 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260126074519.3426742-16-mmaddireddy@nvidia.com \
--to=mmaddireddy@nvidia.com \
--cc=18255117159@163.com \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jingoohan1@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=robh@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=vidyas@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®