]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
pinctrl: imx: Split imx_pinctrl_set_state() into common and mmio parts
authorMarek Vasut <marex@denx.de>
Fri, 24 Jan 2025 14:50:56 +0000 (15:50 +0100)
committerFabio Estevam <festevam@gmail.com>
Sat, 25 Jan 2025 12:06:32 +0000 (09:06 -0300)
Split imx_pinctrl_set_state() into imx_pinctrl_set_state_common() and
imx_pinctrl_set_state_mmio(). The former does the common configuration
parsing, the later does call imx_pinctrl_set_state_common() and then
does pin configuration using either SCU or MMIO accesses. The SCU part
is going to be moved out in follow up patches.

This is a preparatory patch for follow up pinctrl drivers which
do not use the MMIO accessors, but some other means, like SCU or
otherwise. Those will call the common imx_pinctrl_set_state_common()
function wrapped into some other imx_pinctrl_set_state_*() function,
in a way similar to imx_pinctrl_set_state_mmio() does so for MMIO
accesses.

Update all imx_pinctrl_set_state_mmio() call sites to call
imx_pinctrl_set_state_mmio() instead.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
12 files changed:
drivers/pinctrl/nxp/pinctrl-imx.c
drivers/pinctrl/nxp/pinctrl-imx.h
drivers/pinctrl/nxp/pinctrl-imx5.c
drivers/pinctrl/nxp/pinctrl-imx6.c
drivers/pinctrl/nxp/pinctrl-imx7.c
drivers/pinctrl/nxp/pinctrl-imx7ulp.c
drivers/pinctrl/nxp/pinctrl-imx8.c
drivers/pinctrl/nxp/pinctrl-imx8m.c
drivers/pinctrl/nxp/pinctrl-imx8ulp.c
drivers/pinctrl/nxp/pinctrl-imx93.c
drivers/pinctrl/nxp/pinctrl-imxrt.c
drivers/pinctrl/nxp/pinctrl-vf610.c

