]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: nuvoton: Make use of struct pinfunction and PINCTRL_PINFUNCTION()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 18 Mar 2025 10:57:16 +0000 (12:57 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 20 Mar 2025 08:14:10 +0000 (09:14 +0100)
Since pin control provides a generic data type and a macro for
the pin function definition, use them in the driver.

Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/20250318105932.2090926-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/nuvoton/pinctrl-ma35.c
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
drivers/pinctrl/nuvoton/pinctrl-wpcm450.c

index 59c4e7c6cddea1277ebb75f02172e60e18e03e1e..ad4f9ca414c8b4fda5a04dc894b3756546ade688 100644 (file)
@@ -98,12 +98,6 @@ static const u32 ds_3300mv_tbl[] = {
        17100, 25600, 34100, 42800, 48000, 56000, 77000, 82000,
 };
 
-struct ma35_pin_func {
-       const char              *name;
-       const char              **groups;
-       u32                     ngroups;
-};
-
 struct ma35_pin_setting {
        u32                     offset;
        u32                     shift;
@@ -149,7 +143,7 @@ struct ma35_pinctrl {
        struct regmap           *regmap;
        struct ma35_pin_group   *groups;
        unsigned int            ngroups;
-       struct ma35_pin_func    *functions;
+       struct pinfunction      *functions;
        unsigned int            nfunctions;
 };
 
@@ -1041,9 +1035,10 @@ static int ma35_pinctrl_parse_functions(struct device_node *np, struct ma35_pinc
                                        u32 index)
 {
        struct device_node *child;
-       struct ma35_pin_func *func;
+       struct pinfunction *func;
        struct ma35_pin_group *grp;
        static u32 grp_index;
+       const char **groups;
        u32 ret, i = 0;
 
        dev_dbg(npctl->dev, "parse function(%d): %s\n", index, np->name);
@@ -1055,12 +1050,12 @@ static int ma35_pinctrl_parse_functions(struct device_node *np, struct ma35_pinc
        if (func->ngroups <= 0)
                return 0;
 
-       func->groups = devm_kcalloc(npctl->dev, func->ngroups, sizeof(char *), GFP_KERNEL);
-       if (!func->groups)
+       groups = devm_kcalloc(npctl->dev, func->ngroups, sizeof(*groups), GFP_KERNEL);
+       if (!groups)
                return -ENOMEM;
 
        for_each_child_of_node(np, child) {
-               func->groups[i] = child->name;
+               groups[i] = child->name;
                grp = &npctl->groups[grp_index++];
                ret = ma35_pinctrl_parse_groups(child, grp, npctl, i++);
                if (ret) {
@@ -1068,6 +1063,8 @@ static int ma35_pinctrl_parse_functions(struct device_node *np, struct ma35_pinc
                        return ret;
                }
        }
+
+       func->groups = groups;
        return 0;
 }
 
index 2601aacfb976b7911370d0e1184b440b8c7cb26e..c6b11a198c76e56dc74e9618c85d0c269e85c198 100644 (file)
@@ -639,13 +639,6 @@ static struct pingroup npcm7xx_groups[] = {
 
 #define NPCM7XX_SFUNC(a) NPCM7XX_FUNC(a, #a)
 #define NPCM7XX_FUNC(a, b...) static const char *a ## _grp[] = { b }
-#define NPCM7XX_MKFUNC(nm) { .name = #nm, .ngroups = ARRAY_SIZE(nm ## _grp), \
-                       .groups = nm ## _grp }
-struct npcm7xx_func {
-       const char *name;
-       const unsigned int ngroups;
-       const char *const *groups;
-};
 
 NPCM7XX_SFUNC(smb0);
 NPCM7XX_SFUNC(smb0b);
@@ -764,7 +757,8 @@ NPCM7XX_SFUNC(lkgpo2);
 NPCM7XX_SFUNC(nprd_smi);
 
 /* Function names */
-static struct npcm7xx_func npcm7xx_funcs[] = {
+static struct pinfunction npcm7xx_funcs[] = {
+#define NPCM7XX_MKFUNC(nm) PINCTRL_PINFUNCTION(#nm, nm ## _grp, ARRAY_SIZE(nm ## _grp))
        NPCM7XX_MKFUNC(smb0),
        NPCM7XX_MKFUNC(smb0b),
        NPCM7XX_MKFUNC(smb0c),
@@ -880,6 +874,7 @@ static struct npcm7xx_func npcm7xx_funcs[] = {
        NPCM7XX_MKFUNC(lkgpo1),
        NPCM7XX_MKFUNC(lkgpo2),
        NPCM7XX_MKFUNC(nprd_smi),
+#undef NPCM7XX_MKFUNC
 };
 
 #define NPCM7XX_PINCFG(a, b, c, d, e, f, g, h, i, j, k) \
index dcfb58be76321bfdd674f3932ddcff369c3c3fc8..ef87cb929133a8b11fd1e73c9b7a0d27858dba24 100644 (file)
@@ -826,13 +826,6 @@ static struct pingroup npcm8xx_pingroups[] = {
 
 #define NPCM8XX_SFUNC(a) NPCM8XX_FUNC(a, #a)
 #define NPCM8XX_FUNC(a, b...) static const char *a ## _grp[] = { b }
-#define NPCM8XX_MKFUNC(nm) { .name = #nm, .ngroups = ARRAY_SIZE(nm ## _grp), \
-                       .groups = nm ## _grp }
-struct npcm8xx_func {
-       const char *name;
-       const unsigned int ngroups;
-       const char *const *groups;
-};
 
 NPCM8XX_SFUNC(gpi36);
 NPCM8XX_SFUNC(gpi35);
@@ -1055,7 +1048,8 @@ NPCM8XX_SFUNC(hgpio6);
 NPCM8XX_SFUNC(hgpio7);
 
 /* Function names */
-static struct npcm8xx_func npcm8xx_funcs[] = {
+static struct pinfunction npcm8xx_funcs[] = {
+#define NPCM8XX_MKFUNC(nm) PINCTRL_PINFUNCTION(#nm, nm ## _grp, ARRAY_SIZE(nm ## _grp))
        NPCM8XX_MKFUNC(gpi36),
        NPCM8XX_MKFUNC(gpi35),
        NPCM8XX_MKFUNC(tp_jtag3),
@@ -1275,6 +1269,7 @@ static struct npcm8xx_func npcm8xx_funcs[] = {
        NPCM8XX_MKFUNC(hgpio5),
        NPCM8XX_MKFUNC(hgpio6),
        NPCM8XX_MKFUNC(hgpio7),
+#undef NPCM8XX_MKFUNC
 };
 
 #define NPCM8XX_PINCFG(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) \
index 2f97accef8379ffc5f482740e6262d8eec734ce0..4264ca749175a2ce0f3603c1d7aa271d98e6cd89 100644 (file)
@@ -482,13 +482,6 @@ static const struct pingroup wpcm450_groups[] = {
 
 #define WPCM450_SFUNC(a) WPCM450_FUNC(a, #a)
 #define WPCM450_FUNC(a, b...) static const char *a ## _grp[] = { b }
-#define WPCM450_MKFUNC(nm) { .name = #nm, .ngroups = ARRAY_SIZE(nm ## _grp), \
-                       .groups = nm ## _grp }
-struct wpcm450_func {
-       const char *name;
-       const unsigned int ngroups;
-       const char *const *groups;
-};
 
 WPCM450_SFUNC(smb3);
 WPCM450_SFUNC(smb4);
@@ -555,7 +548,8 @@ WPCM450_FUNC(gpio, WPCM450_GRPS);
 #undef WPCM450_GRP
 
 /* Function names */
-static struct wpcm450_func wpcm450_funcs[] = {
+static struct pinfunction wpcm450_funcs[] = {
+#define WPCM450_MKFUNC(nm) PINCTRL_PINFUNCTION(#nm, nm ## _grp, ARRAY_SIZE(nm ## _grp))
        WPCM450_MKFUNC(smb3),
        WPCM450_MKFUNC(smb4),
        WPCM450_MKFUNC(smb5),
@@ -616,6 +610,7 @@ static struct wpcm450_func wpcm450_funcs[] = {
        WPCM450_MKFUNC(hg6),
        WPCM450_MKFUNC(hg7),
        WPCM450_MKFUNC(gpio),
+#undef WPCM450_MKFUNC
 };
 
 #define WPCM450_PINCFG(a, b, c, d, e, f, g) \