All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Minghuan Lian" <minghuan.Lian@nxp.com>,
	"Mingkai Hu" <mingkai.hu@nxp.com>, "Roy Zang" <roy.zang@nxp.com>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Rob Herring" <robh@kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linuxppc-dev@lists.ozlabs.org>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-pci@vger.kernel.org>,
	"moderated list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-arm-kernel@lists.infradead.org>,
	"open list" <linux-kernel@vger.kernel.org>,
	imx@lists.linux.dev
Subject: Re: [PATCH 1/3] PCI: layerscape: add function pointer for exit_from_l2()
Date: Mon, 16 Oct 2023 22:10:36 +0530	[thread overview]
Message-ID: <20231016164036.GE39962@thinkpad> (raw)
In-Reply-To: <20230915184306.2374670-1-Frank.Li@nxp.com>

On Fri, Sep 15, 2023 at 02:43:04PM -0400, Frank Li wrote:
> Difference layerscape chip have not difference exit_from_l2() method.
> Using function pointer for ls1028. It prepare for other layerscape
> suspend/resume support.
> 

How about:

Since difference SoCs require different sequence for exiting L2, let's add a
separate "exit_from_l2()" callback. This callback can be used to execute SoC
specific sequence.

> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/pci/controller/dwc/pci-layerscape.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> index b931d597656f6..20c48c06e2248 100644
> --- a/drivers/pci/controller/dwc/pci-layerscape.c
> +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> @@ -39,6 +39,8 @@
>  
>  struct ls_pcie_drvdata {
>  	const u32 pf_off;
> +	const struct dw_pcie_host_ops *ops;

Where is this ops used? If this is added as a preparatory for next patches, I'd
suggest you to move it to the respective one instead to avoid confusion.

> +	void (*exit_from_l2)(struct dw_pcie_rp *pp);
>  	bool pm_support;
>  };
>  
> @@ -180,6 +182,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = {
>  static const struct ls_pcie_drvdata layerscape_drvdata = {
>  	.pf_off = 0xc0000,
>  	.pm_support = true,
> +	.exit_from_l2 = ls_pcie_exit_from_l2,
>  };
>  
>  static const struct of_device_id ls_pcie_of_match[] = {
> @@ -213,7 +216,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
>  	pcie->drvdata = of_device_get_match_data(dev);
>  
>  	pci->dev = dev;
> -	pci->pp.ops = &ls_pcie_host_ops;
> +	pci->pp.ops = pcie->drvdata->ops ? pcie->drvdata->ops : &ls_pcie_host_ops;

This one also.

>  
>  	pcie->pci = pci;
>  
> @@ -251,7 +254,7 @@ static int ls_pcie_resume_noirq(struct device *dev)
>  	if (!pcie->drvdata->pm_support)
>  		return 0;
>  
> -	ls_pcie_exit_from_l2(&pcie->pci->pp);
> +	pcie->drvdata->exit_from_l2(&pcie->pci->pp);

You should always check for the existence of the callback first before invoking
it.

- Mani

>  
>  	return dw_pcie_resume_noirq(pcie->pci);
>  }
> -- 
> 2.34.1
> 

-- 
மணிவண்ணன் சதாசிவம்

WARNING: multiple messages have this Message-ID (diff)
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Krzysztof Wilczyński" <kw@linux.com>,
	imx@lists.linux.dev, "Rob Herring" <robh@kernel.org>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-pci@vger.kernel.org>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"open list" <linux-kernel@vger.kernel.org>,
	"Minghuan Lian" <minghuan.Lian@nxp.com>,
	"moderated list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-arm-kernel@lists.infradead.org>,
	"Roy Zang" <roy.zang@nxp.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linuxppc-dev@lists.ozlabs.org>,
	"Mingkai Hu" <mingkai.hu@nxp.com>
Subject: Re: [PATCH 1/3] PCI: layerscape: add function pointer for exit_from_l2()
Date: Mon, 16 Oct 2023 22:10:36 +0530	[thread overview]
Message-ID: <20231016164036.GE39962@thinkpad> (raw)
In-Reply-To: <20230915184306.2374670-1-Frank.Li@nxp.com>

On Fri, Sep 15, 2023 at 02:43:04PM -0400, Frank Li wrote:
> Difference layerscape chip have not difference exit_from_l2() method.
> Using function pointer for ls1028. It prepare for other layerscape
> suspend/resume support.
> 

How about:

Since difference SoCs require different sequence for exiting L2, let's add a
separate "exit_from_l2()" callback. This callback can be used to execute SoC
specific sequence.

> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/pci/controller/dwc/pci-layerscape.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> index b931d597656f6..20c48c06e2248 100644
> --- a/drivers/pci/controller/dwc/pci-layerscape.c
> +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> @@ -39,6 +39,8 @@
>  
>  struct ls_pcie_drvdata {
>  	const u32 pf_off;
> +	const struct dw_pcie_host_ops *ops;

Where is this ops used? If this is added as a preparatory for next patches, I'd
suggest you to move it to the respective one instead to avoid confusion.

> +	void (*exit_from_l2)(struct dw_pcie_rp *pp);
>  	bool pm_support;
>  };
>  
> @@ -180,6 +182,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = {
>  static const struct ls_pcie_drvdata layerscape_drvdata = {
>  	.pf_off = 0xc0000,
>  	.pm_support = true,
> +	.exit_from_l2 = ls_pcie_exit_from_l2,
>  };
>  
>  static const struct of_device_id ls_pcie_of_match[] = {
> @@ -213,7 +216,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
>  	pcie->drvdata = of_device_get_match_data(dev);
>  
>  	pci->dev = dev;
> -	pci->pp.ops = &ls_pcie_host_ops;
> +	pci->pp.ops = pcie->drvdata->ops ? pcie->drvdata->ops : &ls_pcie_host_ops;

This one also.

>  
>  	pcie->pci = pci;
>  
> @@ -251,7 +254,7 @@ static int ls_pcie_resume_noirq(struct device *dev)
>  	if (!pcie->drvdata->pm_support)
>  		return 0;
>  
> -	ls_pcie_exit_from_l2(&pcie->pci->pp);
> +	pcie->drvdata->exit_from_l2(&pcie->pci->pp);

You should always check for the existence of the callback first before invoking
it.

- Mani

>  
>  	return dw_pcie_resume_noirq(pcie->pci);
>  }
> -- 
> 2.34.1
> 

-- 
மணிவண்ணன் சதாசிவம்

WARNING: multiple messages have this Message-ID (diff)
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Minghuan Lian" <minghuan.Lian@nxp.com>,
	"Mingkai Hu" <mingkai.hu@nxp.com>, "Roy Zang" <roy.zang@nxp.com>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Rob Herring" <robh@kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linuxppc-dev@lists.ozlabs.org>,
	"open list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-pci@vger.kernel.org>,
	"moderated list:PCI DRIVER FOR FREESCALE LAYERSCAPE"
	<linux-arm-kernel@lists.infradead.org>,
	"open list" <linux-kernel@vger.kernel.org>,
	imx@lists.linux.dev
Subject: Re: [PATCH 1/3] PCI: layerscape: add function pointer for exit_from_l2()
Date: Mon, 16 Oct 2023 22:10:36 +0530	[thread overview]
Message-ID: <20231016164036.GE39962@thinkpad> (raw)
In-Reply-To: <20230915184306.2374670-1-Frank.Li@nxp.com>

On Fri, Sep 15, 2023 at 02:43:04PM -0400, Frank Li wrote:
> Difference layerscape chip have not difference exit_from_l2() method.
> Using function pointer for ls1028. It prepare for other layerscape
> suspend/resume support.
> 

How about:

Since difference SoCs require different sequence for exiting L2, let's add a
separate "exit_from_l2()" callback. This callback can be used to execute SoC
specific sequence.

> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/pci/controller/dwc/pci-layerscape.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> index b931d597656f6..20c48c06e2248 100644
> --- a/drivers/pci/controller/dwc/pci-layerscape.c
> +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> @@ -39,6 +39,8 @@
>  
>  struct ls_pcie_drvdata {
>  	const u32 pf_off;
> +	const struct dw_pcie_host_ops *ops;

Where is this ops used? If this is added as a preparatory for next patches, I'd
suggest you to move it to the respective one instead to avoid confusion.

> +	void (*exit_from_l2)(struct dw_pcie_rp *pp);
>  	bool pm_support;
>  };
>  
> @@ -180,6 +182,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = {
>  static const struct ls_pcie_drvdata layerscape_drvdata = {
>  	.pf_off = 0xc0000,
>  	.pm_support = true,
> +	.exit_from_l2 = ls_pcie_exit_from_l2,
>  };
>  
>  static const struct of_device_id ls_pcie_of_match[] = {
> @@ -213,7 +216,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
>  	pcie->drvdata = of_device_get_match_data(dev);
>  
>  	pci->dev = dev;
> -	pci->pp.ops = &ls_pcie_host_ops;
> +	pci->pp.ops = pcie->drvdata->ops ? pcie->drvdata->ops : &ls_pcie_host_ops;

This one also.

>  
>  	pcie->pci = pci;
>  
> @@ -251,7 +254,7 @@ static int ls_pcie_resume_noirq(struct device *dev)
>  	if (!pcie->drvdata->pm_support)
>  		return 0;
>  
> -	ls_pcie_exit_from_l2(&pcie->pci->pp);
> +	pcie->drvdata->exit_from_l2(&pcie->pci->pp);

You should always check for the existence of the callback first before invoking
it.

- Mani

>  
>  	return dw_pcie_resume_noirq(pcie->pci);
>  }
> -- 
> 2.34.1
> 

-- 
மணிவண்ணன் சதாசிவம்

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-10-16 16:40 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-15 18:43 [PATCH 1/3] PCI: layerscape: add function pointer for exit_from_l2() Frank Li
2023-09-15 18:43 ` Frank Li
2023-09-15 18:43 ` [PATCH 2/3] PCI: layerscape: add suspend/resume for ls1021a Frank Li
2023-09-15 18:43   ` Frank Li
2023-10-04 14:23   ` Frank Li
2023-10-04 14:23     ` Frank Li
2023-10-10 14:20     ` Frank Li
2023-10-10 14:20       ` Frank Li
2023-10-10 16:02       ` Lorenzo Pieralisi
2023-10-10 16:02         ` Lorenzo Pieralisi
2023-10-10 16:02         ` Lorenzo Pieralisi
2023-10-16 14:45         ` Frank Li
2023-10-16 14:45           ` Frank Li
2023-10-16 14:45           ` Frank Li
2023-10-16 15:22           ` Bjorn Helgaas
2023-10-16 15:22             ` Bjorn Helgaas
2023-10-16 15:22             ` Bjorn Helgaas
2023-10-16 16:11             ` Frank Li
2023-10-16 16:11               ` Frank Li
2023-10-16 16:11               ` Frank Li
2023-10-16 16:25               ` Bjorn Helgaas
2023-10-16 16:25                 ` Bjorn Helgaas
2023-10-16 16:25                 ` Bjorn Helgaas
2023-10-16 16:59                 ` Frank Li
2023-10-16 16:59                   ` Frank Li
2023-10-16 16:59                   ` Frank Li
2023-10-16 16:25               ` Lorenzo Pieralisi
2023-10-16 16:25                 ` Lorenzo Pieralisi
2023-10-16 16:25                 ` Lorenzo Pieralisi
2023-10-16 16:12             ` Lorenzo Pieralisi
2023-10-16 16:12               ` Lorenzo Pieralisi
2023-10-16 16:12               ` Lorenzo Pieralisi
2023-10-16 16:58   ` Manivannan Sadhasivam
2023-10-16 16:58     ` Manivannan Sadhasivam
2023-10-16 16:58     ` Manivannan Sadhasivam
2023-10-16 20:18     ` Frank Li
2023-10-16 20:18       ` Frank Li
2023-10-16 20:18       ` Frank Li
2023-10-17  8:17       ` Manivannan Sadhasivam
2023-10-17  8:17         ` Manivannan Sadhasivam
2023-10-17  8:17         ` Manivannan Sadhasivam
2023-09-15 18:43 ` [PATCH 3/3] PCI: layerscape: add suspend/resume for ls1043a Frank Li
2023-09-15 18:43   ` Frank Li
2023-10-16 17:07   ` Manivannan Sadhasivam
2023-10-16 17:07     ` Manivannan Sadhasivam
2023-10-16 17:07     ` Manivannan Sadhasivam
2023-10-16 16:40 ` Manivannan Sadhasivam [this message]
2023-10-16 16:40   ` [PATCH 1/3] PCI: layerscape: add function pointer for exit_from_l2() Manivannan Sadhasivam
2023-10-16 16:40   ` Manivannan Sadhasivam

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=20231016164036.GE39962@thinkpad \
    --to=manivannan.sadhasivam@linaro.org \
    --cc=Frank.Li@nxp.com \
    --cc=bhelgaas@google.com \
    --cc=imx@lists.linux.dev \
    --cc=kw@linux.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=lpieralisi@kernel.org \
    --cc=minghuan.Lian@nxp.com \
    --cc=mingkai.hu@nxp.com \
    --cc=robh@kernel.org \
    --cc=roy.zang@nxp.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 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.