From: Alex Elder <elder@riscstar.com>
To: "Inochi Amaoto" <inochiama@gmail.com>,
"Jingoo Han" <jingoohan1@gmail.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Yixun Lan" <dlan@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Christian Bruel" <christian.bruel@foss.st.com>,
"Frank Li" <Frank.Li@nxp.com>, "Nam Cao" <namcao@linutronix.de>,
"Qiang Yu" <qiang.yu@oss.qualcomm.com>,
"Krishna Chaitanya Chundru" <krishna.chundru@oss.qualcomm.com>,
"Xincheng Zhang" <zhangxincheng@ultrarisc.com>,
"Siddharth Vadapalli" <s-vadapalli@ti.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Vidya Sagar" <vidyas@nvidia.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Gustavo Pimentel" <gustavo.pimentel@synopsys.com>
Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
spacemit@lists.linux.dev, Yixun Lan <dlan@gentoo.org>,
Longbin Li <looong.bin@gmail.com>
Subject: Re: [PATCH v4 1/6] PCI: spacemit-k1: Add device data support
Date: Fri, 10 Jul 2026 11:01:16 -0500 [thread overview]
Message-ID: <338687f9-e80e-40e8-b14e-1218e61e4e0c@riscstar.com> (raw)
In-Reply-To: <20260709040027.958400-2-inochiama@gmail.com>
On 7/8/26 11:00 PM, Inochi Amaoto wrote:
> To reuse the K1 PCIe driver logic for K3 PCIe controller, add device
> data to handle the K1 specific logic and make room for the incoming
> logic for K3.
>
> Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
I have two suggestions/questions, but I think this looks
good overall (please add the space that Andy suggested).
If you drop the data field in the k1_pcie structure you
can keep this tag:
Reviewed-by: Alex Elder <elder@riscstar.com>
> ---
> drivers/pci/controller/dwc/pcie-spacemit-k1.c | 30 ++++++++++++++++---
> 1 file changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/controller/dwc/pcie-spacemit-k1.c
> index be20a520255b..f6ae8ff3589a 100644
> --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c
> +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c
> @@ -49,8 +49,17 @@
> #define PCIE_CONTROL_LOGIC 0x0004
> #define PCIE_SOFT_RESET BIT(0)
>
> +struct k1_pcie;
> +
> +struct k1_pcie_device_data {
> + const struct dw_pcie_host_ops *host_ops;
> + const struct dw_pcie_ops *ops;
> + int (*parse_port)(struct k1_pcie *k1);
> +};
> +
> struct k1_pcie {
> struct dw_pcie pci;
> + const struct k1_pcie_device_data *data;
Is it strictly necessary to keep a copy of the data
pointer in the k1_pcie structure?
It can be convenient to do so if you reuse the fields
in that structure rather than duplicating them, but
often the constant platform data is meant only for
initialization, and never needed after that.
> struct phy *phy;
> void __iomem *link;
> struct regmap *pmu; /* Errors ignored; MMIO-backed regmap */
> @@ -278,14 +287,21 @@ static int k1_pcie_parse_port(struct k1_pcie *k1)
>
> static int k1_pcie_probe(struct platform_device *pdev)
> {
> + const struct k1_pcie_device_data *data;
> struct device *dev = &pdev->dev;
> struct k1_pcie *k1;
> int ret;
>
> + data = device_get_match_data(dev);
> + if (!data)
> + return -ENODEV;
> +
> k1 = devm_kzalloc(dev, sizeof(*k1), GFP_KERNEL);
> if (!k1)
> return -ENOMEM;
>
> + k1->data = data;
> +
> k1->pmu = syscon_regmap_lookup_by_phandle_args(dev_of_node(dev),
> SYSCON_APMU, 1,
> &k1->pmu_off);
> @@ -299,11 +315,11 @@ static int k1_pcie_probe(struct platform_device *pdev)
> "failed to map \"link\" registers\n");
>
> k1->pci.dev = dev;
> - k1->pci.ops = &k1_pcie_ops;
> + k1->pci.ops = data->ops;
> k1->pci.pp.num_vectors = MAX_MSI_IRQS;
> dw_pcie_cap_set(&k1->pci, REQ_RES);
>
> - k1->pci.pp.ops = &k1_pcie_host_ops;
> + k1->pci.pp.ops = data->host_ops;
>
> /* Hold the PHY in reset until we start the link */
> regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CLK_RESET_CONTROL,
> @@ -320,7 +336,7 @@ static int k1_pcie_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, k1);
>
> - ret = k1_pcie_parse_port(k1);
> + ret = data->parse_port(k1);
> if (ret)
> return dev_err_probe(dev, ret, "failed to parse root port\n");
>
> @@ -338,8 +354,14 @@ static void k1_pcie_remove(struct platform_device *pdev)
> dw_pcie_host_deinit(&k1->pci.pp);
> }
>
> +static const struct k1_pcie_device_data k1_pcie_device_data = {
> + .host_ops = &k1_pcie_host_ops,
> + .ops = &k1_pcie_ops,
> + .parse_port = k1_pcie_parse_port,
> +};
> +
> static const struct of_device_id k1_pcie_of_match_table[] = {
> - { .compatible = "spacemit,k1-pcie", },
> + { .compatible = "spacemit,k1-pcie", .data = &k1_pcie_device_data},
In addition to the missing space that Andy mentioned,
adding a comma means the line won't need to change
when you add another entry to the array.
> { }
> };
>
next prev parent reply other threads:[~2026-07-10 16:01 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 4:00 [PATCH v4 0/6] riscv: spacemit: Add PCIe RC controller support for K3 Inochi Amaoto
2026-07-09 4:00 ` [PATCH v4 1/6] PCI: spacemit-k1: Add device data support Inochi Amaoto
2026-07-09 4:05 ` sashiko-bot
2026-07-09 7:09 ` Andy Shevchenko
2026-07-10 16:01 ` Alex Elder [this message]
2026-07-09 4:00 ` [PATCH v4 2/6] PCI: spacemit-k1: Add multiple PHY handles support Inochi Amaoto
2026-07-09 4:09 ` sashiko-bot
2026-07-09 7:16 ` Andy Shevchenko
2026-07-10 1:57 ` Inochi Amaoto
2026-07-10 8:07 ` Andy Shevchenko
2026-07-10 10:55 ` Inochi Amaoto
2026-07-10 12:42 ` Alex Elder
2026-07-11 13:01 ` Andy Shevchenko
2026-07-11 12:44 ` Andy Shevchenko
2026-07-10 12:51 ` Alex Elder
2026-07-11 13:04 ` Andy Shevchenko
2026-07-10 16:01 ` Alex Elder
2026-07-09 4:00 ` [PATCH v4 3/6] PCI: spacemit-k1: Add device id update helper Inochi Amaoto
2026-07-09 4:06 ` sashiko-bot
2026-07-10 16:01 ` Alex Elder
2026-07-09 4:00 ` [PATCH v4 4/6] dt-bindings: PCI: snps,dw-pcie: Add msi-parent for MSI handle check Inochi Amaoto
2026-07-09 4:06 ` sashiko-bot
2026-07-10 16:01 ` Alex Elder
2026-07-09 4:00 ` [PATCH v4 5/6] dt-bindings: PCI: spacemit: Introduce Spacemit K3 PCIe host controller Inochi Amaoto
2026-07-09 4:09 ` sashiko-bot
2026-07-10 16:01 ` Alex Elder
2026-07-09 4:00 ` [PATCH v4 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support Inochi Amaoto
2026-07-09 4:12 ` sashiko-bot
2026-07-09 7:21 ` Andy Shevchenko
2026-07-10 16:01 ` Alex Elder
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=338687f9-e80e-40e8-b14e-1218e61e4e0c@riscstar.com \
--to=elder@riscstar.com \
--cc=Frank.Li@nxp.com \
--cc=alex@ghiti.fr \
--cc=andriy.shevchenko@linux.intel.com \
--cc=aou@eecs.berkeley.edu \
--cc=bhelgaas@google.com \
--cc=christian.bruel@foss.st.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlan@gentoo.org \
--cc=dlan@kernel.org \
--cc=gustavo.pimentel@synopsys.com \
--cc=inochiama@gmail.com \
--cc=jingoohan1@gmail.com \
--cc=krishna.chundru@oss.qualcomm.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=looong.bin@gmail.com \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=namcao@linutronix.de \
--cc=neil.armstrong@linaro.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=qiang.yu@oss.qualcomm.com \
--cc=robh@kernel.org \
--cc=s-vadapalli@ti.com \
--cc=spacemit@lists.linux.dev \
--cc=vidyas@nvidia.com \
--cc=zhangxincheng@ultrarisc.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