leds: renesas: set gpio_request_one() flags param correctly
authorJingoo Han <jg1.han@samsung.com>
Fri, 8 Mar 2013 02:39:04 +0000 (18:39 -0800)
committerBryan Wu <cooloney@gmail.com>
Mon, 1 Apr 2013 18:04:49 +0000 (11:04 -0700)
The gpio_request_one() flags parameter was set to:

  GPIOF_DIR_OUT | !!brightness

GPIOF_DIR_OUT and GPIOF_DIR_IN are defined as below:
  GPIOF_DIR_OUT   (0 << 0)
  GPIOF_DIR_IN    (1 << 0)

So, when '!!brightness' is 1, the gpio pin can be set as input,
instead of output.

To prevent this problem, GPIOF_OUT_INIT flags should be used when
using gpio_request_one().

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
drivers/leds/leds-renesas-tpu.c

index d3c2b7e68fbcf0c9ac5b293dd311e37debc64029..9483f1c1078d406184c4c5c1a113c6d6c75adf58 100644 (file)
@@ -205,7 +205,8 @@ static void r_tpu_set_pin(struct r_tpu_priv *p, enum r_tpu_pin new_state,
                gpio_free(cfg->pin_gpio_fn);
 
        if (new_state == R_TPU_PIN_GPIO)
-               gpio_request_one(cfg->pin_gpio, GPIOF_DIR_OUT | !!brightness,
+               gpio_request_one(cfg->pin_gpio, !!brightness ?
+                               GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
                                cfg->name);
 
        if (new_state == R_TPU_PIN_GPIO_FN)