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

pinctrl: pxa2xx: Make use of struct pinfunction



Since pin control provides a generic data type for the pin function,
use it in the driver.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Message-ID: <20240311140833.1168742-1-andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 4cece764
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ static const char *pxa2xx_pmx_get_func_name(struct pinctrl_dev *pctldev,
					    unsigned function)
{
	struct pxa_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
	struct pxa_pinctrl_function *pf = pctl->functions + function;
	struct pinfunction *pf = pctl->functions + function;

	return pf->name;
}
@@ -127,7 +127,7 @@ static int pxa2xx_pmx_get_func_groups(struct pinctrl_dev *pctldev,
				      unsigned * const num_groups)
{
	struct pxa_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
	struct pxa_pinctrl_function *pf = pctl->functions + function;
	struct pinfunction *pf = pctl->functions + function;

	*groups = pf->groups;
	*num_groups = pf->ngroups;
@@ -249,11 +249,11 @@ static struct pinctrl_desc pxa2xx_pinctrl_desc = {
	.pmxops		= &pxa2xx_pinmux_ops,
};

static const struct pxa_pinctrl_function *
pxa2xx_find_function(struct pxa_pinctrl *pctl, const char *fname,
		     const struct pxa_pinctrl_function *functions)
static const struct pinfunction *pxa2xx_find_function(struct pxa_pinctrl *pctl,
						      const char *fname,
						      const struct pinfunction *functions)
{
	const struct pxa_pinctrl_function *func;
	const struct pinfunction *func;

	for (func = functions; func->name; func++)
		if (!strcmp(fname, func->name))
@@ -264,8 +264,8 @@ pxa2xx_find_function(struct pxa_pinctrl *pctl, const char *fname,

static int pxa2xx_build_functions(struct pxa_pinctrl *pctl)
{
	struct pinfunction *functions;
	int i;
	struct pxa_pinctrl_function *functions;
	struct pxa_desc_function *df;

	/*
@@ -296,9 +296,9 @@ static int pxa2xx_build_functions(struct pxa_pinctrl *pctl)
static int pxa2xx_build_groups(struct pxa_pinctrl *pctl)
{
	int i, j, ngroups;
	struct pxa_pinctrl_function *func;
	struct pxa_desc_function *df;
	char **gtmp;
	struct pinfunction *func;
	const char **gtmp;

	gtmp = devm_kmalloc_array(pctl->dev, pctl->npins, sizeof(*gtmp),
				  GFP_KERNEL);
@@ -316,13 +316,9 @@ static int pxa2xx_build_groups(struct pxa_pinctrl *pctl)
						pctl->ppins[j].pin.name;
		func = pctl->functions + i;
		func->ngroups = ngroups;
		func->groups =
			devm_kmalloc_array(pctl->dev, ngroups,
					   sizeof(char *), GFP_KERNEL);
		func->groups = devm_kmemdup(pctl->dev, gtmp, ngroups * sizeof(*gtmp), GFP_KERNEL);
		if (!func->groups)
			return -ENOMEM;

		memcpy(func->groups, gtmp, ngroups * sizeof(*gtmp));
	}

	devm_kfree(pctl->dev, gtmp);
+1 −7
Original line number Diff line number Diff line
@@ -57,12 +57,6 @@ struct pxa_pinctrl_group {
	unsigned	pin;
};

struct pxa_pinctrl_function {
	const char	*name;
	const char	**groups;
	unsigned	ngroups;
};

struct pxa_pinctrl {
	spinlock_t			lock;
	void __iomem			**base_gafr;
@@ -76,7 +70,7 @@ struct pxa_pinctrl {
	unsigned			ngroups;
	struct pxa_pinctrl_group	*groups;
	unsigned			nfuncs;
	struct pxa_pinctrl_function	*functions;
	struct pinfunction		*functions;
	char				*name;
};