pinctrl: berlin: 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: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20240530085745.1539925-2-andy.shevchenko@gmail.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
a8f2548548
commit
5d421ff557
@ -27,7 +27,7 @@ struct berlin_pinctrl {
|
||||
struct regmap *regmap;
|
||||
struct device *dev;
|
||||
const struct berlin_pinctrl_desc *desc;
|
||||
struct berlin_pinctrl_function *functions;
|
||||
struct pinfunction *functions;
|
||||
unsigned nfunctions;
|
||||
struct pinctrl_dev *pctrl_dev;
|
||||
};
|
||||
@ -120,12 +120,12 @@ static const char *berlin_pinmux_get_function_name(struct pinctrl_dev *pctrl_dev
|
||||
static int berlin_pinmux_get_function_groups(struct pinctrl_dev *pctrl_dev,
|
||||
unsigned function,
|
||||
const char * const **groups,
|
||||
unsigned * const num_groups)
|
||||
unsigned * const ngroups)
|
||||
{
|
||||
struct berlin_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctrl_dev);
|
||||
|
||||
*groups = pctrl->functions[function].groups;
|
||||
*num_groups = pctrl->functions[function].ngroups;
|
||||
*ngroups = pctrl->functions[function].ngroups;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -153,7 +153,7 @@ static int berlin_pinmux_set(struct pinctrl_dev *pctrl_dev,
|
||||
{
|
||||
struct berlin_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctrl_dev);
|
||||
const struct berlin_desc_group *group_desc = pctrl->desc->groups + group;
|
||||
struct berlin_pinctrl_function *func = pctrl->functions + function;
|
||||
struct pinfunction *func = pctrl->functions + function;
|
||||
struct berlin_desc_function *function_desc =
|
||||
berlin_pinctrl_find_function_by_name(pctrl, group_desc,
|
||||
func->name);
|
||||
@ -180,7 +180,7 @@ static const struct pinmux_ops berlin_pinmux_ops = {
|
||||
static int berlin_pinctrl_add_function(struct berlin_pinctrl *pctrl,
|
||||
const char *name)
|
||||
{
|
||||
struct berlin_pinctrl_function *function = pctrl->functions;
|
||||
struct pinfunction *function = pctrl->functions;
|
||||
|
||||
while (function->name) {
|
||||
if (!strcmp(function->name, name)) {
|
||||
@ -214,8 +214,7 @@ static int berlin_pinctrl_build_state(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* we will reallocate later */
|
||||
pctrl->functions = kcalloc(max_functions,
|
||||
sizeof(*pctrl->functions), GFP_KERNEL);
|
||||
pctrl->functions = kcalloc(max_functions, sizeof(*pctrl->functions), GFP_KERNEL);
|
||||
if (!pctrl->functions)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -242,8 +241,7 @@ static int berlin_pinctrl_build_state(struct platform_device *pdev)
|
||||
desc_function = desc_group->functions;
|
||||
|
||||
while (desc_function->name) {
|
||||
struct berlin_pinctrl_function
|
||||
*function = pctrl->functions;
|
||||
struct pinfunction *function = pctrl->functions;
|
||||
const char **groups;
|
||||
bool found = false;
|
||||
|
||||
@ -264,16 +262,15 @@ static int berlin_pinctrl_build_state(struct platform_device *pdev)
|
||||
function->groups =
|
||||
devm_kcalloc(&pdev->dev,
|
||||
function->ngroups,
|
||||
sizeof(char *),
|
||||
sizeof(*function->groups),
|
||||
GFP_KERNEL);
|
||||
|
||||
if (!function->groups) {
|
||||
kfree(pctrl->functions);
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
groups = function->groups;
|
||||
groups = (const char **)function->groups;
|
||||
while (*groups)
|
||||
groups++;
|
||||
|
||||
|
@ -28,12 +28,6 @@ struct berlin_pinctrl_desc {
|
||||
unsigned ngroups;
|
||||
};
|
||||
|
||||
struct berlin_pinctrl_function {
|
||||
const char *name;
|
||||
const char **groups;
|
||||
unsigned ngroups;
|
||||
};
|
||||
|
||||
#define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...) \
|
||||
{ \
|
||||
.name = _name, \
|
||||
|
Loading…
Reference in New Issue
Block a user