diff mbox

[U-Boot] dm: i2c-gpio: Remove redundant dm_gpio_set_value() call

Message ID 1430017538.18893.1.camel@ingics.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Axel Lin April 26, 2015, 3:05 a.m. UTC
dm_gpio_set_dir_flags() will also set gpio output value when switching to
gpio output. So it's not necessary to call dm_gpio_set_value() after
dm_gpio_set_dir_flags() call.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
 drivers/i2c/i2c-gpio.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Simon Glass April 28, 2015, 3:20 a.m. UTC | #1
On 25 April 2015 at 21:05, Axel Lin <axel.lin@ingics.com> wrote:
> dm_gpio_set_dir_flags() will also set gpio output value when switching to
> gpio output. So it's not necessary to call dm_gpio_set_value() after
> dm_gpio_set_dir_flags() call.
>
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
>  drivers/i2c/i2c-gpio.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)

Acked-by: Simon Glass <sjg@chromium.org>
Simon Glass May 5, 2015, 3:16 a.m. UTC | #2
On 27 April 2015 at 21:20, Simon Glass <sjg@chromium.org> wrote:
> On 25 April 2015 at 21:05, Axel Lin <axel.lin@ingics.com> wrote:
>> dm_gpio_set_dir_flags() will also set gpio output value when switching to
>> gpio output. So it's not necessary to call dm_gpio_set_value() after
>> dm_gpio_set_dir_flags() call.
>>
>> Signed-off-by: Axel Lin <axel.lin@ingics.com>
>> ---
>>  drivers/i2c/i2c-gpio.c | 13 +++++++------
>>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> Acked-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!
diff mbox

Patch

diff --git a/drivers/i2c/i2c-gpio.c b/drivers/i2c/i2c-gpio.c
index ed899d4..a8b83c5 100644
--- a/drivers/i2c/i2c-gpio.c
+++ b/drivers/i2c/i2c-gpio.c
@@ -41,18 +41,19 @@  static int i2c_gpio_sda_get(struct gpio_desc *sda)
 
 static void i2c_gpio_sda_set(struct gpio_desc *sda, int bit)
 {
-	if (bit) {
+	if (bit)
 		dm_gpio_set_dir_flags(sda, GPIOD_IS_IN);
-	} else {
+	else
 		dm_gpio_set_dir_flags(sda, GPIOD_IS_OUT);
-		dm_gpio_set_value(sda, 0);
-	}
 }
 
 static void i2c_gpio_scl_set(struct gpio_desc *scl, int bit)
 {
-	dm_gpio_set_dir_flags(scl, GPIOD_IS_OUT);
-	dm_gpio_set_value(scl, bit);
+	ulong flags = GPIOD_IS_OUT;
+
+	if (bit)
+		flags |= GPIOD_IS_OUT_ACTIVE;
+	dm_gpio_set_dir_flags(scl, flags);
 }
 
 static void i2c_gpio_write_bit(struct gpio_desc *scl, struct gpio_desc *sda,