From: Shawn Lin <shawn.lin@rock-chips.com> To: Bjorn Helgaas <bhelgaas@google.com> Cc: linux-pci@vger.kernel.org, linux-rockchip@lists.infradead.org, Wenrui Li <wenrui.li@rock-chips.com>, Brian Norris <briannorris@chromium.org>, Jeffy Chen <jeffy.chen@rock-chips.com>, Shawn Lin <shawn.lin@rock-chips.com> Subject: [PATCH] PCI: rockchip: Mark SLC bit as well as CCC bit for RC Date: Fri, 17 Mar 2017 15:24:53 +0800 [thread overview] Message-ID: <1489735493-148838-1-git-send-email-shawn.lin@rock-chips.com> (raw) lspci traces CCC to see if the end-2-end supports common clock, so the current code should work as we mark the CCC bit of RC. However, ASPM code actually check SLC bit of RC and try to compare it with the downstream components' SLC instead. So when enabling ASPM, CCC will be cleared after failing to match SLC with the corresponding bit of downstream components. On one hand, from the code of pcie_aspm_configure_common_clock, we could find that what we actually need to set is SLC. On the other hand, we should also guarantee that CCC should be marked w/o supporting ASPM. This patch fixes this issue. Cc: Brian Norris <briannorris@chromium.org> Cc: jeffy.chen <jeffy.chen@rock-chips.com> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> --- drivers/pci/host/pcie-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c index 26ddd35..7cd4d5c 100644 --- a/drivers/pci/host/pcie-rockchip.c +++ b/drivers/pci/host/pcie-rockchip.c @@ -596,7 +596,7 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip) /* Set RC's clock architecture as common clock */ status = rockchip_pcie_read(rockchip, PCIE_RC_CONFIG_LCS); - status |= PCI_EXP_LNKCTL_CCC; + status |= (PCI_EXP_LNKCTL_CCC | PCI_EXP_LNKSTA_SLC << 16); rockchip_pcie_write(rockchip, status, PCIE_RC_CONFIG_LCS); /* Enable Gen1 training */ -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> To: Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Cc: Jeffy Chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Wenrui Li <wenrui.li-TNX95d0MmH7DzftRWevZcw@public.gmane.org> Subject: [PATCH] PCI: rockchip: Mark SLC bit as well as CCC bit for RC Date: Fri, 17 Mar 2017 15:24:53 +0800 [thread overview] Message-ID: <1489735493-148838-1-git-send-email-shawn.lin@rock-chips.com> (raw) lspci traces CCC to see if the end-2-end supports common clock, so the current code should work as we mark the CCC bit of RC. However, ASPM code actually check SLC bit of RC and try to compare it with the downstream components' SLC instead. So when enabling ASPM, CCC will be cleared after failing to match SLC with the corresponding bit of downstream components. On one hand, from the code of pcie_aspm_configure_common_clock, we could find that what we actually need to set is SLC. On the other hand, we should also guarantee that CCC should be marked w/o supporting ASPM. This patch fixes this issue. Cc: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Cc: jeffy.chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org> Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> --- drivers/pci/host/pcie-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c index 26ddd35..7cd4d5c 100644 --- a/drivers/pci/host/pcie-rockchip.c +++ b/drivers/pci/host/pcie-rockchip.c @@ -596,7 +596,7 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip) /* Set RC's clock architecture as common clock */ status = rockchip_pcie_read(rockchip, PCIE_RC_CONFIG_LCS); - status |= PCI_EXP_LNKCTL_CCC; + status |= (PCI_EXP_LNKCTL_CCC | PCI_EXP_LNKSTA_SLC << 16); rockchip_pcie_write(rockchip, status, PCIE_RC_CONFIG_LCS); /* Enable Gen1 training */ -- 1.9.1
next reply other threads:[~2017-03-17 7:57 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-17 7:24 Shawn Lin [this message] 2017-03-17 7:24 ` [PATCH] PCI: rockchip: Mark SLC bit as well as CCC bit for RC Shawn Lin 2017-03-17 18:23 ` [PATCH] PCI: rockchip: Mark SLC bit as well as CCC bit for RCg Brian Norris 2017-04-01 15:14 ` [PATCH] PCI: rockchip: Mark SLC bit as well as CCC bit for RC Bjorn Helgaas 2017-04-05 1:20 ` Shawn Lin
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=1489735493-148838-1-git-send-email-shawn.lin@rock-chips.com \ --to=shawn.lin@rock-chips.com \ --cc=bhelgaas@google.com \ --cc=briannorris@chromium.org \ --cc=jeffy.chen@rock-chips.com \ --cc=linux-pci@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=wenrui.li@rock-chips.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.