[PATCH 05/10] pinctrl: imx: Split imx_pinctrl_probe() into common and mmio parts

Marek Vasut marex at denx.de
Fri Jan 24 15:50:54 CET 2025


Split imx_pinctrl_probe() into imx_pinctrl_probe_common() and
imx_pinctrl_probe_mmio(). The former does the common setup, the
later does the common setup and MMIO access configuration. The
common setup can be used as-is for SCU based systems, update
the pinctrl-imx8 to call only the common setup, update all the
other pinctrl drivers to call imx_pinctrl_probe_mmio().

No functional change.

Signed-off-by: Marek Vasut <marex at denx.de>
---
Cc: Alice Guo <alice.guo at nxp.com>
Cc: Jesse Taube <mr.bossman075 at gmail.com>
Cc: Peng Fan <peng.fan at nxp.com>
Cc: Peter Robinson <pbrobinson at gmail.com>
Cc: Tim Harvey <tharvey at gateworks.com>
Cc: Tom Rini <trini at konsulko.com>
Cc: u-boot at lists.denx.de
---
 drivers/pinctrl/nxp/pinctrl-imx.c     | 26 ++++++++++++++++++--------
 drivers/pinctrl/nxp/pinctrl-imx.h     |  3 ++-
 drivers/pinctrl/nxp/pinctrl-imx5.c    |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx6.c    |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx7.c    |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx7ulp.c |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx8.c    |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx8m.c   |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx8ulp.c |  2 +-
 drivers/pinctrl/nxp/pinctrl-imx93.c   |  2 +-
 drivers/pinctrl/nxp/pinctrl-imxrt.c   |  2 +-
 drivers/pinctrl/nxp/pinctrl-vf610.c   |  2 +-
 12 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/drivers/pinctrl/nxp/pinctrl-imx.c b/drivers/pinctrl/nxp/pinctrl-imx.c
index 2d142c3a8a9..e65e069ac54 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx.c
@@ -194,16 +194,11 @@ int imx_pinctrl_set_state(struct udevice *dev, struct udevice *config)
 	return 0;
 }
 
