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: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Bryan Wu <cooloney@gmail.com>
This commit is contained in:
Родитель
84f6942cde
Коммит
9d04cbaadf
|
@ -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",
|
||||
|
|
Загрузка…
Ссылка в новой задаче