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 2/4] PCI: tegra: Enable ASPM-L1 capability advertisement
Date: Tue, 31 Oct 2017 09:52:47 +0530 [thread overview]
Message-ID: <1509423769-10522-3-git-send-email-vidyas@nvidia.com> (raw)
In-Reply-To: <1509423769-10522-1-git-send-email-vidyas@nvidia.com>
Enables advertisement of ASPM-L1 support in capability
registers of applicable Tegra chips
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
---
V2:
* no change in this patch
drivers/pci/host/pci-tegra.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index adae03d671ab..e1526cc5d381 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -226,6 +226,9 @@
#define RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK (0xff << 18)
#define RP_VEND_XP_UPDATE_FC_THRESHOLD_T210 (0x60 << 18)
+#define RP_VEND_XP1 0xf04
+#define RP_VEND_XP1_LINK_PVT_CTL_L1_ASPM_SUPPORT BIT(21)
+
#define RP_VEND_CTL0 0xf44
#define RP_VEND_CTL0_DSK_RST_PULSE_WIDTH_MASK (0xf << 12)
#define RP_VEND_CTL0_DSK_RST_PULSE_WIDTH (0x9 << 12)
@@ -327,6 +330,7 @@ struct tegra_pcie_soc {
bool RAW_violation_fixup;
bool program_deskew_time;
bool updateFC_threshold;
+ bool has_aspm_l1;
};
static inline struct tegra_msi *to_tegra_msi(struct msi_controller *chip)
@@ -2188,6 +2192,13 @@ static void tegra_pcie_enable_rp_features(struct tegra_pcie_port *port)
value = readl(port->base + RP_VEND_CTL1);
value |= RP_VEND_CTL1_ERPT;
writel(value, port->base + RP_VEND_CTL1);
+
+ if (port->pcie->soc->has_aspm_l1) {
+ /* Advertise ASPM-L1 state capability*/
+ value = readl(port->base + RP_VEND_XP1);
+ value |= RP_VEND_XP1_LINK_PVT_CTL_L1_ASPM_SUPPORT;
+ writel(value, port->base + RP_VEND_XP1);
+ }
}
static void tegra_pcie_apply_sw_fixup(struct tegra_pcie_port *port)
@@ -2391,6 +2402,7 @@ static const struct tegra_pcie_soc tegra20_pcie = {
.RAW_violation_fixup = false,
.program_deskew_time = false,
.updateFC_threshold = false,
+ .has_aspm_l1 = false,
};
static const struct tegra_pcie_soc tegra30_pcie = {
@@ -2412,6 +2424,7 @@ static const struct tegra_pcie_soc tegra30_pcie = {
.RAW_violation_fixup = false,
.program_deskew_time = false,
.updateFC_threshold = false,
+ .has_aspm_l1 = true,
};
static const struct tegra_pcie_soc tegra124_pcie = {
@@ -2432,6 +2445,7 @@ static const struct tegra_pcie_soc tegra124_pcie = {
.RAW_violation_fixup = true,
.program_deskew_time = false,
.updateFC_threshold = false,
+ .has_aspm_l1 = true,
};
static const struct tegra_pcie_soc tegra210_pcie = {
@@ -2460,6 +2474,7 @@ static const struct tegra_pcie_soc tegra210_pcie = {
.RAW_violation_fixup = false,
.program_deskew_time = true,
.updateFC_threshold = true,
+ .has_aspm_l1 = true,
};
static const struct tegra_pcie_soc tegra186_pcie = {
@@ -2481,6 +2496,7 @@ static const struct tegra_pcie_soc tegra186_pcie = {
.RAW_violation_fixup = false,
.program_deskew_time = false,
.updateFC_threshold = false,
+ .has_aspm_l1 = true,
};
static const struct of_device_id tegra_pcie_of_match[] = {
--
2.7.4
next 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 ` Vidya Sagar [this message]
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 ` [PATCH V2 4/4] PCI: tegra: fixups to avoid unnecessary wakeup from ASPM-L1.2 Vidya Sagar
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-3-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).