mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Yao Zi <me@ziyao.cc>
To: "Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Siddharth Vadapalli" <s-vadapalli@ti.com>,
	"Hans Zhang" <18255117159@163.com>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Chen Wang" <unicorn_wang@outlook.com>,
	"Manikandan K Pillai" <mpillai@cadence.com>,
	"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
	"Inochi Amaoto" <inochiama@gmail.com>,
	"Han Gao" <rabenda.cn@gmail.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	Yao Zi <me@ziyao.cc>
Subject: [PATCH v2 1/2] PCI: cadence: Support platform-specific hooks for RC init/deinit
Date: Fri, 27 Feb 2026 18:19:24 +0000	[thread overview]
Message-ID: <20260227181925.52475-2-me@ziyao.cc> (raw)
In-Reply-To: <20260227181925.52475-1-me@ziyao.cc>

Support initialization and de-initialization hooks provided by
platform-specific drivers. Initialization ones run after everything
else has been set up for RC, but before it's probed by the PCI
subsystem, to allow platform drivers to easily override RC properties
like LNKCAP. De-initialization ones run before anything else has been
cleaned-up.

Signed-off-by: Yao Zi <me@ziyao.cc>
---
 drivers/pci/controller/cadence/pcie-cadence-host.c | 8 +++++++-
 drivers/pci/controller/cadence/pcie-cadence.h      | 7 +++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c
index db3154c1eccb..23ee5a9c240d 100644
--- a/drivers/pci/controller/cadence/pcie-cadence-host.c
+++ b/drivers/pci/controller/cadence/pcie-cadence-host.c
@@ -304,6 +304,8 @@ static int cdns_pcie_host_init_address_translation(struct cdns_pcie_rc *rc)
 
 static void cdns_pcie_host_deinit(struct cdns_pcie_rc *rc)
 {
+	if (rc->ops->deinit)
+		rc->ops->deinit(rc);
 	cdns_pcie_host_deinit_address_translation(rc);
 	cdns_pcie_host_deinit_root_port(rc);
 }
@@ -316,7 +318,11 @@ int cdns_pcie_host_init(struct cdns_pcie_rc *rc)
 	if (err)
 		return err;
 
-	return cdns_pcie_host_init_address_translation(rc);
+	err = cdns_pcie_host_init_address_translation(rc);
+	if (err)
+		return err;
+
+	return rc->ops->init ? rc->ops->init(rc) : 0;
 }
 EXPORT_SYMBOL_GPL(cdns_pcie_host_init);
 
diff --git a/drivers/pci/controller/cadence/pcie-cadence.h b/drivers/pci/controller/cadence/pcie-cadence.h
index 443033c607d7..7d8f8e87915b 100644
--- a/drivers/pci/controller/cadence/pcie-cadence.h
+++ b/drivers/pci/controller/cadence/pcie-cadence.h
@@ -100,6 +100,11 @@ struct cdns_pcie {
 	const  struct cdns_plat_pcie_of_data *cdns_pcie_reg_offsets;
 };
 
+struct cdns_pcie_rc_ops {
+	int	(*init)(struct cdns_pcie_rc *rc);
+	void	(*deinit)(struct cdns_pcie_rc *rc);
+};
+
 /**
  * struct cdns_pcie_rc - private data for this PCIe Root Complex driver
  * @pcie: Cadence PCIe controller
@@ -115,6 +120,7 @@ struct cdns_pcie {
  * @quirk_detect_quiet_flag: LTSSM Detect Quiet min delay set as quirk
  * @ecam_supported: Whether the ECAM is supported
  * @no_inbound_map: Whether inbound mapping is supported
+ * @ops: Platform-specific hooks to initialize/de-initialize PCIe Root Complex
  */
 struct cdns_pcie_rc {
 	struct cdns_pcie	pcie;
@@ -127,6 +133,7 @@ struct cdns_pcie_rc {
 	unsigned int		quirk_detect_quiet_flag:1;
 	unsigned int            ecam_supported:1;
 	unsigned int            no_inbound_map:1;
+	const struct cdns_pcie_rc_ops *ops;
 };
 
 /**
-- 
2.53.0


  reply	other threads:[~2026-02-27 18:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-27 18:19 [PATCH v2 0/2] PCI/sg2042: Avoid L0s and L1 on Sophgo 2042 PCIe Root Ports Yao Zi
2026-02-27 18:19 ` Yao Zi [this message]
2026-03-03  1:08   ` [PATCH v2 1/2] PCI: cadence: Support platform-specific hooks for RC init/deinit Inochi Amaoto
2026-03-03  6:34   ` Chen Wang
2026-02-27 18:19 ` [PATCH v2 2/2] PCI: sg2042: Avoid L0s and L1 on Sophgo 2042 PCIe Root Ports Yao Zi
2026-02-27 18:24   ` Yao Zi
2026-03-03  1:09     ` Inochi Amaoto
2026-03-03  6:37   ` Chen Wang
2026-03-26 16:45   ` Manivannan Sadhasivam
2026-03-27  8:19     ` Yao Zi
2026-04-02 12:26       ` Chen Wang

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=20260227181925.52475-2-me@ziyao.cc \
    --to=me@ziyao.cc \
    --cc=18255117159@163.com \
    --cc=bhelgaas@google.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=inochiama@gmail.com \
    --cc=kishon@kernel.org \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lpieralisi@kernel.org \
    --cc=mani@kernel.org \
    --cc=mpillai@cadence.com \
    --cc=rabenda.cn@gmail.com \
    --cc=robh@kernel.org \
    --cc=s-vadapalli@ti.com \
    --cc=unicorn_wang@outlook.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

Powered by JetHome