pinctrl: sh-pfc: checker: Improve pin function checks
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 10 Jan 2020 13:19:21 +0000 (14:19 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 21 Feb 2020 12:57:44 +0000 (13:57 +0100)
Improve the checks for pin function descriptors:
  1. Merge declaration and assignment of the local variable for the
     current pin function,
  2. Pin function names must be unique.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://lore.kernel.org/r/20200110131927.1029-8-geert+renesas@glider.be
drivers/pinctrl/sh-pfc/core.c

index be7afc4..fd649ab 100644 (file)
@@ -849,7 +849,6 @@ check_enum_ids:
 
 static void __init sh_pfc_check_info(const struct sh_pfc_soc_info *info)
 {
-       const struct sh_pfc_function *func;
        const char *drvname = info->name;
        unsigned int *refcnts;
        unsigned int i, j, k;
@@ -890,11 +889,17 @@ static void __init sh_pfc_check_info(const struct sh_pfc_soc_info *info)
                return;
 
        for (i = 0; i < info->nr_functions; i++) {
-               func = &info->functions[i];
+               const struct sh_pfc_function *func = &info->functions[i];
+
                if (!func->name) {
                        sh_pfc_err("empty function %u\n", i);
                        continue;
                }
+               for (j = 0; j < i; j++) {
+                       if (same_name(func->name, info->functions[j].name))
+                               sh_pfc_err("function %s: name conflict\n",
+                                          func->name);
+               }
                for (j = 0; j < func->nr_groups; j++) {
                        for (k = 0; k < info->nr_groups; k++) {
                                if (same_name(func->groups[j],