From: Bjorn Helgaas <helgaas@kernel.org>
To: Jianjun Wang <jianjun.wang@mediatek.com>
Cc: "Ryder Lee" <ryder.lee@mediatek.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, jieyy.yang@mediatek.com,
chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com,
jian.yang@mediatek.com
Subject: Re: [PATCH v2] PCI: mediatek-gen3: Print LTSSM state when PCIe link down
Date: Wed, 15 Jun 2022 14:59:12 -0500 [thread overview]
Message-ID: <20220615195912.GA1024264@bhelgaas> (raw)
In-Reply-To: <20220329030715.7975-1-jianjun.wang@mediatek.com>
On Tue, Mar 29, 2022 at 11:07:15AM +0800, Jianjun Wang wrote:
> Print current LTSSM state when PCIe link down instead of the register
> value, make it easier to get the link status.
>
> Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> ---
> Changes in v2:
> Print both of the register value and the LTSSM state.
Applied to pci/ctrl/mediatek-gen3 for v5.20, thanks!
> ---
> drivers/pci/controller/pcie-mediatek-gen3.c | 41 ++++++++++++++++++++-
> 1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
> index 6745076a02b9..c24e03c198b7 100644
> --- a/drivers/pci/controller/pcie-mediatek-gen3.c
> +++ b/drivers/pci/controller/pcie-mediatek-gen3.c
> @@ -153,6 +153,37 @@ struct mtk_gen3_pcie {
> DECLARE_BITMAP(msi_irq_in_use, PCIE_MSI_IRQS_NUM);
> };
>
> +/* LTSSM state in PCIE_LTSSM_STATUS_REG bit[28:24] */
> +static const char *const ltssm_str[] = {
> + "detect.quiet", /* 0x00 */
> + "detect.active", /* 0x01 */
> + "polling.active", /* 0x02 */
> + "polling.compliance", /* 0x03 */
> + "polling.configuration", /* 0x04 */
> + "config.linkwidthstart", /* 0x05 */
> + "config.linkwidthaccept", /* 0x06 */
> + "config.lanenumwait", /* 0x07 */
> + "config.lanenumaccept", /* 0x08 */
> + "config.complete", /* 0x09 */
> + "config.idle", /* 0x0A */
> + "recovery.receiverlock", /* 0x0B */
> + "recovery.equalization", /* 0x0C */
> + "recovery.speed", /* 0x0D */
> + "recovery.receiverconfig", /* 0x0E */
> + "recovery.idle", /* 0x0F */
> + "L0", /* 0x10 */
> + "L0s", /* 0x11 */
> + "L1.entry", /* 0x12 */
> + "L1.idle", /* 0x13 */
> + "L2.idle", /* 0x14 */
> + "L2.transmitwake", /* 0x15 */
> + "disable", /* 0x16 */
> + "loopback.entry", /* 0x17 */
> + "loopback.active", /* 0x18 */
> + "loopback.exit", /* 0x19 */
> + "hotreset", /* 0x1A */
> +};
> +
> /**
> * mtk_pcie_config_tlp_header() - Configure a configuration TLP header
> * @bus: PCI bus to query
> @@ -327,8 +358,16 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
> !!(val & PCIE_PORT_LINKUP), 20,
> PCI_PM_D3COLD_WAIT * USEC_PER_MSEC);
> if (err) {
> + const char *ltssm_state;
> + int ltssm_index;
> +
> val = readl_relaxed(pcie->base + PCIE_LTSSM_STATUS_REG);
> - dev_err(pcie->dev, "PCIe link down, ltssm reg val: %#x\n", val);
> + ltssm_index = PCIE_LTSSM_STATE(val);
> + ltssm_state = ltssm_index >= ARRAY_SIZE(ltssm_str) ?
> + "Unknown state" : ltssm_str[ltssm_index];
> + dev_err(pcie->dev,
> + "PCIe link down, current ltssm state: %s (%#x)\n",
> + ltssm_state, val);
> return err;
> }
>
> --
> 2.18.0
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2022-06-15 19:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-29 3:07 [PATCH v2] PCI: mediatek-gen3: Print LTSSM state when PCIe link down Jianjun Wang
2022-04-22 6:33 ` Jianjun Wang
2022-05-18 1:55 ` Jianjun Wang
2022-06-01 2:24 ` Jianjun Wang
2022-06-14 2:15 ` Jianjun Wang
2022-06-15 19:59 ` Bjorn Helgaas [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=20220615195912.GA1024264@bhelgaas \
--to=helgaas@kernel.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bhelgaas@google.com \
--cc=chuanjia.liu@mediatek.com \
--cc=jian.yang@mediatek.com \
--cc=jianjun.wang@mediatek.com \
--cc=jieyy.yang@mediatek.com \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=qizhong.cheng@mediatek.com \
--cc=robh@kernel.org \
--cc=ryder.lee@mediatek.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;
as well as URLs for NNTP newsgroup(s).