Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6702abb3 authored by Gregory CLEMENT's avatar Gregory CLEMENT Committed by Linus Walleij
Browse files

pinctrl: armada-37xx: Fix direction_output() callback behavior



The direction_output callback of the gpio_chip structure is supposed to
set the output direction but also to set the value of the gpio. For the
armada-37xx driver this callback acted as the gpio_set_direction callback
for the pinctrl.

This patch fixes the behavior of the direction_output callback by also
applying the value received as parameter.

Cc: stable@vger.kernel.org
Fixes: 5715092a ("pinctrl: armada-37xx: Add gpio support")
Reported-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 4bd6683d
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -408,12 +408,21 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip,
{
	struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
	unsigned int reg = OUTPUT_EN;
	unsigned int mask;
	unsigned int mask, val, ret;

	armada_37xx_update_reg(&reg, offset);
	mask = BIT(offset);

	return regmap_update_bits(info->regmap, reg, mask, mask);
	ret = regmap_update_bits(info->regmap, reg, mask, mask);

	if (ret)
		return ret;

	reg = OUTPUT_VAL;
	val = value ? mask : 0;
	regmap_update_bits(info->regmap, reg, mask, val);

	return 0;
}

static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)