Commit 1bce7441 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Linus Walleij
Browse files

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: default avatarJonathan Neuschäfer <j.neuschaefer@gmx.net>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/20250318105932.2090926-4-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 1a658465
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -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;
}

+3 −8
Original line number Diff line number Diff line
@@ -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) \
+3 −8
Original line number Diff line number Diff line
@@ -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) \
+3 −8
Original line number Diff line number Diff line
@@ -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) \