From: Vidya Sagar <vidyas@nvidia.com>
To: <treding@nvidia.com>, <bhelgaas@google.com>, <rajatja@google.com>,
<yinghai@kernel.org>, <david.daney@cavium.com>,
<Julia.Lawall@lip6.fr>
Cc: <linux-tegra@vger.kernel.org>, <linux-pci@vger.kernel.org>,
<kthota@nvidia.com>, <mmaddireddy@nvidia.com>,
<vidyas@nvidia.com>
Subject: [PATCH V2 4/4] PCI: tegra: fixups to avoid unnecessary wakeup from ASPM-L1.2
Date: Tue, 31 Oct 2017 09:52:49 +0530 [thread overview]
Message-ID: <1509423769-10522-5-git-send-email-vidyas@nvidia.com> (raw)
In-Reply-To: <1509423769-10522-1-git-send-email-vidyas@nvidia.com>
sets CLKREQ asserted delay to a higher value to avoid
unnecessary wake up from L1.2_ENTRY state for Tegra210
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
---
V2:
* no change in this patch
drivers/pci/host/pci-tegra.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index 08da67a82a2d..811209dedde2 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -204,6 +204,8 @@
#define RP_L1_PM_SUBSTATES_1_CTL 0xC04
#define RP_L1_PM_SUBSTATES_1_CTL_PWR_OFF_DLY_MASK 0x1FFF
#define RP_L1_PM_SUBSTATES_1_CTL_PWR_OFF_DLY 0x26
+#define RP_L1SS_1_CTL_CLKREQ_ASSERTED_DLY_MASK (0x1FF << 13)
+#define RP_L1SS_1_CTL_CLKREQ_ASSERTED_DLY (0x27 << 13)
#define RP_L1_PM_SUBSTATES_2_CTL 0xC08
#define RP_L1_PM_SUBSTATES_2_CTL_T_L1_2_DLY_MASK 0x1FFF
@@ -354,6 +356,7 @@ struct tegra_pcie_soc {
bool updateFC_threshold;
bool has_aspm_l1;
bool has_aspm_l1ss;
+ bool l1ss_rp_wake_fixup;
};
static inline struct tegra_msi *to_tegra_msi(struct msi_controller *chip)
@@ -2307,6 +2310,16 @@ static void tegra_pcie_apply_sw_fixup(struct tegra_pcie_port *port)
(7 << RP_L1_PM_SUBSTATES_CTL_T_PWRN_VAL_SHIFT);
writel(value, port->base + RP_L1_PM_SUBSTATES_CTL);
+ if (soc->l1ss_rp_wake_fixup) {
+ /* Set CLKREQ asserted delay greater than Power_Off
+ * time (2us) to avoid RP wakeup in L1.2_ENTRY
+ */
+ value = readl(port->base + RP_L1_PM_SUBSTATES_1_CTL);
+ value &= ~RP_L1SS_1_CTL_CLKREQ_ASSERTED_DLY_MASK;
+ value |= RP_L1SS_1_CTL_CLKREQ_ASSERTED_DLY;
+ writel(value, port->base + RP_L1_PM_SUBSTATES_1_CTL);
+ }
+
/* Following is based on clk_m being 19.2 MHz */
value = readl(port->base + RP_L1_PM_SUBSTATES_1_CTL);
value &= ~RP_L1_PM_SUBSTATES_1_CTL_PWR_OFF_DLY_MASK;
@@ -2464,6 +2477,7 @@ static const struct tegra_pcie_soc tegra20_pcie = {
.updateFC_threshold = false,
.has_aspm_l1 = false,
.has_aspm_l1ss = false,
+ .l1ss_rp_wake_fixup = false,
};
static const struct tegra_pcie_soc tegra30_pcie = {
@@ -2487,6 +2501,7 @@ static const struct tegra_pcie_soc tegra30_pcie = {
.updateFC_threshold = false,
.has_aspm_l1 = true,
.has_aspm_l1ss = false,
+ .l1ss_rp_wake_fixup = false,
};
static const struct tegra_pcie_soc tegra124_pcie = {
@@ -2509,6 +2524,7 @@ static const struct tegra_pcie_soc tegra124_pcie = {
.updateFC_threshold = false,
.has_aspm_l1 = true,
.has_aspm_l1ss = false,
+ .l1ss_rp_wake_fixup = false,
};
static const struct tegra_pcie_soc tegra210_pcie = {
@@ -2539,6 +2555,7 @@ static const struct tegra_pcie_soc tegra210_pcie = {
.updateFC_threshold = true,
.has_aspm_l1 = true,
.has_aspm_l1ss = true,
+ .l1ss_rp_wake_fixup = true,
};
static const struct tegra_pcie_soc tegra186_pcie = {
@@ -2562,6 +2579,7 @@ static const struct tegra_pcie_soc tegra186_pcie = {
.updateFC_threshold = false,
.has_aspm_l1 = true,
.has_aspm_l1ss = true,
+ .l1ss_rp_wake_fixup = false,
};
static const struct of_device_id tegra_pcie_of_match[] = {
--
2.7.4
prev parent reply other threads:[~2017-10-31 4:23 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-31 4:22 [PATCH V2 0/4] Add ASPM-L1 Substates support for Tegra Vidya Sagar
2017-10-31 4:22 ` [PATCH V2 1/4] PCI/ASPM: Add API to supply LTR L1.2 threshold Vidya Sagar
2017-10-31 4:22 ` [PATCH V2 2/4] PCI: tegra: Enable ASPM-L1 capability advertisement Vidya Sagar
2017-10-31 4:22 ` [PATCH V2 3/4] PCI: tegra: Apply sw fixups to support ASPM-L1 Sub-States Vidya Sagar
2017-11-07 22:50 ` Bjorn Helgaas
2017-11-08 8:45 ` Vidya Sagar
2017-11-08 17:48 ` Bjorn Helgaas
2017-11-10 10:07 ` Vidya Sagar
2017-11-10 21:29 ` Bjorn Helgaas
2017-11-12 11:51 ` Vidya Sagar
2017-11-14 23:13 ` Bjorn Helgaas
2017-11-17 14:05 ` Vidya Sagar
2017-11-17 23:49 ` Bjorn Helgaas
2017-10-31 4:22 ` Vidya Sagar [this message]
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=1509423769-10522-5-git-send-email-vidyas@nvidia.com \
--to=vidyas@nvidia.com \
--cc=Julia.Lawall@lip6.fr \
--cc=bhelgaas@google.com \
--cc=david.daney@cavium.com \
--cc=kthota@nvidia.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mmaddireddy@nvidia.com \
--cc=rajatja@google.com \
--cc=treding@nvidia.com \
--cc=yinghai@kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).