Message ID | 20201109171937.28326-2-vidyas@nvidia.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Lorenzo Pieralisi |
Headers | show |
Series | Enhancements to Tegra194 PCIe driver | expand |
On Mon, Nov 09, 2020 at 10:49:32PM +0530, Vidya Sagar wrote: > If the absence of CLKREQ# signal is indicated by the absence of > "supports-clkreq" in the device-tree node, current driver is disabling > the advertisement of ASPM-L1 Sub-States *before* the ASPM-L1 Sub-States > offset is correctly initialized. Since default value of the ASPM-L1SS > offset is zero, this is causing the Vendor-ID wrongly programmed to 0x10d2 > instead of Nvidia's 0x10de thereby the quirks applicable for Tegra194 are > not being applied. This patch fixes this issue by refactoring the > code that disables the ASPM-L1SS advertisement. > > Fixes: 56e15a238d92 ("PCI: tegra: Add Tegra194 PCIe support") > Signed-off-by: Vidya Sagar <vidyas@nvidia.com> > --- > V4: > * None > > V3: > * None > > V2: > * None > > drivers/pci/controller/dwc/pcie-tegra194.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) Looks like this no longer applies cleanly after that other fix that you sent earlier. But looking more closely, that's because that other fix already incorporates an equivalent change, so I think this can be dropped from this series. Thierry
> -----Original Message----- > From: Thierry Reding <thierry.reding@gmail.com> > Sent: Thursday, November 26, 2020 5:03 PM > To: Vidya Sagar <vidyas@nvidia.com> > Cc: lorenzo.pieralisi@arm.com; robh+dt@kernel.org; bhelgaas@google.com; > Jonathan Hunter <jonathanh@nvidia.com>; amanharitsh123@gmail.com; > dinghao.liu@zju.edu.cn; kw@linux.com; linux-pci@vger.kernel.org; linux- > tegra@vger.kernel.org; linux-kernel@vger.kernel.org; Krishna Thota > <kthota@nvidia.com>; Manikanta Maddireddy <mmaddireddy@nvidia.com>; > sagar.tv@gmail.com > Subject: Re: [PATCH V4 1/6] PCI: tegra: Fix ASPM-L1SS advertisement disable > code > > On Mon, Nov 09, 2020 at 10:49:32PM +0530, Vidya Sagar wrote: > > If the absence of CLKREQ# signal is indicated by the absence of > > "supports-clkreq" in the device-tree node, current driver is disabling > > the advertisement of ASPM-L1 Sub-States *before* the ASPM-L1 > > Sub-States offset is correctly initialized. Since default value of the > > ASPM-L1SS offset is zero, this is causing the Vendor-ID wrongly > > programmed to 0x10d2 instead of Nvidia's 0x10de thereby the quirks > > applicable for Tegra194 are not being applied. This patch fixes this > > issue by refactoring the code that disables the ASPM-L1SS advertisement. > > > > Fixes: 56e15a238d92 ("PCI: tegra: Add Tegra194 PCIe support") > > Signed-off-by: Vidya Sagar <vidyas@nvidia.com> > > --- > > V4: > > * None > > > > V3: > > * None > > > > V2: > > * None > > > > drivers/pci/controller/dwc/pcie-tegra194.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > Looks like this no longer applies cleanly after that other fix that you sent earlier. > But looking more closely, that's because that other fix already incorporates an > equivalent change, so I think this can be dropped from this series. Yes. This is no longer applies cleanly and I'll fix it in the next series, but, the current patch is still required. The other change I pushed is taking care of getting a valid 'dbi' address before accessing the dbi region, but, this current change would make sure that 'pcie->cfg_link_cap_l1sub' would have a valid value before calling disable_aspm_l1/2() APIs. Thanks, Vidya Sagar > > Thierry
diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c index aa511ec0d800..b172b1d49713 100644 --- a/drivers/pci/controller/dwc/pcie-tegra194.c +++ b/drivers/pci/controller/dwc/pcie-tegra194.c @@ -896,6 +896,12 @@ static void tegra_pcie_prepare_host(struct pcie_port *pp) init_host_aspm(pcie); + /* Disable ASPM-L1SS advertisement if there is no CLKREQ routing */ + if (!pcie->supports_clkreq) { + disable_aspm_l11(pcie); + disable_aspm_l12(pcie); + } + val = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); val &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val); @@ -1400,12 +1406,6 @@ static int tegra_pcie_config_controller(struct tegra_pcie_dw *pcie, pcie->pcie_cap_base = dw_pcie_find_capability(&pcie->pci, PCI_CAP_ID_EXP); - /* Disable ASPM-L1SS advertisement as there is no CLKREQ routing */ - if (!pcie->supports_clkreq) { - disable_aspm_l11(pcie); - disable_aspm_l12(pcie); - } - return ret; fail_phy:
If the absence of CLKREQ# signal is indicated by the absence of "supports-clkreq" in the device-tree node, current driver is disabling the advertisement of ASPM-L1 Sub-States *before* the ASPM-L1 Sub-States offset is correctly initialized. Since default value of the ASPM-L1SS offset is zero, this is causing the Vendor-ID wrongly programmed to 0x10d2 instead of Nvidia's 0x10de thereby the quirks applicable for Tegra194 are not being applied. This patch fixes this issue by refactoring the code that disables the ASPM-L1SS advertisement. Fixes: 56e15a238d92 ("PCI: tegra: Add Tegra194 PCIe support") Signed-off-by: Vidya Sagar <vidyas@nvidia.com> --- V4: * None V3: * None V2: * None drivers/pci/controller/dwc/pcie-tegra194.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)