extcon: gpio: Request gpio pin before modifying its state
Commit 338de0ca
(extcon: gpio: Use gpio driver/chip debounce if supported)
introduced a call to gpio_set_debounce() before actually requesting the
respective gpio pin from the gpio subsystem.
The gpio subsystem expects that a gpio pin was requested before modifying its
state. Not doing so results in a warning from gpiolib, and the gpio pin is
auto-requested. This in turn causes the subsequent devm_gpio_request_one()
to fail. So devm_gpio_request_one() must be called prior to calling
gpio_set_debounce().
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
319e2e3f63
commit
4288d9b8ed
|
@ -105,6 +105,12 @@ static int gpio_extcon_probe(struct platform_device *pdev)
|
||||||
extcon_data->state_off = pdata->state_off;
|
extcon_data->state_off = pdata->state_off;
|
||||||
if (pdata->state_on && pdata->state_off)
|
if (pdata->state_on && pdata->state_off)
|
||||||
extcon_data->edev.print_state = extcon_gpio_print_state;
|
extcon_data->edev.print_state = extcon_gpio_print_state;
|
||||||
|
|
||||||
|
ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN,
|
||||||
|
pdev->name);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (pdata->debounce) {
|
if (pdata->debounce) {
|
||||||
ret = gpio_set_debounce(extcon_data->gpio,
|
ret = gpio_set_debounce(extcon_data->gpio,
|
||||||
pdata->debounce * 1000);
|
pdata->debounce * 1000);
|
||||||
|
@ -117,11 +123,6 @@ static int gpio_extcon_probe(struct platform_device *pdev)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN,
|
|
||||||
pdev->name);
|
|
||||||
if (ret < 0)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work);
|
INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work);
|
||||||
|
|
||||||
extcon_data->irq = gpio_to_irq(extcon_data->gpio);
|
extcon_data->irq = gpio_to_irq(extcon_data->gpio);
|
||||||
|
|
Loading…
Reference in New Issue