[PATCH v2 2/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in bcm2835
From: Xiaolei Wang
Date: Fri Nov 13 2026 - 02:53:35 EST
Replace the hand-written dt_free_map callback with the generic
pinconf_generic_dt_free_map() helper, which wraps
pinctrl_utils_free_map(). This drops the duplicated free loop and
handles both CONFIGS_PIN and CONFIGS_GROUP map types.
The error path in bcm2835_pctl_dt_node_to_map() uses the same helper.
The driver already selects GENERIC_PINCONF, so no Kconfig change is
needed.
Fixes: 0de704955ee4 ("pinctrl: bcm2835: Add support for generic pinctrl binding")
Cc: stable@xxxxxxxxxxxxxxx
Reviewed-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
Reviewed-by: Andrea della Porta <andrea.porta@xxxxxxxx>
Signed-off-by: Xiaolei Wang <wangxiaolei01@xxxxxxxxxxx>
---
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index 725e880ae086..69a92cd7bfe0 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -760,18 +760,6 @@ static void bcm2835_pctl_pin_dbg_show(struct pinctrl_dev *pctldev,
irq, irq_type_names[pc->irq_type[offset]]);
}
-static void bcm2835_pctl_dt_free_map(struct pinctrl_dev *pctldev,
- struct pinctrl_map *maps, unsigned num_maps)
-{
- int i;
-
- for (i = 0; i < num_maps; i++)
- if (maps[i].type == PIN_MAP_TYPE_CONFIGS_PIN)
- kfree(maps[i].data.configs.configs);
-
- kfree(maps);
-}
-
static int bcm2835_pctl_dt_node_to_map_func(struct bcm2835_pinctrl *pc,
struct device_node *np, u32 pin, u32 fnum,
struct pinctrl_map **maps)
@@ -916,7 +904,7 @@ static int bcm2835_pctl_dt_node_to_map(struct pinctrl_dev *pctldev,
return 0;
out:
- bcm2835_pctl_dt_free_map(pctldev, maps, num_pins * maps_per_pin);
+ pinconf_generic_dt_free_map(pctldev, maps, num_pins * maps_per_pin);
return err;
}
@@ -926,7 +914,7 @@ static const struct pinctrl_ops bcm2835_pctl_ops = {
.get_group_pins = bcm2835_pctl_get_group_pins,
.pin_dbg_show = bcm2835_pctl_pin_dbg_show,
.dt_node_to_map = bcm2835_pctl_dt_node_to_map,
- .dt_free_map = bcm2835_pctl_dt_free_map,
+ .dt_free_map = pinconf_generic_dt_free_map,
};
static int bcm2835_pmx_free(struct pinctrl_dev *pctldev,
--
2.34.1