pinctrl: s32cc: Use generic struct data to describe pin function
authorChester Lin <clin@suse.com>
Mon, 27 Mar 2023 06:27:53 +0000 (14:27 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 27 Mar 2023 21:36:18 +0000 (23:36 +0200)
Replace struct s32_pmx_func with generic struct pinfunction since they
have the same data fields.

Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Chester Lin <clin@suse.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20230327062754.3326-5-clin@suse.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/nxp/pinctrl-s32.h
drivers/pinctrl/nxp/pinctrl-s32cc.c

index 850cd66..2f7aecd 100644 (file)
@@ -25,18 +25,6 @@ struct s32_pin_group {
 };
 
 /**
- * struct s32_pmx_func - describes S32 pinmux functions
- * @name: the name of this specific function
- * @groups: corresponding pin groups
- * @num_groups: the number of groups
- */
-struct s32_pmx_func {
-       const char *name;
-       const char **groups;
-       unsigned int num_groups;
-};
-
-/**
  * struct s32_pin_range - pin ID range for each memory region.
  * @start: start pin ID
  * @end: end pin ID
@@ -52,7 +40,7 @@ struct s32_pinctrl_soc_info {
        unsigned int npins;
        struct s32_pin_group *groups;
        unsigned int ngroups;
-       struct s32_pmx_func *functions;
+       struct pinfunction *functions;
        unsigned int nfunctions;
        unsigned int grp_index;
        const struct s32_pin_range *mem_pin_ranges;
index e65c881..8373468 100644 (file)
@@ -364,7 +364,7 @@ static int s32_pmx_get_groups(struct pinctrl_dev *pctldev,
        const struct s32_pinctrl_soc_info *info = ipctl->info;
 
        *groups = info->functions[selector].groups;
-       *num_groups = info->functions[selector].num_groups;
+       *num_groups = info->functions[selector].ngroups;
 
        return 0;
 }
@@ -785,8 +785,9 @@ static int s32_pinctrl_parse_functions(struct device_node *np,
                                        u32 index)
 {
        struct device_node *child;
-       struct s32_pmx_func *func;
+       struct pinfunction *func;
        struct s32_pin_group *grp;
+       const char **groups;
        u32 i = 0;
        int ret = 0;
 
@@ -796,18 +797,19 @@ static int s32_pinctrl_parse_functions(struct device_node *np,
 
        /* Initialise function */
        func->name = np->name;
-       func->num_groups = of_get_child_count(np);
-       if (func->num_groups == 0) {
+       func->ngroups = of_get_child_count(np);
+       if (func->ngroups == 0) {
                dev_err(info->dev, "no groups defined in %pOF\n", np);
                return -EINVAL;
        }
-       func->groups = devm_kcalloc(info->dev, func->num_groups,
+
+       groups = devm_kcalloc(info->dev, func->ngroups,
                                    sizeof(*func->groups), GFP_KERNEL);
-       if (!func->groups)
+       if (!groups)
                return -ENOMEM;
 
        for_each_child_of_node(np, child) {
-               func->groups[i] = child->name;
+               groups[i] = child->name;
                grp = &info->groups[info->grp_index++];
                ret = s32_pinctrl_parse_groups(child, grp, info);
                if (ret)
@@ -815,6 +817,8 @@ static int s32_pinctrl_parse_functions(struct device_node *np,
                i++;
        }
 
+       func->groups = groups;
+
        return 0;
 }