-int imx_pinctrl_probe(struct udevice *dev)
+int imx_pinctrl_probe_common(struct udevice *dev)
 {
 	struct imx_pinctrl_soc_info *info =
 		(struct imx_pinctrl_soc_info *)dev_get_driver_data(dev);
 	struct imx_pinctrl_priv *priv = dev_get_priv(dev);
-	struct ofnode_phandle_args arg;
-	ofnode node = dev_ofnode(dev);
-	fdt_addr_t addr;
-	fdt_size_t size;
-	int ret;
 
 	if (!info) {
 		dev_err(dev, "wrong pinctrl info\n");
@@ -213,8 +208,23 @@ int imx_pinctrl_probe(struct udevice *dev)
 	priv->dev = dev;
 	priv->info = info;
 
-	if (info->flags & IMX8_USE_SCU)
-		return 0;
+	return 0;
+}
+
+int imx_pinctrl_probe_mmio(struct udevice *dev)
+{
+	struct imx_pinctrl_soc_info *info =
+		(struct imx_pinctrl_soc_info *)dev_get_driver_data(dev);
+	struct imx_pinctrl_priv *priv = dev_get_priv(dev);
+	struct ofnode_phandle_args arg;
+	ofnode node = dev_ofnode(dev);
+	fdt_addr_t addr;
+	fdt_size_t size;
+	int ret;
+
+	ret = imx_pinctrl_probe_common(dev);
+	if (ret)
+		return ret;
 
 	addr = ofnode_get_addr_size_index(node, 0, &size);
 	if (addr == FDT_ADDR_T_NONE)
diff --git a/drivers/pinctrl/nxp/pinctrl-imx.h b/drivers/pinctrl/nxp/pinctrl-imx.h
index b25f7988f46..b9d50c0542e 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx.h
+++ b/drivers/pinctrl/nxp/pinctrl-imx.h
@@ -48,7 +48,8 @@ struct imx_pinctrl_priv {
 
 #define IOMUXC_CONFIG_SION	(0x1 << 4)
 
-int imx_pinctrl_probe(struct udevice *dev);
+int imx_pinctrl_probe_common(struct udevice *dev);
+int imx_pinctrl_probe_mmio(struct udevice *dev);
 
 int imx_pinctrl_remove(struct udevice *dev);
 
diff --git a/drivers/pinctrl/nxp/pinctrl-imx5.c b/drivers/pinctrl/nxp/pinctrl-imx5.c
index 544c5093336..814b088bdab 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx5.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx5.c
@@ -31,7 +31,7 @@ U_BOOT_DRIVER(imx5_pinctrl) = {
 	.name = "imx5-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx5_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx5_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx6.c b/drivers/pinctrl/nxp/pinctrl-imx6.c
index ae16ce73755..495b6af79fb 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx6.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx6.c
@@ -40,7 +40,7 @@ U_BOOT_DRIVER(fsl_imx6q_iomuxc) = {
 	.name = "fsl_imx6q_iomuxc",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx6_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx6_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx7.c b/drivers/pinctrl/nxp/pinctrl-imx7.c
index 87a35835566..e1fa6d76a13 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx7.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx7.c
@@ -28,7 +28,7 @@ U_BOOT_DRIVER(imx7_pinctrl) = {
 	.name = "imx7-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx7_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx7_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx7ulp.c b/drivers/pinctrl/nxp/pinctrl-imx7ulp.c
index 1f4fce455d6..9ca8ef2130d 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx7ulp.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx7ulp.c
@@ -32,7 +32,7 @@ U_BOOT_DRIVER(imx7ulp_pinctrl) = {
 	.name = "imx7ulp-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx7ulp_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx7ulp_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx8.c b/drivers/pinctrl/nxp/pinctrl-imx8.c
index 40976a9b588..a48e1b56df1 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx8.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx8.c
@@ -29,7 +29,7 @@ U_BOOT_DRIVER(imx8_pinctrl) = {
 	.name = "imx8_pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx8_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_common,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx8_pinctrl_ops,
 	.flags = DM_FLAG_PRE_RELOC,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx8m.c b/drivers/pinctrl/nxp/pinctrl-imx8m.c
index b1dabaaae7a..f69e6d74329 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx8m.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx8m.c
@@ -26,7 +26,7 @@ U_BOOT_DRIVER(imx8mq_pinctrl) = {
 	.name = "imx8mq-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx8m_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx8m_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx8ulp.c b/drivers/pinctrl/nxp/pinctrl-imx8ulp.c
index e482ad5536d..fed16b565a5 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx8ulp.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx8ulp.c
@@ -31,7 +31,7 @@ U_BOOT_DRIVER(imx8ulp_pinctrl) = {
 	.name = "imx8ulp-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx8ulp_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto = sizeof(struct imx_pinctrl_priv),
 	.ops = &imx8ulp_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imx93.c b/drivers/pinctrl/nxp/pinctrl-imx93.c
index d5736e21067..8a58e586610 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx93.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx93.c
@@ -26,7 +26,7 @@ U_BOOT_DRIVER(imx93_pinctrl) = {
 	.name = "imx93-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imx93_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imx93_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-imxrt.c b/drivers/pinctrl/nxp/pinctrl-imxrt.c
index db523a9005a..a8db355534c 100644
--- a/drivers/pinctrl/nxp/pinctrl-imxrt.c
+++ b/drivers/pinctrl/nxp/pinctrl-imxrt.c
@@ -27,7 +27,7 @@ U_BOOT_DRIVER(imxrt_pinctrl) = {
 	.name = "imxrt-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(imxrt_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &imxrt_pinctrl_ops,
diff --git a/drivers/pinctrl/nxp/pinctrl-vf610.c b/drivers/pinctrl/nxp/pinctrl-vf610.c
index e56df6dde56..3c9396cadda 100644
--- a/drivers/pinctrl/nxp/pinctrl-vf610.c
+++ b/drivers/pinctrl/nxp/pinctrl-vf610.c
@@ -27,7 +27,7 @@ U_BOOT_DRIVER(vf610_pinctrl) = {
 	.name = "vf610-pinctrl",
 	.id = UCLASS_PINCTRL,
 	.of_match = of_match_ptr(vf610_pinctrl_match),
-	.probe = imx_pinctrl_probe,
+	.probe = imx_pinctrl_probe_mmio,
 	.remove = imx_pinctrl_remove,
 	.priv_auto	= sizeof(struct imx_pinctrl_priv),
 	.ops = &vf610_pinctrl_ops,
-- 
2.45.2



More information about the U-Boot mailing list