All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shradha Todi" <shradha.t@samsung.com>
To: "'Krzysztof Kozlowski'" <krzk@kernel.org>
Cc: <linux-pci@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-samsung-soc@vger.kernel.or>,
	<linux-kernel@vger.kernel.org>, <linux-phy@lists.infradead.org>,
	<manivannan.sadhasivam@linaro.org>, <lpieralisi@kernel.org>,
	<kw@linux.com>, <robh@kernel.org>, <bhelgaas@google.com>,
	<jingoohan1@gmail.com>, <krzk+dt@kernel.org>,
	<conor+dt@kernel.org>, <alim.akhtar@samsung.com>,
	<vkoul@kernel.org>, <kishon@kernel.org>, <arnd@arndb.de>,
	<m.szyprowski@samsung.com>, <jh80.chung@samsung.com>,
	"'Pankaj Dubey'" <pankaj.dubey@samsung.com>
Subject: RE: [PATCH 04/10] PCI: exynos: Add platform device private data
Date: Tue, 27 May 2025 16:13:58 +0530	[thread overview]
Message-ID: <0e2301dbcef4$42969af0$c7c3d0d0$@samsung.com> (raw)
In-Reply-To: <20250521-cheerful-spiked-mackerel-ef7ade@kuoka>



> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: 21 May 2025 15:15
> To: Shradha Todi <shradha.t@samsung.com>
> Cc: linux-pci@vger.kernel.org; devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.or;
> linux-kernel@vger.kernel.org; linux-phy@lists.infradead.org; manivannan.sadhasivam@linaro.org; lpieralisi@kernel.org;
> kw@linux.com; robh@kernel.org; bhelgaas@google.com; jingoohan1@gmail.com; krzk+dt@kernel.org; conor+dt@kernel.org;
> alim.akhtar@samsung.com; vkoul@kernel.org; kishon@kernel.org; arnd@arndb.de; m.szyprowski@samsung.com;
> jh80.chung@samsung.com; Pankaj Dubey <pankaj.dubey@samsung.com>
> Subject: Re: [PATCH 04/10] PCI: exynos: Add platform device private data
> 
> On Mon, May 19, 2025 at 01:01:46AM GMT, Shradha Todi wrote:
> > -static const struct dw_pcie_ops dw_pcie_ops = {
> > +static const struct dw_pcie_ops exynos_dw_pcie_ops = {
> >  	.read_dbi = exynos_pcie_read_dbi,
> >  	.write_dbi = exynos_pcie_write_dbi,
> >  	.link_up = exynos_pcie_link_up,
> > @@ -279,6 +286,7 @@ static int exynos_pcie_probe(struct
> > platform_device *pdev)  {
> >  	struct device *dev = &pdev->dev;
> >  	struct exynos_pcie *ep;
> > +	const struct samsung_pcie_pdata *pdata;
> >  	struct device_node *np = dev->of_node;
> >  	int ret;
> >
> > @@ -286,8 +294,11 @@ static int exynos_pcie_probe(struct platform_device *pdev)
> >  	if (!ep)
> >  		return -ENOMEM;
> >
> > +	pdata = of_device_get_match_data(dev);
> > +
> > +	ep->pdata = pdata;
> >  	ep->pci.dev = dev;
> > -	ep->pci.ops = &dw_pcie_ops;
> > +	ep->pci.ops = pdata->dwc_ops;
> >
> >  	ep->phy = devm_of_phy_get(dev, np, NULL);
> >  	if (IS_ERR(ep->phy))
> > @@ -363,9 +374,9 @@ static int exynos_pcie_resume_noirq(struct device *dev)
> >  		return ret;
> >
> >  	/* exynos_pcie_host_init controls ep->phy */
> > -	exynos_pcie_host_init(pp);
> > +	ep->pdata->host_ops->init(pp);
> >  	dw_pcie_setup_rc(pp);
> > -	exynos_pcie_start_link(pci);
> > +	ep->pdata->dwc_ops->start_link(pci);
> 
> One more layer of indirection.
> 
> Read:
> https://lore.kernel.org/all/CAL_JsqJgaeOcnUzw+rUF2yO4hQYCdZYssjxHzrDvvHGJimrASA@mail.gmail.com/
> 

I went through this thread and the solution to avoid redirection seems to be:
1. Make the common parts into a library that each driver can call
2. When there is barely anything in common, make a separate driver

From my understanding of these 2 drivers, there is hardly anything that can go into common library
1. host_init, dbi_read, dbi_write these ops have completely different flow
2. link_up, start_link have similar flow but different register offsets
3. write_dbi2 and stop_link is not implemented for exynos but needed for FSD
4. Resources are different - FSD does not have regulator, Exynos5433 does not have syscon, FSD has msi IRQ vs exynos5433 has legacy
5. Exynos is host only whereas FSD is dual mode controller.

I don’t see any other way except redirection, or using lots of if(variant == FSD) which is also discouraged.

And about making it a different driver altogether, I'm completely okay to do so. In fact we had previously tried to post it as a
different driver which was rejected.

If you still feel there is a way to separate out the common parts into a library, please guide me.

> Best regards,
> Krzysztof





WARNING: multiple messages have this Message-ID (diff)
From: "Shradha Todi" <shradha.t@samsung.com>
To: "'Krzysztof Kozlowski'" <krzk@kernel.org>
Cc: <linux-pci@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-samsung-soc@vger.kernel.or>,
	<linux-kernel@vger.kernel.org>, <linux-phy@lists.infradead.org>,
	<manivannan.sadhasivam@linaro.org>, <lpieralisi@kernel.org>,
	<kw@linux.com>, <robh@kernel.org>, <bhelgaas@google.com>,
	<jingoohan1@gmail.com>, <krzk+dt@kernel.org>,
	<conor+dt@kernel.org>, <alim.akhtar@samsung.com>,
	<vkoul@kernel.org>, <kishon@kernel.org>, <arnd@arndb.de>,
	<m.szyprowski@samsung.com>, <jh80.chung@samsung.com>,
	"'Pankaj Dubey'" <pankaj.dubey@samsung.com>
Subject: RE: [PATCH 04/10] PCI: exynos: Add platform device private data
Date: Tue, 27 May 2025 16:13:58 +0530	[thread overview]
Message-ID: <0e2301dbcef4$42969af0$c7c3d0d0$@samsung.com> (raw)
In-Reply-To: <20250521-cheerful-spiked-mackerel-ef7ade@kuoka>



> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: 21 May 2025 15:15
> To: Shradha Todi <shradha.t@samsung.com>
> Cc: linux-pci@vger.kernel.org; devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.or;
> linux-kernel@vger.kernel.org; linux-phy@lists.infradead.org; manivannan.sadhasivam@linaro.org; lpieralisi@kernel.org;
> kw@linux.com; robh@kernel.org; bhelgaas@google.com; jingoohan1@gmail.com; krzk+dt@kernel.org; conor+dt@kernel.org;
> alim.akhtar@samsung.com; vkoul@kernel.org; kishon@kernel.org; arnd@arndb.de; m.szyprowski@samsung.com;
> jh80.chung@samsung.com; Pankaj Dubey <pankaj.dubey@samsung.com>
> Subject: Re: [PATCH 04/10] PCI: exynos: Add platform device private data
> 
> On Mon, May 19, 2025 at 01:01:46AM GMT, Shradha Todi wrote:
> > -static const struct dw_pcie_ops dw_pcie_ops = {
> > +static const struct dw_pcie_ops exynos_dw_pcie_ops = {
> >  	.read_dbi = exynos_pcie_read_dbi,
> >  	.write_dbi = exynos_pcie_write_dbi,
> >  	.link_up = exynos_pcie_link_up,
> > @@ -279,6 +286,7 @@ static int exynos_pcie_probe(struct
> > platform_device *pdev)  {
> >  	struct device *dev = &pdev->dev;
> >  	struct exynos_pcie *ep;
> > +	const struct samsung_pcie_pdata *pdata;
> >  	struct device_node *np = dev->of_node;
> >  	int ret;
> >
> > @@ -286,8 +294,11 @@ static int exynos_pcie_probe(struct platform_device *pdev)
> >  	if (!ep)
> >  		return -ENOMEM;
> >
> > +	pdata = of_device_get_match_data(dev);
> > +
> > +	ep->pdata = pdata;
> >  	ep->pci.dev = dev;
> > -	ep->pci.ops = &dw_pcie_ops;
> > +	ep->pci.ops = pdata->dwc_ops;
> >
> >  	ep->phy = devm_of_phy_get(dev, np, NULL);
> >  	if (IS_ERR(ep->phy))
> > @@ -363,9 +374,9 @@ static int exynos_pcie_resume_noirq(struct device *dev)
> >  		return ret;
> >
> >  	/* exynos_pcie_host_init controls ep->phy */
> > -	exynos_pcie_host_init(pp);
> > +	ep->pdata->host_ops->init(pp);
> >  	dw_pcie_setup_rc(pp);
> > -	exynos_pcie_start_link(pci);
> > +	ep->pdata->dwc_ops->start_link(pci);
> 
> One more layer of indirection.
> 
> Read:
> https://lore.kernel.org/all/CAL_JsqJgaeOcnUzw+rUF2yO4hQYCdZYssjxHzrDvvHGJimrASA@mail.gmail.com/
> 

I went through this thread and the solution to avoid redirection seems to be:
1. Make the common parts into a library that each driver can call
2. When there is barely anything in common, make a separate driver

From my understanding of these 2 drivers, there is hardly anything that can go into common library
1. host_init, dbi_read, dbi_write these ops have completely different flow
2. link_up, start_link have similar flow but different register offsets
3. write_dbi2 and stop_link is not implemented for exynos but needed for FSD
4. Resources are different - FSD does not have regulator, Exynos5433 does not have syscon, FSD has msi IRQ vs exynos5433 has legacy
5. Exynos is host only whereas FSD is dual mode controller.

I don’t see any other way except redirection, or using lots of if(variant == FSD) which is also discouraged.

And about making it a different driver altogether, I'm completely okay to do so. In fact we had previously tried to post it as a
different driver which was rejected.

If you still feel there is a way to separate out the common parts into a library, please guide me.

> Best regards,
> Krzysztof




-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

  reply	other threads:[~2025-05-28  4:59 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20250518193219epcas5p24b442233b3e2bc2a92f43b71a126062f@epcas5p2.samsung.com>
2025-05-18 19:31 ` [PATCH 00/10] Add PCIe support for Tesla FSD SoC Shradha Todi
2025-05-18 19:31   ` Shradha Todi
2025-05-18 19:31   ` [PATCH 01/10] PCI: exynos: Change macro names to exynos specific Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-18 19:31   ` [PATCH 02/10] PCI: exynos: Remove unused MACROs in exynos PCI file Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:41     ` Krzysztof Kozlowski
2025-05-21  9:41       ` Krzysztof Kozlowski
2025-05-27 10:42       ` Shradha Todi
2025-05-27 10:42         ` Shradha Todi
2025-05-18 19:31   ` [PATCH 03/10] PCI: exynos: Reorder MACROs to maintain consistency Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:45     ` Krzysztof Kozlowski
2025-05-21  9:45       ` Krzysztof Kozlowski
2025-05-27 10:42       ` Shradha Todi
2025-05-27 10:42         ` Shradha Todi
2025-05-18 19:31   ` [PATCH 04/10] PCI: exynos: Add platform device private data Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:44     ` Krzysztof Kozlowski
2025-05-21  9:44       ` Krzysztof Kozlowski
2025-05-27 10:43       ` Shradha Todi [this message]
2025-05-27 10:43         ` Shradha Todi
2025-06-13  9:04         ` Manivannan Sadhasivam
2025-06-13  9:04           ` Manivannan Sadhasivam
2025-05-18 19:31   ` [PATCH 05/10] PCI: exynos: Add structure to hold resource operations Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:42     ` Krzysztof Kozlowski
2025-05-21  9:42       ` Krzysztof Kozlowski
2025-05-27 10:44       ` Shradha Todi
2025-05-27 10:44         ` Shradha Todi
2025-05-18 19:31   ` [PATCH 06/10] dt-bindings: PCI: Add bindings support for Tesla FSD SoC Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:37     ` Krzysztof Kozlowski
2025-05-21  9:37       ` Krzysztof Kozlowski
2025-05-27 10:44       ` Shradha Todi
2025-05-27 10:44         ` Shradha Todi
2025-05-18 19:31   ` [PATCH 07/10] dt-bindings: phy: Add PHY bindings support for " Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:33     ` Krzysztof Kozlowski
2025-05-21  9:33       ` Krzysztof Kozlowski
2025-05-27 10:44       ` Shradha Todi
2025-05-27 10:44         ` Shradha Todi
2025-05-18 19:31   ` [PATCH 08/10] phy: exynos: Add PCIe PHY " Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-21  9:40     ` Krzysztof Kozlowski
2025-05-21  9:40       ` Krzysztof Kozlowski
2025-05-27 10:45       ` Shradha Todi
2025-05-27 10:45         ` Shradha Todi
2025-05-28  7:21         ` Krzysztof Kozlowski
2025-05-28  7:21           ` Krzysztof Kozlowski
2025-05-18 19:31   ` [PATCH 09/10] PCI: exynos: Add support for Tesla " Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-19 10:26     ` Niklas Cassel
2025-05-19 10:26       ` Niklas Cassel
2025-05-21  9:48     ` Krzysztof Kozlowski
2025-05-21  9:48       ` Krzysztof Kozlowski
2025-05-27 10:45       ` Shradha Todi
2025-05-27 10:45         ` Shradha Todi
2025-05-28  7:25         ` Krzysztof Kozlowski
2025-05-28  7:25           ` Krzysztof Kozlowski
2025-05-29 10:24           ` Shradha Todi
2025-05-29 10:24             ` Shradha Todi
2025-05-18 19:31   ` [PATCH 10/10] misc: pci_endpoint_test: Add driver data for FSD PCIe controllers Shradha Todi
2025-05-18 19:31     ` Shradha Todi
2025-05-19  9:59     ` Niklas Cassel
2025-05-19  9:59       ` Niklas Cassel

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='0e2301dbcef4$42969af0$c7c3d0d0$@samsung.com' \
    --to=shradha.t@samsung.com \
    --cc=alim.akhtar@samsung.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jh80.chung@samsung.com \
    --cc=jingoohan1@gmail.com \
    --cc=kishon@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=krzk@kernel.org \
    --cc=kw@linux.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.or \
    --cc=lpieralisi@kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=pankaj.dubey@samsung.com \
    --cc=robh@kernel.org \
    --cc=vkoul@kernel.org \
    /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.