|
@@ -307,7 +307,6 @@ static int pinmux_func_name_to_selector(struct pinctrl_dev *pctldev,
|
|
|
selector++;
|
|
|
}
|
|
|
|
|
|
- dev_err(pctldev->dev, "function '%s' not supported\n", function);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
@@ -774,6 +773,16 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
|
|
|
void *data)
|
|
|
{
|
|
|
struct function_desc *function;
|
|
|
+ int selector;
|
|
|
+
|
|
|
+ if (!name)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ selector = pinmux_func_name_to_selector(pctldev, name);
|
|
|
+ if (selector >= 0)
|
|
|
+ return selector;
|
|
|
+
|
|
|
+ selector = pctldev->num_functions;
|
|
|
|
|
|
function = devm_kzalloc(pctldev->dev, sizeof(*function), GFP_KERNEL);
|
|
|
if (!function)
|
|
@@ -784,12 +793,11 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
|
|
|
function->num_group_names = num_groups;
|
|
|
function->data = data;
|
|
|
|
|
|
- radix_tree_insert(&pctldev->pin_function_tree, pctldev->num_functions,
|
|
|
- function);
|
|
|
+ radix_tree_insert(&pctldev->pin_function_tree, selector, function);
|
|
|
|
|
|
pctldev->num_functions++;
|
|
|
|
|
|
- return 0;
|
|
|
+ return selector;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(pinmux_generic_add_function);
|
|
|
|