Skip to content

Commit 431b68a

Browse files
Bartosz Golaszewskilinusw
authored andcommitted
pinctrl: provide pinmux_generic_add_pinfunction()
Several drivers call pinmux_generic_add_function() passing it the contents of struct pinfunction as first three arguments. We can make this shorter by simply providing an interface allowing to pass the address of struct pinfunction directly when adding a new function. Signed-off-by: Bartosz Golaszewski <[email protected]> Link: https://lore.kernel.org/[email protected] Signed-off-by: Linus Walleij <[email protected]>
1 parent dd47155 commit 431b68a

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

drivers/pinctrl/pinmux.c

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -874,14 +874,26 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
874874
const char * const *groups,
875875
const unsigned int ngroups,
876876
void *data)
877+
{
878+
struct pinfunction func = PINCTRL_PINFUNCTION(name, groups, ngroups);
879+
880+
return pinmux_generic_add_pinfunction(pctldev, &func, data);
881+
}
882+
EXPORT_SYMBOL_GPL(pinmux_generic_add_function);
883+
884+
/**
885+
* pinmux_generic_add_pinfunction() - adds a function group
886+
* @pctldev: pin controller device
887+
* @func: pinfunction structure describing the function group
888+
* @data: pin controller driver specific data
889+
*/
890+
int pinmux_generic_add_pinfunction(struct pinctrl_dev *pctldev,
891+
const struct pinfunction *func, void *data)
877892
{
878893
struct function_desc *function;
879894
int selector, error;
880895

881-
if (!name)
882-
return -EINVAL;
883-
884-
selector = pinmux_func_name_to_selector(pctldev, name);
896+
selector = pinmux_func_name_to_selector(pctldev, func->name);
885897
if (selector >= 0)
886898
return selector;
887899

@@ -891,7 +903,7 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
891903
if (!function)
892904
return -ENOMEM;
893905

894-
function->func = PINCTRL_PINFUNCTION(name, groups, ngroups);
906+
function->func = *func;
895907
function->data = data;
896908

897909
error = radix_tree_insert(&pctldev->pin_function_tree, selector, function);
@@ -902,7 +914,7 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
902914

903915
return selector;
904916
}
905-
EXPORT_SYMBOL_GPL(pinmux_generic_add_function);
917+
EXPORT_SYMBOL_GPL(pinmux_generic_add_pinfunction);
906918

907919
/**
908920
* pinmux_generic_remove_function() - removes a numbered function

drivers/pinctrl/pinmux.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
161161
unsigned int const ngroups,
162162
void *data);
163163

164+
int pinmux_generic_add_pinfunction(struct pinctrl_dev *pctldev,
165+
const struct pinfunction *func, void *data);
166+
164167
int pinmux_generic_remove_function(struct pinctrl_dev *pctldev,
165168
unsigned int selector);
166169

0 commit comments

Comments
 (0)