Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp490569pxu; Thu, 3 Dec 2020 05:39:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJyWdTQi8XqHawHajur6alAh7QO9eOo/20g2HroYshF8OTMJl34f/g0fPZ3koVQo9BGzZlxh X-Received: by 2002:a17:906:3daa:: with SMTP id y10mr2505544ejh.23.1607002742073; Thu, 03 Dec 2020 05:39:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607002742; cv=none; d=google.com; s=arc-20160816; b=OMEN/AWJkCd7saqzKMzyTDZ/OOrNJDyN096cvCFsmyGncRbi1X3nHuglI1M2aKPYad VhjqCI/nidGx4ytGijcwaYzMsC86mE0emAqwUbfg2QXzBnxrhunkblkSNEwbXjc/ZA/+ 0uj2M100Sp8H+X4eKADUyDZSJINHXfls7xESS33QwSeHnzsLQ5x/d3Nrhms/08cyW8hx rcLeh7X7Ijl323eAVVXB3hCVgviMUXLrPaK8rRb/R2m57wLMnb76s9IJeAGWgL8EtRBS il9mCQy9a33L8O5bBPYzKVH2fR5Dh8tiUiR0Ct9N0VxTOqPBrLMlkd9fZ4XUhA9mk/cV t9Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=FzOTD9Je2Yb9E4ZN56eudlZMA2FxlWvUtl9VQXv+GOA=; b=HIQySO6uGr6yxxtaiQ4Lkm2H54bXTy8cP08Mgxt/wqzUHUa/nYXBgk7Le9cvLea/ZO ljlEWSScRVMQwYgQKB76rKZ6+erf8TtMp2hzyq1bAfWy2zr1QyJnabX6vPb8B+IvJOgk qT79TENzGs11XmVrNSO5yDZo+JCjj7e5nTqKdyMYC8LCxJuhjKhp5bK0kg+l82Eulzg5 vqM34eZq/Wp4Nz6omIQwMDs9bk6523KvTe22cvvoIAXL0P266uQ7csV+W/UJ/jYIGcQF y3M68qqqCcrFdl8aMh0n2TVsb3MArMXKWHYLduzAAQ36Xf2dg3iSEU+11e2JaHdeDJ5o cYgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=HGh5gkIB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h2si895369edt.544.2020.12.03.05.38.36; Thu, 03 Dec 2020 05:39:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=HGh5gkIB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2436961AbgLCNg0 (ORCPT + 99 others); Thu, 3 Dec 2020 08:36:26 -0500 Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:1789 "EHLO hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437207AbgLCNgV (ORCPT ); Thu, 3 Dec 2020 08:36:21 -0500 Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Thu, 03 Dec 2020 05:35:41 -0800 Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 3 Dec 2020 13:35:36 +0000 Received: from vidyas-desktop.nvidia.com (10.124.1.5) by mail.nvidia.com (172.20.187.10) with Microsoft SMTP Server id 15.0.1473.3 via Frontend Transport; Thu, 3 Dec 2020 13:35:33 +0000 From: Vidya Sagar To: , , , , , , , CC: , , , , , , Subject: [PATCH V5 5/5] PCI: tegra: Disable LTSSM during L2 entry Date: Thu, 3 Dec 2020 19:04:51 +0530 Message-ID: <20201203133451.17716-6-vidyas@nvidia.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201203133451.17716-1-vidyas@nvidia.com> References: <20201203133451.17716-1-vidyas@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1607002541; bh=FzOTD9Je2Yb9E4ZN56eudlZMA2FxlWvUtl9VQXv+GOA=; h=From:To:CC:Subject:Date:Message-ID:X-Mailer:In-Reply-To: References:X-NVConfidentiality:MIME-Version:Content-Type; b=HGh5gkIBOrXR5PJjElyACgO0DgKyFHJsX5F54nDbKrnXRswivgXyxNsUCb/mCokBc ZET/9ku76GNr5W2VN+OeFF2yQQkGGJdYHzpdbKqiiIDtHbZXuvIIZRbZdAV2qku0VE krk+vDrsd20yMJCSqHTj5mD5Hfa5GPFvOIk9qZUL2ZYlJr2V+z0gB4pVM4qBexjgJ0 JIVJelMgGza+DuctzTGnKGD/QUIyVdA64Uo+EmHFZbG1L5khatmk3sphVbJFztazpT 6Vq8AnSzROH98OmQQQqhigtXyLQFrt9wRvp+W3Wuo36Q79QLYO1FUJiZtKAJ2Sza9l h/uISq3u4FWTQ== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PCIe cards like Marvell SATA controller and some of the Samsung NVMe drives don't support taking the link to L2 state. When the link doesn't go to L2 state, Tegra194 requires the LTSSM to be disabled to allow PHY to start the next link up process cleanly during suspend/resume sequence. Failing to disable LTSSM results in the PCIe link not coming up in the next resume cycle. Tested-by: Thierry Reding Signed-off-by: Vidya Sagar Acked-by: Thierry Reding --- V5: * Added Tested-by and Acked-by from Thierry Reding V4: * New patch in this series drivers/pci/controller/dwc/pcie-tegra194.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c index f4109d71f20b..5597b2a49598 100644 --- a/drivers/pci/controller/dwc/pcie-tegra194.c +++ b/drivers/pci/controller/dwc/pcie-tegra194.c @@ -1506,6 +1506,14 @@ static void tegra_pcie_dw_pme_turnoff(struct tegra_pcie_dw *pcie) data &= ~APPL_PINMUX_PEX_RST; appl_writel(pcie, data, APPL_PINMUX); + /* + * Some cards do not go to detect state even after de-asserting + * PERST#. So, de-assert LTSSM to bring link to detect state. + */ + data = readl(pcie->appl_base + APPL_CTRL); + data &= ~APPL_CTRL_LTSSM_EN; + writel(data, pcie->appl_base + APPL_CTRL); + err = readl_poll_timeout_atomic(pcie->appl_base + APPL_DEBUG, data, ((data & @@ -1513,14 +1521,8 @@ static void tegra_pcie_dw_pme_turnoff(struct tegra_pcie_dw *pcie) APPL_DEBUG_LTSSM_STATE_SHIFT) == LTSSM_STATE_PRE_DETECT, 1, LTSSM_TIMEOUT); - if (err) { + if (err) dev_info(pcie->dev, "Link didn't go to detect state\n"); - } else { - /* Disable LTSSM after link is in detect state */ - data = appl_readl(pcie, APPL_CTRL); - data &= ~APPL_CTRL_LTSSM_EN; - appl_writel(pcie, data, APPL_CTRL); - } } /* * DBI registers may not be accessible after this as PLL-E would be -- 2.17.1