Commit 90be64e2 authored by Maxime Ripard's avatar Maxime Ripard Committed by Linus Walleij

pinctrl: sunxi: implement pin_config_set

The sunxi pinctrl only implements the pin_config_group_set callback at the
moment, whereas the gpiochip_generic_config function relies on
pin_config_set. Rework the functions a little to support pin_config_set,
and rely on it for pin_config_group_set.
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Acked-by: default avatarChen-Yu Tsai <wens@csie.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 64ebde5b
...@@ -530,14 +530,10 @@ static int sunxi_pconf_group_get(struct pinctrl_dev *pctldev, ...@@ -530,14 +530,10 @@ static int sunxi_pconf_group_get(struct pinctrl_dev *pctldev,
return sunxi_pconf_get(pctldev, g->pin, config); return sunxi_pconf_get(pctldev, g->pin, config);
} }
static int sunxi_pconf_group_set(struct pinctrl_dev *pctldev, static int sunxi_pconf_set(struct pinctrl_dev *pctldev, unsigned pin,
unsigned group, unsigned long *configs, unsigned num_configs)
unsigned long *configs,
unsigned num_configs)
{ {
struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
struct sunxi_pinctrl_group *g = &pctl->groups[group];
unsigned pin = g->pin - pctl->desc->pin_base;
int i; int i;
for (i = 0; i < num_configs; i++) { for (i = 0; i < num_configs; i++) {
...@@ -596,9 +592,20 @@ static int sunxi_pconf_group_set(struct pinctrl_dev *pctldev, ...@@ -596,9 +592,20 @@ static int sunxi_pconf_group_set(struct pinctrl_dev *pctldev,
return 0; return 0;
} }
static int sunxi_pconf_group_set(struct pinctrl_dev *pctldev, unsigned group,
unsigned long *configs, unsigned num_configs)
{
struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
struct sunxi_pinctrl_group *g = &pctl->groups[group];
/* We only support 1 pin per group. Chain it to the pin callback */
return sunxi_pconf_set(pctldev, g->pin, configs, num_configs);
}
static const struct pinconf_ops sunxi_pconf_ops = { static const struct pinconf_ops sunxi_pconf_ops = {
.is_generic = true, .is_generic = true,
.pin_config_get = sunxi_pconf_get, .pin_config_get = sunxi_pconf_get,
.pin_config_set = sunxi_pconf_set,
.pin_config_group_get = sunxi_pconf_group_get, .pin_config_group_get = sunxi_pconf_group_get,
.pin_config_group_set = sunxi_pconf_group_set, .pin_config_group_set = sunxi_pconf_group_set,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment