pinctrl: sh-pfc: checker: Improve pin group checks
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 10 Jan 2020 13:19:22 +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 group descriptors:
  1. Introduce a local variable for the current group, to make the
     checks easier to read,
  2. Pin group 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-9-geert+renesas@glider.be
drivers/pinctrl/sh-pfc/core.c

index fd649ab8ad1a68a2c64405f521454e497db23d37..b67584d65eccce786e6fc7f6dfdea701f7d78e07 100644 (file)
@@ -916,15 +916,22 @@ static void __init sh_pfc_check_info(const struct sh_pfc_soc_info *info)
        }
 
        for (i = 0; i < info->nr_groups; i++) {
-               if (!info->groups[i].name) {
+               const struct sh_pfc_pin_group *group = &info->groups[i];
+
+               if (!group->name) {
                        sh_pfc_err("empty group %u\n", i);
                        continue;
                }
+               for (j = 0; j < i; j++) {
+                       if (same_name(group->name, info->groups[j].name))
+                               sh_pfc_err("group %s: name conflict\n",
+                                          group->name);
+               }
                if (!refcnts[i])
-                       sh_pfc_err("orphan group %s\n", info->groups[i].name);
+                       sh_pfc_err("orphan group %s\n", group->name);
                else if (refcnts[i] > 1)
                        sh_pfc_warn("group %s referenced by %u functions\n",
-                                   info->groups[i].name, refcnts[i]);
+                                   group->name, refcnts[i]);
        }
 
        kfree(refcnts);