2011-04-12 14:56:33

by Vincent Palatin

[permalink] [raw]
Subject: [PATCH] mfd: fix tps6586x GPIO value setting

In the current code, every time we set a TPS6586x GPIO pin,
the tps6586x_gpio_set function is resetting all other GPIO pins.
We need to update the right GPIOxOUT bit of the GPIOSET2 register instead
of overriding the full value.

Tested by setting sequentially GPIO2 and GPIO3 and verifying the
pins voltage.

Change-Id: I560edde146c5425cce37432c4ee91569eea5adcf
Signed-off-by: Vincent Palatin <[email protected]>
---
drivers/mfd/tps6586x.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c
index b600808..bba26d9 100644
--- a/drivers/mfd/tps6586x.c
+++ b/drivers/mfd/tps6586x.c
@@ -270,8 +270,8 @@ static void tps6586x_gpio_set(struct gpio_chip *chip, unsigned offset,
{
struct tps6586x *tps6586x = container_of(chip, struct tps6586x, gpio);

- __tps6586x_write(tps6586x->client, TPS6586X_GPIOSET2,
- value << offset);
+ tps6586x_update(tps6586x->dev, TPS6586X_GPIOSET2,
+ value << offset, 1 << offset);
}

static int tps6586x_gpio_output(struct gpio_chip *gc, unsigned offset,
--
1.7.3.1


2011-05-02 09:21:55

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH] mfd: fix tps6586x GPIO value setting

Hi Vincent,

On Tue, Apr 12, 2011 at 10:55:58AM -0400, Vincent Palatin wrote:
> In the current code, every time we set a TPS6586x GPIO pin,
> the tps6586x_gpio_set function is resetting all other GPIO pins.
> We need to update the right GPIOxOUT bit of the GPIOSET2 register instead
> of overriding the full value.
>
> Tested by setting sequentially GPIO2 and GPIO3 and verifying the
> pins voltage.
Patch applied to my for-next branch, thanks.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/