public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] PCI: j721e: Extend j721e_pcie_ctrl_init() for non syscon nodes
@ 2024-01-29 10:49 Siddharth Vadapalli
  2024-01-29 15:19 ` Andrew Davis
  0 siblings, 1 reply; 6+ messages in thread
From: Siddharth Vadapalli @ 2024-01-29 10:49 UTC (permalink / raw)
  To: bhelgaas, lpieralisi, kw, robh, vigneshr
  Cc: linux-pci, linux-kernel, linux-arm-kernel, afd, srk, s-vadapalli

The "ti,syscon-pcie-ctrl" device-tree property is used to obtain
reference to the "pcie_ctrl" register within the System Controller Module
in order to configure the link speed, number of lanes and the mode of
operation of the PCIe controller. The existing implementation of the
"j721e_pcie_ctrl_init()" function handles the case where the compatible for
the System Controller Module node specified using the "ti,syscon-pcie-ctrl"
property is "syscon". Since the System Controller Module can be modelled as
a "simple-bus" as well, extend the implementation of the
"j721e_pcie_ctrl_init()" function to handle the "simple-bus" case.

Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
---

Hello,

This patch is based on linux-next tagged next-20240129.

The System Controller Module is modelled as a "simple-bus" in J784S4 SoC at
https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi#L45
The existing SoCs such as J721E and J7200 which currently model the node as
a Syscon node will also be updated to model it as a "simple-bus".
Therefore this patch aims to update the driver in order to handle the
migration of the System Controller Module to the "simple-bus" compatible
without breaking PCIe functionality on existing TI SoCs which make use
of the pci-j721e.c driver.

Regards,
Siddharth.

 drivers/pci/controller/cadence/pci-j721e.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index 85718246016b..2ace7e78a880 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -224,12 +224,20 @@ static int j721e_pcie_ctrl_init(struct j721e_pcie *pcie)
 {
 	struct device *dev = pcie->cdns_pcie->dev;
 	struct device_node *node = dev->of_node;
+	struct device_node *scm_conf;
 	struct of_phandle_args args;
 	unsigned int offset = 0;
 	struct regmap *syscon;
 	int ret;
 
-	syscon = syscon_regmap_lookup_by_phandle(node, "ti,syscon-pcie-ctrl");
+	scm_conf = of_parse_phandle(node, "ti,syscon-pcie-ctrl", 0);
+	if (!scm_conf) {
+		dev_err(dev, "unable to get System Controller node\n");
+		return -ENODEV;
+	}
+
+	syscon = device_node_to_regmap(scm_conf);
+	of_node_put(scm_conf);
 	if (IS_ERR(syscon)) {
 		dev_err(dev, "Unable to get ti,syscon-pcie-ctrl regmap\n");
 		return PTR_ERR(syscon);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-01-31 16:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-29 10:49 [PATCH] PCI: j721e: Extend j721e_pcie_ctrl_init() for non syscon nodes Siddharth Vadapalli
2024-01-29 15:19 ` Andrew Davis
2024-01-30  4:50   ` Siddharth Vadapalli
2024-01-30 15:00     ` Andrew Davis
2024-01-31  4:53       ` Siddharth Vadapalli
2024-01-31 16:10         ` Andrew Davis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox