pinctrl: imx: Split imx_pinctrl_probe() into common and mmio parts
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@denx.de>
diff --git a/drivers/pinctrl/nxp/pinctrl-imx.c b/drivers/pinctrl/nxp/pinctrl-imx.c
index 2d142c3..e65e069 100644
--- a/drivers/pinctrl/nxp/pinctrl-imx.c
+++ b/drivers/pinctrl/nxp/pinctrl-imx.c
@@ -194,16 +194,11 @@
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 @@
priv->dev = dev;
priv->info = info;
+ 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;
+
- if (info->flags & IMX8_USE_SCU)
- return 0;
+ 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)