index 26b990e6efd13c619742b48ebd6246e9de0b6a3f..be68894f7494b16c7458e776c108e9abaaf2b43f 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int imx_pinctrl_set_state(struct udevice *dev, struct udevice *config)
+int imx_pinctrl_set_state_common(struct udevice *dev, struct udevice *config,
+                                int pin_size, u32 **pin_data, int *npins)
 {
-       struct imx_pinctrl_priv *priv = dev_get_priv(dev);
-       struct imx_pinctrl_soc_info *info = priv->info;
        ofnode node = dev_ofnode(config);
        const struct fdt_property *prop;
-       u32 *pin_data;
-       int npins, size, pin_size;
-       int mux_reg, conf_reg, input_reg;
-       u32 input_val, mux_mode, config_val;
-       u32 mux_shift = info->mux_mask ? ffs(info->mux_mask) - 1 : 0;
-       int i, j = 0;
+       int size;
 
        dev_dbg(dev, "%s: %s\n", __func__, config->name);
 
-       if (info->flags & IMX8_USE_SCU)
-               pin_size = SHARE_IMX8_PIN_SIZE;
-       else if (info->flags & SHARE_MUX_CONF_REG)
-               pin_size = SHARE_FSL_PIN_SIZE;
-       else
-               pin_size = FSL_PIN_SIZE;
-
        prop = ofnode_get_property(node, "fsl,pins", &size);
        if (!prop) {
                dev_err(dev, "No fsl,pins property in node %s\n", config->name);
@@ -52,18 +39,43 @@ int imx_pinctrl_set_state(struct udevice *dev, struct udevice *config)
                return -EINVAL;
        }
 
-       pin_data = devm_kzalloc(dev, size, 0);
-       if (!pin_data)
+       *pin_data = devm_kzalloc(dev, size, 0);
+       if (!*pin_data)
                return -ENOMEM;
 
-       if (ofnode_read_u32_array(node, "fsl,pins",
-                                 pin_data, size >> 2)) {
+       if (ofnode_read_u32_array(node, "fsl,pins", *pin_data, size >> 2)) {
                dev_err(dev, "Error reading pin data.\n");
-               devm_kfree(dev, pin_data);
+               devm_kfree(dev, *pin_data);
                return -EINVAL;
        }
 
-       npins = size / pin_size;
+       *npins = size / pin_size;
+
+       return 0;
+}
+
+int imx_pinctrl_set_state_mmio(struct udevice *dev, struct udevice *config)
+{
+       struct imx_pinctrl_priv *priv = dev_get_priv(dev);
+       struct imx_pinctrl_soc_info *info = priv->info;
+       u32 mux_shift = info->mux_mask ? ffs(info->mux_mask) - 1 : 0;
+       u32 input_val, mux_mode, config_val;
+       int mux_reg, conf_reg, input_reg;
+       int npins, pin_size;
+       int i, j = 0, ret;
+       u32 *pin_data;
+
+       if (info->flags & IMX8_USE_SCU)
+               pin_size = SHARE_IMX8_PIN_SIZE;
+       else if (info->flags & SHARE_MUX_CONF_REG)
+               pin_size = SHARE_FSL_PIN_SIZE;
+       else
+               pin_size = FSL_PIN_SIZE;
+
+       ret = imx_pinctrl_set_state_common(dev, config, pin_size,
+                                          &pin_data, &npins);
+       if (ret)
+               return ret;
 
        if (info->flags & IMX8_USE_SCU) {
                imx_pinctrl_scu_conf_pins(info, pin_data, npins);
index e647a135ebd250ecceacba1e9c1b0058a3c392a9..326d3f720e4433a93f7701a7e361c0746faea499 100644 (file)
@@ -53,7 +53,9 @@ int imx_pinctrl_probe_mmio(struct udevice *dev);
 
 int imx_pinctrl_remove_mmio(struct udevice *dev);
 
-int imx_pinctrl_set_state(struct udevice *dev, struct udevice *config);
+int imx_pinctrl_set_state_common(struct udevice *dev, struct udevice *config,
+                                int pin_size, u32 **pin_data, int *npins);
+int imx_pinctrl_set_state_mmio(struct udevice *dev, struct udevice *config);
 
 #ifdef CONFIG_PINCTRL_IMX_SCU
 int imx_pinctrl_scu_conf_pins(struct imx_pinctrl_soc_info *info,
index f17fe2d1cc180f5ec967344f89b5a7447349682e..af853bea180323c211d736df8b72e993058d2c7f 100644 (file)
@@ -24,7 +24,7 @@ static const struct udevice_id imx5_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx5_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx5_pinctrl) = {
index 04ce1b49fe9a2fccbb67d12930d79945d94ae378..5c6aac56eb7bc4be61373104f4d78a3406b9231d 100644 (file)
@@ -33,7 +33,7 @@ static const struct udevice_id imx6_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx6_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(fsl_imx6q_iomuxc) = {
index 7287c7f4812601a12142e69aeac101a309e041f4..14c3d4d4e7728550459ca82f72ab78b1dfb3341d 100644 (file)
@@ -21,7 +21,7 @@ static const struct udevice_id imx7_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx7_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx7_pinctrl) = {
index 07bcef071ab1a2b7b0d346a55a8ce866e420e204..400e12668229d138dfb1ac0e262f870e53a15216 100644 (file)
@@ -25,7 +25,7 @@ static const struct udevice_id imx7ulp_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx7ulp_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx7ulp_pinctrl) = {
index a48e1b56df10d6dba92fb07be2c4ada996a3638a..b6acc19ef8b596ff0d559ca03e055cd8d12cf555 100644 (file)
@@ -22,7 +22,7 @@ static const struct udevice_id imx8_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx8_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx8_pinctrl) = {
index bfc32223034eb0c01092a149f6d32cbbc917fdf7..d9c63b3aca616feb59ffc00e1887fb719777fa2e 100644 (file)
@@ -19,7 +19,7 @@ static const struct udevice_id imx8m_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx8m_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx8mq_pinctrl) = {
index 590aef8e4916ce9cf6b58ccac8753bd8238c4a2b..2df63625191932c8ed12d16e814c1991857a1588 100644 (file)
@@ -24,7 +24,7 @@ static const struct udevice_id imx8ulp_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx8ulp_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx8ulp_pinctrl) = {
index 8d631b4fb3539ec7ba2194e7d64135aaf0aaa0f8..5d250db1081d6459037719d4db2b8ab17eaa2466 100644 (file)
@@ -19,7 +19,7 @@ static const struct udevice_id imx93_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imx93_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imx93_pinctrl) = {
index 84ca93cb6183804c60b2b0162e2f0ffb408972c9..39000ceb9230e0e58e37b53e852d52a3914dd976 100644 (file)
@@ -20,7 +20,7 @@ static const struct udevice_id imxrt_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops imxrt_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(imxrt_pinctrl) = {
index 44193ec5021457209ba582caf0166b978f6e707c..cbff8dcefd8c4bd884800ccd1e5f7dd497f976cd 100644 (file)
@@ -20,7 +20,7 @@ static const struct udevice_id vf610_pinctrl_match[] = {
 };
 
 static const struct pinctrl_ops vf610_pinctrl_ops = {
-       .set_state = imx_pinctrl_set_state,
+       .set_state = imx_pinctrl_set_state_mmio,
 };
 
 U_BOOT_DRIVER(vf610_pinctrl) = {