mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-30 13:03:01 +00:00
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: Maxime Ripard <maxime.ripard@bootlin.com> Acked-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
64ebde5b0f
commit
90be64e276
@ -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,
|
|||||||
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,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user