Skip to content

Commit

Permalink
leds: leds-ns2: set devm_gpio_request_one() flags param correctly
Browse files Browse the repository at this point in the history
The devm_gpio_request_one() flags parameter was set to:

  GPIOF_DIR_OUT | gpio_get_value(template->cmd)

GPIOF_DIR_OUT and GPIOF_DIR_IN are defined as below:

  GPIOF_DIR_OUT   (0 << 0)
  GPIOF_DIR_IN    (1 << 0)

So, when 'gpio_get_value(template->cmd)' 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 devm_gpio_request_one().

Same goes for 'gpio_get_value(template->slow)' case.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
  • Loading branch information
Jingoo Han authored and Bryan Wu committed Apr 1, 2013
1 parent 84f6942 commit 9d04cba
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/leds/leds-ns2.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat,
enum ns2_led_modes mode;

ret = devm_gpio_request_one(&pdev->dev, template->cmd,
GPIOF_DIR_OUT | gpio_get_value(template->cmd),
gpio_get_value(template->cmd) ?
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
template->name);
if (ret) {
dev_err(&pdev->dev, "%s: failed to setup command GPIO\n",
Expand All @@ -202,7 +203,8 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat,
}

ret = devm_gpio_request_one(&pdev->dev, template->slow,
GPIOF_DIR_OUT | gpio_get_value(template->slow),
gpio_get_value(template->slow) ?
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
template->name);
if (ret) {
dev_err(&pdev->dev, "%s: failed to setup slow GPIO\n",
Expand Down

0 comments on commit 9d04cba

Please sign in to comment.