pinctrl: nuvoton: Make use of struct pinfunction and PINCTRL_PINFUNCTION()
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>
This commit is contained in:
committed by
Linus Walleij
parent
1a65846509
commit
1bce744173
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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) \
|
||||
|
||||
Reference in New Issue
Block a user