Skip to content

Commit

Permalink
Input: improve usage of gpiod API
Browse files Browse the repository at this point in the history
Since 39b2bbe (gpio: add flags argument to gpiod_get*() functions)
which appeared in v3.17-rc1, the gpiod_get* functions take an additional
parameter that allows to specify direction and initial value for
output. Simplify drivers accordingly.

Note that in the case of the drv260x driver error checking is more
strict now because -ENOSYS is reported to the caller now. But this
should only be returned if GPIOLIB is disabled which shouldn't happen as
the driver depends on GPIOLIB.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Uwe Kleine-König authored and Dmitry Torokhov committed Jun 17, 2015
1 parent eeb64c1 commit ea0afac
Showing 3 changed files with 6 additions and 21 deletions.
7 changes: 1 addition & 6 deletions drivers/input/keyboard/clps711x-keypad.c
Original file line number Diff line number Diff line change
@@ -120,14 +120,9 @@ static int clps711x_keypad_probe(struct platform_device *pdev)
for (i = 0; i < priv->row_count; i++) {
struct clps711x_gpio_data *data = &priv->gpio_data[i];

data->desc = devm_gpiod_get_index(dev, "row", i);
if (!data->desc)
return -EINVAL;

data->desc = devm_gpiod_get_index(dev, "row", i, GPIOD_IN);
if (IS_ERR(data->desc))
return PTR_ERR(data->desc);

gpiod_direction_input(data->desc);
}

err = of_property_read_u32(np, "poll-interval", &poll_interval);
13 changes: 4 additions & 9 deletions drivers/input/misc/drv260x.c
Original file line number Diff line number Diff line change
@@ -580,15 +580,10 @@ static int drv260x_probe(struct i2c_client *client,
return error;
}

haptics->enable_gpio = devm_gpiod_get(&client->dev, "enable");
if (IS_ERR(haptics->enable_gpio)) {
error = PTR_ERR(haptics->enable_gpio);
if (error != -ENOENT && error != -ENOSYS)
return error;
haptics->enable_gpio = NULL;
} else {
gpiod_direction_output(haptics->enable_gpio, 1);
}
haptics->enable_gpio = devm_gpiod_get_optional(&client->dev, "enable",
GPIOD_OUT_HIGH);
if (IS_ERR(haptics->enable_gpio))
return PTR_ERR(haptics->enable_gpio);

haptics->input_dev = devm_input_allocate_device(&client->dev);
if (!haptics->input_dev) {
7 changes: 1 addition & 6 deletions drivers/input/misc/gpio-beeper.c
Original file line number Diff line number Diff line change
@@ -66,13 +66,12 @@ static int gpio_beeper_probe(struct platform_device *pdev)
{
struct gpio_beeper *beep;
struct input_dev *input;
int err;

beep = devm_kzalloc(&pdev->dev, sizeof(*beep), GFP_KERNEL);
if (!beep)
return -ENOMEM;

beep->desc = devm_gpiod_get(&pdev->dev, NULL);
beep->desc = devm_gpiod_get(&pdev->dev, NULL, GPIOD_OUT_LOW);
if (IS_ERR(beep->desc))
return PTR_ERR(beep->desc);

@@ -92,10 +91,6 @@ static int gpio_beeper_probe(struct platform_device *pdev)

input_set_capability(input, EV_SND, SND_BELL);

err = gpiod_direction_output(beep->desc, 0);
if (err)
return err;

input_set_drvdata(input, beep);

return input_register_device(input);

0 comments on commit ea0afac

Please sign in to comment.