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

Commit 9d04cbaa authored by Jingoo Han's avatar Jingoo Han Committed by Bryan Wu
Browse files

leds: leds-ns2: set devm_gpio_request_one() flags param correctly



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: default avatarJingoo Han <jg1.han@samsung.com>
Signed-off-by: default avatarBryan Wu <cooloney@gmail.com>
parent 84f6942c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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",
@@ -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",