From: Manivannan Sadhasivam <mani@kernel.org>
To: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Cc: lpieralisi@kernel.org, kw@linux.com, robh@kernel.org,
bhelgaas@google.com, krzysztof.kozlowski+dt@linaro.org,
conor+dt@kernel.org, jingoohan1@gmail.com,
marek.vasut+renesas@gmail.com, linux-pci@vger.kernel.org,
devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH v7 5/7] PCI: rcar-gen4: Add .ltssm_enable() for other SoC support
Date: Sat, 11 May 2024 13:08:12 +0530 [thread overview]
Message-ID: <20240511073812.GE6672@thinkpad> (raw)
In-Reply-To: <20240415081135.3814373-6-yoshihiro.shimoda.uh@renesas.com>
PCI: rcar-gen4: Move LTSSM handling to ltssm_control() callback
On Mon, Apr 15, 2024 at 05:11:33PM +0900, Yoshihiro Shimoda wrote:
> This driver can reuse other R-Car Gen4 SoCs support like r8a779g0 and
> r8a779h0. However, r8a779g0 and r8a779h0 require other initializing
> settings that differ than r8a779f0. So, add a new function pointer
> .ltssm_enable() for it.
>
> After applied this patch, probing SoCs by rcar_gen4_pcie_of_match[]
> will be changed like below:
>
> - r8a779f0 as "renesas,r8a779f0-pcie" and "renesas,r8a779f0-pcie-ep"
>
> Existing dts files have the compatible above. So, no behavior changes.
>
How about:
Sequence for controlling the LTSSM state machine is going to change for SoCs
like r8a779f0. So let's move the LTSSM code to a new callback ltssm_control()
and populate it for each SoCs.
This also warrants the addition of new compatibles for r8a779g0 and r8a779h0.
But since they are already part of the DT binding, it won't make any difference.
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> ---
> drivers/pci/controller/dwc/pcie-rcar-gen4.c | 41 ++++++++++++++++++---
> 1 file changed, 36 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-rcar-gen4.c b/drivers/pci/controller/dwc/pcie-rcar-gen4.c
> index 3da0a844e1b6..980a916933d6 100644
> --- a/drivers/pci/controller/dwc/pcie-rcar-gen4.c
> +++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c
> @@ -48,7 +48,9 @@
> #define RCAR_GEN4_PCIE_EP_FUNC_DBI_OFFSET 0x1000
> #define RCAR_GEN4_PCIE_EP_FUNC_DBI2_OFFSET 0x800
>
> +struct rcar_gen4_pcie;
> struct rcar_gen4_pcie_drvdata {
> + int (*ltssm_enable)(struct rcar_gen4_pcie *rcar);
int (*ltssm_control)(struct rcar_gen4_pcie *rcar, bool enable);
> enum dw_pcie_device_mode mode;
> };
>
> @@ -61,8 +63,8 @@ struct rcar_gen4_pcie {
> #define to_rcar_gen4_pcie(_dw) container_of(_dw, struct rcar_gen4_pcie, dw)
>
> /* Common */
> -static void rcar_gen4_pcie_ltssm_enable(struct rcar_gen4_pcie *rcar,
> - bool enable)
> +static void rcar_gen4_pcie_ltssm_control(struct rcar_gen4_pcie *rcar,
> + bool enable)
> {
> u32 val;
>
> @@ -127,9 +129,13 @@ static int rcar_gen4_pcie_speed_change(struct dw_pcie *dw)
> static int rcar_gen4_pcie_start_link(struct dw_pcie *dw)
> {
> struct rcar_gen4_pcie *rcar = to_rcar_gen4_pcie(dw);
> - int i, changes;
> + int i, changes, ret;
>
> - rcar_gen4_pcie_ltssm_enable(rcar, true);
> + if (rcar->drvdata->ltssm_enable) {
> + ret = rcar->drvdata->ltssm_enable(rcar);
> + if (ret)
> + return ret;
> + }
>
> /*
> * Require direct speed change with retrying here if the link_gen is
> @@ -157,7 +163,7 @@ static void rcar_gen4_pcie_stop_link(struct dw_pcie *dw)
> {
> struct rcar_gen4_pcie *rcar = to_rcar_gen4_pcie(dw);
>
> - rcar_gen4_pcie_ltssm_enable(rcar, false);
> + rcar_gen4_pcie_ltssm_control(rcar, false);
You should use the callback here as like above.
> }
>
> static int rcar_gen4_pcie_common_init(struct rcar_gen4_pcie *rcar)
> @@ -504,6 +510,23 @@ static void rcar_gen4_pcie_remove(struct platform_device *pdev)
> rcar_gen4_pcie_unprepare(rcar);
> }
>
> +static int r8a779f0_pcie_ltssm_enable(struct rcar_gen4_pcie *rcar)
> +{
> + rcar_gen4_pcie_ltssm_control(rcar, true);
> +
> + return 0;
> +}
> +
> +static struct rcar_gen4_pcie_drvdata drvdata_r8a779f0_pcie = {
> + .ltssm_enable = r8a779f0_pcie_ltssm_enable,
Just pass rcar_gen4_pcie_ltssm_control() directly.
- Mani
--
மணிவண்ணன் சதாசிவம்
next prev parent reply other threads:[~2024-05-11 7:38 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-15 8:11 [PATCH v7 0/7] PCI: rcar-gen4: Add R-Car V4H support Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 1/7] dt-bindings: PCI: rcar-gen4-pci-host: Add R-Car V4H compatible Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 2/7] dt-bindings: PCI: rcar-gen4-pci-ep: " Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 3/7] PCI: dwc: Add PCIE_PORT_{FORCE,LANE_SKEW} macros Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 4/7] PCI: rcar-gen4: Add rcar_gen4_pcie_drvdata Yoshihiro Shimoda
2024-05-11 7:27 ` Manivannan Sadhasivam
2024-05-13 9:20 ` Geert Uytterhoeven
2024-05-15 7:56 ` Manivannan Sadhasivam
2024-04-15 8:11 ` [PATCH v7 5/7] PCI: rcar-gen4: Add .ltssm_enable() for other SoC support Yoshihiro Shimoda
2024-05-11 7:38 ` Manivannan Sadhasivam [this message]
2024-05-14 11:08 ` Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 6/7] PCI: rcar-gen4: Add support for r8a779g0 Yoshihiro Shimoda
2024-04-15 8:27 ` Niklas Cassel
2024-04-15 9:19 ` Yoshihiro Shimoda
2024-04-15 12:24 ` Niklas Cassel
2024-05-11 8:02 ` Manivannan Sadhasivam
2024-05-14 11:27 ` Yoshihiro Shimoda
2024-05-15 7:59 ` Manivannan Sadhasivam
2024-05-15 8:59 ` Wolfram Sang
2024-05-15 9:09 ` Wolfram Sang
2024-05-15 16:26 ` Niklas Cassel
2024-05-15 20:10 ` Wolfram Sang
2024-05-16 12:41 ` Manivannan Sadhasivam
2024-05-16 12:51 ` Manivannan Sadhasivam
2024-05-17 11:45 ` Yoshihiro Shimoda
2024-04-15 8:11 ` [PATCH v7 7/7] misc: pci_endpoint_test: Document a policy about adding pci_device_id Yoshihiro Shimoda
2024-04-15 14:42 ` Frank Li
2024-05-17 10:33 ` [PATCH v7 0/7] PCI: rcar-gen4: Add R-Car V4H support Krzysztof Wilczyński
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=20240511073812.GE6672@thinkpad \
--to=mani@kernel.org \
--cc=bhelgaas@google.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jingoohan1@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kw@linux.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=marek.vasut+renesas@gmail.com \
--cc=robh@kernel.org \
--cc=yoshihiro.shimoda.uh@renesas.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).